Dwds build runner tests (#2879)

Delete `dwds` and `dwds_test_common` and move build daemon tests to `dwds_webdev_integration_test`

`dwds` and `dwds_test_common` now live in the Dart SDK (`pkg/dwds` and `pkg/dwds_test_common`) and will be published from there.

- Move the DWDS `build_runner` / build daemon integration tests into a new
  unpublished `dwds_webdev_integration_test` package that runs against the
  shared test harness in `dwds_test_common`.
- Delete `dwds/` and `dwds_test_common/`, and point the repo `README.md` at the
  Dart SDK's copy of `dwds`.
- Update `webdev` to depend on `dwds_test_common` solely via the SDK git
  override, copy the `_webdev_smoke` fixture from the resolved package into a
  temp directory for e2e/TLS tests, and verify that the fixture's SDK constraint
  allows all SDK versions supported by `webdev`.
- Update CI workflows, `mono_repo` configuration, and labeler globs to run
  `dwds_webdev_integration_test` in place of `dwds` and `dwds_test_common`, and
  remove the DWDS-only Dart Code Metrics workflow.
diff --git a/.github/labeler.yml b/.github/labeler.yml
index b872769..95a9ad7 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -6,7 +6,7 @@
 
 'package:dwds':
   - changed-files:
-      - any-glob-to-any-file: 'dwds/**/*'
+      - any-glob-to-any-file: 'dwds_webdev_integration_test/**/*'
 
 'package:frontend_server_client':
   - changed-files:
@@ -18,4 +18,4 @@
 
 'dart-debug-extension':
   - changed-files:
-      - any-glob-to-any-file: 'dwds/debug_extension/**/*'
+      - any-glob-to-any-file: 'debug_extension/**/*'
diff --git a/.github/workflows/daily_testing.yml b/.github/workflows/daily_testing.yml
index 7d314a7..0d3d25b 100644
--- a/.github/workflows/daily_testing.yml
+++ b/.github/workflows/daily_testing.yml
@@ -6,6 +6,9 @@
   schedule:
     - cron: "00 14 * * *" # Everyday at 3:00 PM UTC (8:00 AM PST)
 
+permissions:
+  contents: read
+
 jobs:
   daily_testing:
     name: Daily Testing
@@ -18,20 +21,20 @@
       - id: checkout
         name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: dwds; dart analyze .
+        working-directory: dwds_webdev_integration_test
+      - name: dwds_webdev_integration_test; dart analyze .
         run: dart analyze .
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-      - id: dwds_daily_tests
-        name: "dwds; dart test --tags=daily"
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
+      - id: dwds_webdev_integration_test_daily_tests
+        name: "dwds_webdev_integration_test; dart test --tags=daily"
         run: "dart test --tags=daily"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
       - id: webdev_pub_upgrade
         name: webdev; dart pub upgrade
         run: dart pub upgrade
@@ -47,7 +50,7 @@
         if: "always() && steps.webdev_pub_upgrade.conclusion == 'success'"
         working-directory: webdev
       - name: "Notify failure"
-        if: "always() && steps.dwds_daily_tests.conclusion == 'failure' || steps.webdev_daily_tests.conclusion == 'failure'"
+        if: "always() && (steps.dwds_webdev_integration_test_daily_tests.conclusion == 'failure' || steps.webdev_daily_tests.conclusion == 'failure')"
         run: |
           curl -H "Content-Type: application/json" -X POST -d \
             "{'text':'Daily Webdev tests failed! ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}'}" \
diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml
index fc8c20c..7b14f65 100644
--- a/.github/workflows/dart.yml
+++ b/.github/workflows/dart.yml
@@ -9,9 +9,7 @@
       - .github/workflows/dart.yml
       - mono_repo.yaml
       - "**/mono_pkg.yaml"
-      - "dwds/**"
-      - "dwds_test_common/**"
-      - "dwds_test_common/fixtures/_webdev_smoke/**"
+      - "dwds_webdev_integration_test/**"
       - "example/**"
       - "frontend_server_client/**"
       - "webdev/**"
@@ -21,9 +19,7 @@
       - .github/workflows/dart.yml
       - mono_repo.yaml
       - "**/mono_pkg.yaml"
-      - "dwds/**"
-      - "dwds_test_common/**"
-      - "dwds_test_common/fixtures/_webdev_smoke/**"
+      - "dwds_webdev_integration_test/**"
       - "example/**"
       - "frontend_server_client/**"
       - "webdev/**"
@@ -66,16 +62,16 @@
       - name: mono_repo self validate
         run: dart pub global run mono_repo generate --validate
   job_002:
-    name: "analyzer_and_format; linux; Dart dev; PKG: dwds; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`, `dart test test/build/ensure_version_test.dart`"
+    name: "analyzer_and_format; linux; Dart dev; PKGS: dwds_webdev_integration_test, example, frontend_server_client; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds;commands:format-analyze_0-test_0"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test-example-frontend_server_client;commands:format-analyze_0"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test-example-frontend_server_client
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -88,72 +84,19 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart format --output=none --set-exit-if-changed ."
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart format --output=none --set-exit-if-changed ."
         run: "dart format --output=none --set-exit-if-changed ."
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart analyze --fatal-infos ."
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart analyze --fatal-infos ."
         run: dart analyze --fatal-infos .
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-      - name: dwds; dart test test/build/ensure_version_test.dart
-        run: dart test test/build/ensure_version_test.dart
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-  job_003:
-    name: "analyzer_and_format; linux; Dart dev; PKGS: dwds_test_common, dwds_test_common/fixtures/_webdev_smoke, example, frontend_server_client; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_test_common-dwds_test_common/fixtures/_webdev_smoke-example-frontend_server_client;commands:format-analyze_0"
-          restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_test_common-dwds_test_common/fixtures/_webdev_smoke-example-frontend_server_client
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
-      - name: Setup Dart SDK
-        uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
-        with:
-          sdk: dev
-      - id: checkout
-        name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
-        with:
-          persist-credentials: false
-      - id: dwds_test_common_pub_upgrade
-        name: dwds_test_common; dart pub upgrade
-        run: dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - name: "dwds_test_common; dart format --output=none --set-exit-if-changed ."
-        run: "dart format --output=none --set-exit-if-changed ."
-        if: "always() && steps.dwds_test_common_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - name: "dwds_test_common; dart analyze --fatal-infos ."
-        run: dart analyze --fatal-infos .
-        if: "always() && steps.dwds_test_common_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - id: dwds_test_common_fixtures__webdev_smoke_pub_upgrade
-        name: dwds_test_common/fixtures/_webdev_smoke; dart pub upgrade
-        run: dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds_test_common/fixtures/_webdev_smoke
-      - name: "dwds_test_common/fixtures/_webdev_smoke; dart format --output=none --set-exit-if-changed ."
-        run: "dart format --output=none --set-exit-if-changed ."
-        if: "always() && steps.dwds_test_common_fixtures__webdev_smoke_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common/fixtures/_webdev_smoke
-      - name: "dwds_test_common/fixtures/_webdev_smoke; dart analyze --fatal-infos ."
-        run: dart analyze --fatal-infos .
-        if: "always() && steps.dwds_test_common_fixtures__webdev_smoke_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common/fixtures/_webdev_smoke
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
       - id: example_pub_upgrade
         name: example; dart pub upgrade
         run: dart pub upgrade
@@ -180,7 +123,7 @@
         run: dart analyze --fatal-infos .
         if: "always() && steps.frontend_server_client_pub_upgrade.conclusion == 'success'"
         working-directory: frontend_server_client
-  job_004:
+  job_003:
     name: "analyzer_and_format; linux; Dart dev; PKG: webdev; `dart format --output=none --set-exit-if-changed .`, `dart analyze --fatal-infos .`, `dart test test/build/ensure_build_test.dart`"
     runs-on: ubuntu-latest
     steps:
@@ -188,7 +131,7 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev;commands:format-analyze_0-test_7"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev;commands:format-analyze_0-test_5"
           restore-keys: |-
             os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
@@ -220,17 +163,17 @@
         run: dart test test/build/ensure_build_test.dart
         if: "always() && steps.webdev_pub_upgrade.conclusion == 'success'"
         working-directory: webdev
-  job_005:
-    name: "unit_test; linux; Dart dev; PKG: dwds; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test --tags=extension`"
+  job_004:
+    name: "unit_test; linux; Dart dev; PKG: dwds_webdev_integration_test; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test --tags=extension`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds;commands:command-test_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test;commands:command-test_0"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -243,35 +186,34 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
         run: "Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --tags=extension"
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --tags=extension"
         run: "dart test --tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_006:
-    name: "unit_test; linux; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 0 --exclude-tags=extension`"
+  job_005:
+    name: "unit_test; linux; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 0 --exclude-tags=extension`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds;commands:test_2"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test;commands:test_1"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -284,31 +226,30 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_007:
-    name: "unit_test; linux; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 1 --exclude-tags=extension`"
+  job_006:
+    name: "unit_test; linux; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 1 --exclude-tags=extension`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds;commands:test_3"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test;commands:test_2"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -321,31 +262,30 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_008:
-    name: "unit_test; linux; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 2 --exclude-tags=extension`"
+  job_007:
+    name: "unit_test; linux; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 2 --exclude-tags=extension`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds;commands:test_4"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test;commands:test_3"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -358,62 +298,20 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_009:
-    name: "unit_test; linux; Dart dev; PKG: dwds_test_common; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test --exclude-tags=release`"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_test_common;commands:command-test_6"
-          restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:dwds_test_common
-            os:ubuntu-latest;pub-cache-hosted;sdk:dev
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
-      - name: Setup Dart SDK
-        uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
-        with:
-          sdk: dev
-      - id: checkout
-        name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
-        with:
-          persist-credentials: false
-      - id: dwds_test_common_pub_upgrade
-        name: dwds_test_common; dart pub upgrade
-        run: dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - name: "dwds_test_common; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
-        run: "Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
-        if: "always() && steps.dwds_test_common_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - name: "dwds_test_common; dart test --exclude-tags=release"
-        run: "dart test --exclude-tags=release"
-        if: "always() && steps.dwds_test_common_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common
-    needs:
-      - job_001
-      - job_002
-      - job_003
-      - job_004
-  job_010:
+  job_008:
     name: "unit_test; linux; Dart dev; PKG: frontend_server_client; `dart test -j 1`"
     runs-on: ubuntu-latest
     steps:
@@ -421,7 +319,7 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:frontend_server_client;commands:test_5"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:frontend_server_client;commands:test_4"
           restore-keys: |-
             os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:frontend_server_client
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
@@ -449,8 +347,7 @@
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_011:
+  job_009:
     name: "unit_test; linux; Dart dev; PKG: webdev; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`"
     runs-on: ubuntu-latest
     steps:
@@ -458,7 +355,7 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev;commands:command-test_5"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev;commands:command-test_4"
           restore-keys: |-
             os:ubuntu-latest;pub-cache-hosted;sdk:dev;packages:webdev
             os:ubuntu-latest;pub-cache-hosted;sdk:dev
@@ -490,9 +387,8 @@
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_012:
-    name: "unit_test; windows; Dart dev; PKG: dwds; `dart test --tags=extension`"
+  job_010:
+    name: "unit_test; windows; Dart dev; PKG: dwds_webdev_integration_test; `dart test --tags=extension`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
@@ -504,22 +400,21 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --tags=extension"
         run: "dart test --tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_013:
-    name: "unit_test; windows; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 0 --exclude-tags=extension`"
+  job_011:
+    name: "unit_test; windows; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 0 --exclude-tags=extension`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
@@ -531,22 +426,21 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 0 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_014:
-    name: "unit_test; windows; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 1 --exclude-tags=extension`"
+  job_012:
+    name: "unit_test; windows; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 1 --exclude-tags=extension`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
@@ -558,22 +452,21 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 1 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_015:
-    name: "unit_test; windows; Dart dev; PKG: dwds; `dart test --total-shards 3 --shard-index 2 --exclude-tags=extension`"
+  job_013:
+    name: "unit_test; windows; Dart dev; PKG: dwds_webdev_integration_test; `dart test --total-shards 3 --shard-index 2 --exclude-tags=extension`"
     runs-on: windows-latest
     steps:
       - name: Setup Dart SDK
@@ -585,48 +478,20 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
         run: "dart test --total-shards 3 --shard-index 2 --exclude-tags=extension"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_016:
-    name: "unit_test; windows; Dart dev; PKG: dwds_test_common; `dart test --exclude-tags=release`"
-    runs-on: windows-latest
-    steps:
-      - name: Setup Dart SDK
-        uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
-        with:
-          sdk: dev
-      - id: checkout
-        name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
-        with:
-          persist-credentials: false
-      - id: dwds_test_common_pub_upgrade
-        name: dwds_test_common; dart pub upgrade
-        run: dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds_test_common
-      - name: "dwds_test_common; dart test --exclude-tags=release"
-        run: "dart test --exclude-tags=release"
-        if: "always() && steps.dwds_test_common_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds_test_common
-    needs:
-      - job_001
-      - job_002
-      - job_003
-      - job_004
-  job_017:
+  job_014:
     name: "unit_test; windows; Dart dev; PKG: frontend_server_client; `dart test -j 1`"
     runs-on: windows-latest
     steps:
@@ -652,8 +517,7 @@
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_018:
+  job_015:
     name: "unit_test; windows; Dart dev; PKG: webdev; `dart test -j 1`"
     runs-on: windows-latest
     steps:
@@ -679,9 +543,8 @@
       - job_001
       - job_002
       - job_003
-      - job_004
-  job_019:
-    name: "beta_cron; linux; Dart beta; PKG: dwds; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`"
+  job_016:
+    name: "beta_cron; linux; Dart beta; PKG: dwds_webdev_integration_test; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`"
     runs-on: ubuntu-latest
     if: "github.event_name == 'schedule'"
     steps:
@@ -689,9 +552,9 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds;commands:command-test_5"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds_webdev_integration_test;commands:command-test_4"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:beta
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -704,19 +567,19 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
         run: "Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &"
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test -j 1"
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test -j 1"
         run: dart test -j 1
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
@@ -733,10 +596,7 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_020:
+  job_017:
     name: "beta_cron; linux; Dart beta; PKG: webdev; `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &`, `dart test -j 1`"
     runs-on: ubuntu-latest
     if: "github.event_name == 'schedule'"
@@ -745,7 +605,7 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:webdev;commands:command-test_5"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:webdev;commands:command-test_4"
           restore-keys: |-
             os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:webdev
             os:ubuntu-latest;pub-cache-hosted;sdk:beta
@@ -789,11 +649,8 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_021:
-    name: "beta_cron; linux; Dart beta; PKG: dwds; `dart analyze .`"
+  job_018:
+    name: "beta_cron; linux; Dart beta; PKG: dwds_webdev_integration_test; `dart analyze .`"
     runs-on: ubuntu-latest
     if: "github.event_name == 'schedule'"
     steps:
@@ -801,9 +658,9 @@
         uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds;commands:analyze_1"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds_webdev_integration_test;commands:analyze_1"
           restore-keys: |-
-            os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds
+            os:ubuntu-latest;pub-cache-hosted;sdk:beta;packages:dwds_webdev_integration_test
             os:ubuntu-latest;pub-cache-hosted;sdk:beta
             os:ubuntu-latest;pub-cache-hosted
             os:ubuntu-latest
@@ -816,15 +673,15 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: dwds; dart analyze .
+        working-directory: dwds_webdev_integration_test
+      - name: dwds_webdev_integration_test; dart analyze .
         run: dart analyze .
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
@@ -841,10 +698,7 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_022:
+  job_019:
     name: "beta_cron; linux; Dart beta; PKG: webdev; `dart analyze .`"
     runs-on: ubuntu-latest
     if: "github.event_name == 'schedule'"
@@ -893,11 +747,8 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_023:
-    name: "beta_cron; windows; Dart beta; PKG: dwds; `dart test -j 1`"
+  job_020:
+    name: "beta_cron; windows; Dart beta; PKG: dwds_webdev_integration_test; `dart test -j 1`"
     runs-on: windows-latest
     if: "github.event_name == 'schedule'"
     steps:
@@ -910,15 +761,15 @@
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
         with:
           persist-credentials: false
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
+      - id: dwds_webdev_integration_test_pub_upgrade
+        name: dwds_webdev_integration_test; dart pub upgrade
         run: dart pub upgrade
         if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: "dwds; dart test -j 1"
+        working-directory: dwds_webdev_integration_test
+      - name: "dwds_webdev_integration_test; dart test -j 1"
         run: dart test -j 1
-        if: "always() && steps.dwds_pub_upgrade.conclusion == 'success'"
-        working-directory: dwds
+        if: "always() && steps.dwds_webdev_integration_test_pub_upgrade.conclusion == 'success'"
+        working-directory: dwds_webdev_integration_test
     needs:
       - job_001
       - job_002
@@ -935,10 +786,7 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_024:
+  job_021:
     name: "beta_cron; windows; Dart beta; PKG: webdev; `dart test -j 1`"
     runs-on: windows-latest
     if: "github.event_name == 'schedule'"
@@ -977,10 +825,7 @@
       - job_013
       - job_014
       - job_015
-      - job_016
-      - job_017
-      - job_018
-  job_025:
+  job_022:
     name: Notify failure
     runs-on: ubuntu-latest
     if: "(github.event_name == 'push' || github.event_name == 'schedule') && failure()"
@@ -1013,6 +858,3 @@
       - job_019
       - job_020
       - job_021
-      - job_022
-      - job_023
-      - job_024
diff --git a/.github/workflows/dcm.yml b/.github/workflows/dcm.yml
deleted file mode 100644
index 0ff2405..0000000
--- a/.github/workflows/dcm.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# A CI workflow to run the Dart Code Metrics analyzer (https://dcm.dev).
-
-name: Dart Code Metrics
-
-on:
-  pull_request:
-    types: [synchronize, opened, reopened]
-    branches:
-      - dev
-
-jobs:
-  dcm:
-    name: Dart Code Metrics
-    runs-on: ubuntu-latest
-    steps:
-      - name: Install DCM
-        run: |
-          sudo apt-get update
-          wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
-          echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
-          sudo apt-get update
-          sudo apt-get install dcm=1.26.0-1 # To avoid errors add `-1` (build number) to the version
-          sudo chmod +x /usr/bin/dcm
-      - name: Setup Dart SDK
-        uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
-        with:
-          sdk: main
-      - id: checkout
-        name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
-        with:
-          ref: "${{ github.event.pull_request.head.sha }}"
-      - id: dwds_pub_upgrade
-        name: dwds; dart pub upgrade
-        run: dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: dwds
-      - name: Run DCM on DWDS
-        run: dcm analyze lib
-        working-directory: dwds
diff --git a/README.md b/README.md
index edd4c36..0a01b61 100644
--- a/README.md
+++ b/README.md
@@ -4,10 +4,14 @@
 
 | Package | Description | Version |
 |---|---|---|
-| [dwds](dwds/) | A service that proxies between the Chrome debug protocol and the Dart VM service protocol. | [![pub package](https://img.shields.io/pub/v/dwds.svg)](https://pub.dev/packages/dwds) |
 | [frontend_server_client](frontend_server_client/) | Client code to start and interact with the frontend_server compiler from the Dart SDK. | [![pub package](https://img.shields.io/pub/v/frontend_server_client.svg)](https://pub.dev/packages/frontend_server_client) |
 | [webdev](webdev/) | A CLI for Dart web development. Provides an easy and consistent set of features for users and tools to build and deploy web applications with Dart. | [![pub package](https://img.shields.io/pub/v/webdev.svg)](https://pub.dev/packages/webdev) |
 
+`package:dwds` lives in the Dart SDK at
+[pkg/dwds](https://github.com/dart-lang/sdk/tree/main/pkg/dwds).
+[dwds_webdev_integration_test](dwds_webdev_integration_test/) runs its
+integration tests against apps built with `build_runner`.
+
 ## Publishing automation
 
 For information about our publishing automation and release process, see
diff --git a/dwds/.gitignore b/dwds/.gitignore
deleted file mode 100644
index 2c38d1e..0000000
--- a/dwds/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.local-chromium
-.local-chrome
-lib/src/injected/client.js
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
deleted file mode 100644
index 3902973..0000000
--- a/dwds/CHANGELOG.md
+++ /dev/null
@@ -1,1283 +0,0 @@
-## 27.2.0-wip
-
-- Add `deprecatedJsInterop` to `BuildSettings` and `CompilerOptions`. When it
-  is set, the expression compiler worker is started with
-  `--[no-]deprecated-js-interop`. This requires a Dart SDK that supports the
-  flag.
-
-## 27.1.4
-
-- Fix duplicated browser tabs taking over the original tab's DWDS connection.
-- Fix `PersistentWebSocket` throwing unhandled errors when writing to a
-  connection closed by the server.
-
-## 27.1.3
-
-- Fix WebSocket protocol upgrade to `wss` in the DWDS injected client when served over HTTPS on non-localhost hosts.
-
-## 27.1.2
-
-- Bump the min sdk to 3.13.0-107.0.dev.
-- Internal only changes.
-
-- Allow package_config `3.x.x`.
-
-## 27.1.1
-
-- Fix deserialization errors appearing in the chrome console.
-  Replace raw map for client ping checks with a proper `PingRequest` class and
-  update client deserialization handling.
-
-## 27.1.0
-
-- Add `appName` to `DartDevelopmentServiceConfiguration`.
-
-## 27.0.3
-
-- Fix `dartExecutable` not being correctly passed to the DebugService.
-
-## 27.0.2
-
-- Add `dartExecutable` to `DartDevelopmentServiceConfiguration`.
-
-## 27.0.1
-
-- Replace `package:uuid` dependency with internal `Uuid` class for generating version 4 UUIDs.
-- Add DDC Library Bundle tests in `dwds/test/integration/instances`.
-- Fix WebSocket reconnection hang by ensuring Dart isolate recreation when a new browser client reuses an `AppDebugServices`.
-- Don't inject script loads from within DWDS when executing with build_runner + DDC Module Bundles.
-- Handle out of order disconnects and reconnects.
-  - Update dwds to support ignoring disconnects for the SseHandler. This is
-    useful to prevent incorrect behavior when a disconnect event arrives after
-    a new connection request.
-- Add sourcemap logic fixes to DDC Library Bundle + build_runner execution scheme.
-- Update pathing logic for Windows and the DDC Library Bundle module system.
-- Fix serialization of `HotRestartRequest` in `AppConnection`.
-- Split integration tests across DDC module systems.
-- Split additional tests across DDC module systems.
-- Fix issue where `DebugConnection` did not complete `onDone` if `WebkitDebugger` fails to reconnect to the debugger after the connection closes.
-- Fix `FormatException` in `ExtensionDebugger` by making `ExtensionEvent.fromJson` robust to missing headers and Map-typed params.
-- Fix `StateError` in `DwdsInjector` during AOT execution by bundling `client.js` as a statically compiled asset.
-- Report errors when an empty reloaded_sources.json is seen in the DDC Library Bundle module system.
-
-## 27.0.0
-
-- Remove `package:built_value`, `package:built_value_generator`, and `package:built_collection` dependencies.
-- Remove `serializers.dart` and `data_serializers.dart`.
-- Remove `package:built_value` dependency from `ConnectFailure`, `DebugStateChange`, `DevToolsOpener`, `DevToolsUrl`, `IsolateStart`, `IsolateExit`, `DevToolsRequest`, `DevToolsResponse`, `ExtensionRequest`, `ExtensionResponse`, `ExtensionEvent`, and `BatchedEvents`; switch to standard Dart JSON serialization.
-- Update `ConnectFailure`, `DebugStateChange`, `DevToolsOpener`, `DevToolsUrl`, `DevToolsRequest`, `DevToolsResponse`, `ExtensionRequest`, `ExtensionResponse`, `ExtensionEvent`, `BatchedEvents` and `DebugInfo` serialization to mimic `built_value`'s list-based format to resolve compatibility issues with the debug extension.
-- Remove `build`, `build_daemon`, `build_runner`, `build_version`, `build_web_compilers`, and `pubspec_parse` dependencies, along with `build.yaml` which originally generated `client.js` using `build_runner`. `client.js` is now compiled via `dart compile js` in a new `tool/build.dart` script.
-- Throw `RPCError` when providing invalid `pause_isolates_on_start` values to the Chrome Proxy Service.
-- Fix deserialization of `HotRestartRequest`, `HotReloadResponse`, `HotRestartResponse`, and `ServiceExtensionResponse` in the `DevHandler`.
-- Add and export `BuildRunnerDdcLibraryBundleStrategyProvider`.
-- Add support for Build Runner + DDC Module Bundle in test fixtures.
-- Unify `assetHandler` and `assetReader` in `BuildRunnerStrategyProviderMixin`.
-- Resolve test suite flakiness for port discovery.
-- Bump `build_web_compilers` to ^4.4.12.
-
-## 26.2.5
-
-- Remove `package:built_value` dependency from `ErrorResponse` and `RegisterEvent`; switch to standard Dart JSON serialization.
-- Adding retries to Chrome Proxy Service connections.
-
-## 26.2.4
-
-- Remove `package:built_value` dependency from `DebugEvent`, `BatchedDebugEvents`, `ConnectRequest`, `RunRequest`, `DebugInfo`, `HotReloadRequest`, `HotReloadResponse`, `HotRestartRequest`, `HotRestartResponse`, `ServiceExtensionRequest`, `ServiceExtensionResponse` and `BuildResult`; switch to standard Dart JSON serialization.
-- Adding guards for dwds-injected library loading for Flutter Web.
-
-## 26.2.3
-
-- Bump `build_web_compilers` to ^4.4.1.
-- Remove unused `clientFuture` arg from `DwdsVmClient` methods.
-- Fix pausing starting of `main` after the hot restart.
-- Updating bootstrapper for DDC library bundler module format + Frontend Server.
-- Fix setting up breakpoints when handling in-app restarts with attached debugger.
-- Fix issue where the web socket connections with the target application and Chrome debugger close when the computer sleeps.
-- Fix setting up breakpoints when handling full reloads from attached
-  debugger / page refreshes.
-
-## 26.2.2
-
-- Fix issue where isolate pause events were not reported correctly when using the web socket proxy service.
-
-## 26.2.1
-
-- Add support for DDS APIs and serving Dart DevTools when no Chrome Debugger is available.
-
-## 26.2.0
-
-- Add support for more service APIs over websocket connections when no Chrome Debugger is available.
-
-## 26.1.0
-
-- `reloadSources` and `hotRestart` now throw an RPC error with `kServerError` code when `NoClientsAvailableException` is caught (no browser clients are connected), allowing tooling to detect and handle this scenario.
-- `pause` now does not send a `PauseInterrupted` event in
-  `WebSocketProxyService` as we didn't actually pause.
-
-## 26.0.0
-
-- Bump SDK constraint to ^3.10.0
-- Added 'scriptUri' parameter to compileExpressionToJs
-- Fix an issue in `reloadSources` where a `PauseInterrupted` event was sent. - [#61560](https://github.com/dart-lang/sdk/issues/61560)
-- Expose `dtdUri` via `DebugConnection`.
-
-## 25.1.0
-
-- Added `DartDevelopmentServiceConfiguration` to allow for configuring DDS behavior.
-- Added support for serving DevTools via DDS. This will become the sole method of serving
-  DevTools from DWDS in a future major release.
-- Deprecated `spawnDds`, `ddsPort`, and `devToolsLauncher` properties in `DebugSettings`.
-- Added `ddsConfiguration` to `DebugSettings`.
-
-## 25.0.4
-
-### Bug Fixes:
-
-- Fix issue where `DebugService: Error serving requestsError: Unsupported operation: Cannot send Null`
-  would be spammed on the console.
-
-## 25.0.3
-
-### Bug Fixes:
-
-- Fix issue in hot restart with the web socket where we didn't pass the reloaded
-  sources path, resulting in a null assertion.
-
-## 25.0.2
-
-### Bug Fixes:
-
-- Fix issue where DDS would fail to initialize if DWDS already had existing
-  clients.
-
-## 25.0.1
-
-### Bug Fixes:
-
-- Fix issue in hot restart where a hot restart with no changes followed by one
-  with changes, a `Future` was completed again, resulting in a crash.
-
-## 25.0.0
-
-- Implemented hot restart over websockets with multi window support.
-- Fix refresh race condition bug by adding an isolate destruction grace period.
-- Update a call to the `package:shelf_web_socket` `webSocketHandler()` function.
-
-**Breaking changes**
-
-- Remove deprecated parameter `injectDebuggingSupportCode` from `Dwds.start()`.
-- Remove all deprecated fields, getters, and parameters
-  related to the null safety compilation mode. Dart 3 only
-  supports [sound null safety](https://dart.dev/null-safety).
-- Rename `FrontendServerDdcLibraryBundleStrategy.hotReloadSourcesUri` to
-  `reloadedSourcesUri`. The file that the `Uri` points to should now be updated
-  for both a hot restart and a hot reload.
-
-## 24.4.1
-
-- Implemented a WebSocket-based communication protocol that provides essential developer tooling (hot reload, service extensions) when Chrome debugger access is unavailable. - [#2605](https://github.com/dart-lang/webdev/issues/2605)
-- Added WebSocket-based hot reload and service extension support via new `WebSocketProxyService` class that implements VM service protocol over WebSockets.
-- Enhanced `DevHandler` with `useWebSocketConnection` flag to toggle between Chrome-based and WebSocket-based communication protocols.
-- Fixed an issue where we didn't wait until all scripts were parsed before
-  recomputing metadata on a hot reload.
-
-## 24.4.0
-
-- Added support for breakpoint registering on a hot reload with the DDC library bundle format using PausePostRequests.
-- `FrontendServerDdcLibraryBundleStrategy.hotReloadSourceUri` is now expected to also provide the reloaded modules.
-
-## 24.3.11
-
-- Changed DWDS to always inject the client and added `useDwdsWebSocketConnection` flag to control communication protocol: when true uses socket-based implementation, when false uses Chrome-based communication protocol.
-- Added WebSocket-based hot reload support: `reloadSources` in `ChromeProxyService` and `DevHandler` now handle hot reload requests and responses over WebSockets.
-- Refactored the injected client to use a reusable function for handling hot reload requests and responses over WebSockets.
-- Added support for breakpoint registering on a hot restart with the DDC library bundle format using PausePostRequests.
-
-## 24.3.10
-
-- Disabled breakpoints on changed files in a hot reload. They currently do not
-  map to the correct locations or are broken, so disable them for now. - [#60186](https://github.com/dart-lang/sdk/issues/60186)
-
-## 24.3.9
-
-- Renamed DWDS Injector parameter `enableDebuggingSupport` to `injectDebuggingSupportCode` for clearer intent.
-
-## 24.3.8
-
-- Updated DWDS to include a boolean flag that enables debugging support only when set to true. [#60289](https://github.com/dart-lang/sdk/issues/60289)
-
-## 24.3.7
-
-- The registered extension `reassemble` is now no longer called when calling
-  `reloadSources`. Users should call `reassemble` using `callServiceExtension`.
-
-- `callServiceExtension` now checks the runtime for the list of registered
-  service extensions. It also now throws a `RPCError` with
-  `RPCErrorKind.kMethodNotFound` when a service extension is not found instead
-  of throwing a JS evaluation error.
-
-## 24.3.6
-
-- Bump minimum sdk version to 3.7.0
-- use 'compile js-dev' instead of directly invoking the ddc snapshot.
-- `FrontendServerDdcLibraryBundleStrategy` now takes a `hotReloadSourcesUri`
-  parameter in order to fetch the file that contains the changed sources and
-  libraries instead of assuming it exists in the global `window`.
-
-## 24.3.5
-
-- Allow clients to specify the `packageConfigPath` in `LoadStrategy` class and associated providers.
-
-## 24.3.4
-
-- Added support for some debugging APIs with the DDC library bundle format. - [#2566](https://github.com/dart-lang/webdev/issues/2566), [#2573](https://github.com/dart-lang/webdev/issues/2573)
-- Added support for hot reload using the DDC library bundle format.
-
-## 24.3.3
-
-- Added support for some debugging APIs with the DDC library bundle format. - [#2563](https://github.com/dart-lang/webdev/issues/2563)
-- Update `DCM` version to `1.26.0-1`
-- Add support for hot restart using the DDC library bundle format.
-
-## 24.3.2
-
-- Bump `package:dds` to `>=4.2.5 <6.0.0`.
-
-## 24.3.1
-
-- Add support for binding DDS to a custom port.
-
-## 24.3.0
-
-- Update to be forward compatible with changes to `package:shelf_web_socket`.
-- Added support for some debugging APIs with the DDC library bundle format. - [#2537](https://github.com/dart-lang/webdev/issues/2537),[#2544](https://github.com/dart-lang/webdev/issues/2544),[#2548](https://github.com/dart-lang/webdev/issues/2548)
-- Fix issue where batched expression evals were failing if any subexpression failed. - [#2551](https://github.com/dart-lang/webdev/issues/2551)
-- Expose a partial implementation of
-  `FrontendServerDdcLibraryBundleStrategyProvider`.
-- Update `package:vm_service_interface` to '^2.0.1'.
-
-## 24.2.0
-
-- Consolidate `FrontendServerDdcStrategyProvider` and `FrontendServerRequireStrategyProvider` under a shared parent class. - [#2517](https://github.com/dart-lang/webdev/issues/2517)
-- Remove `build_daemon_ddc_and_canary_evaluate_test`. - [2512](https://github.com/dart-lang/webdev/issues/2512)
-- Replace deprecated JS code `this.__proto__` with `Object.getPrototypeOf(this)`. - [#2500](https://github.com/dart-lang/webdev/pull/2500)
-- Migrate injected client code to `package:web`. - [#2491](https://github.com/dart-lang/webdev/pull/2491)
-- Deprecated MetadataProvider's, CompilerOptions', SdkConfiguration's & SdkLayout's soundNullSafety. - [#2427](https://github.com/dart-lang/webdev/issues/2427)
-- Add load strategy and an unimplemented hot restart strategy for DDC library
-  bundle format.
-- Added `useModuleName` option to `MetadataProvider` to determine whether or not
-  to use the provided `name` in a `ModuleMetadata`. Metadata provided by DDC
-  when using the library bundle format does not provide a useful bundle name.
-- Migrate to `package:web` v1.1.0.
-- Added support for some debugging APIs with the DDC library bundle format. - [#2488](https://github.com/dart-lang/webdev/issues/2488), [#2534](https://github.com/dart-lang/webdev/issues/2534)
-- Update `package:vm_service` to '>=14.2.4 <16.0.0'.
-- Update `package:vm_service_interface` to '2.0.1'.
-
-## 24.1.0
-
-- Fix bug where debugging clients are not aware of service extensions when connecting to a new web app. - [#2388](https://github.com/dart-lang/webdev/pull/2388)
-- Respect the value of `pause_isolates_on_start` during page-refreshes. - [#2431](https://github.com/dart-lang/webdev/pull/2431)
-- Fix issue where DAP clients wouldn't resume after a restart. - [#2441](https://github.com/dart-lang/webdev/pull/2441)
-- Add implementation for the VM Service's `getFlagList` API. - [#2438](https://github.com/dart-lang/webdev/pull/2438)
-- Hide more variables from the local scope when debugging. These variables were synthetically added by the compiler to
-  support late local variables and don't appear in the original source code. - [#2445](https://github.com/dart-lang/webdev/pull/2445)
-- Spawn DDS in a separate process using `dart development-service` instead of launching from `package:dds`. - [#2466](https://github.com/dart-lang/webdev/pull/2466)
-- Update package `web_socket_channel: '>=2.2.0 <4.0.0'`.
-- Require Dart `^3.4`
-- Prepare to update `package:vm_service_interface` constraint to `2.0.0`.
-
-## 24.0.0
-
-- Implement `setFlag` when it is called with `pause_isolates_on_start`. - [#2373](https://github.com/dart-lang/webdev/pull/2373)
-- Do not persist breakpoints across hot restarts or page reloads. - [#2371](https://github.com/dart-lang/webdev/pull/2371)
-- If `pause_isolates_on_start` is `true`, wait for `resume` to run the app's `main` method. - [#2378](https://github.com/dart-lang/webdev/pull/2378)
-- Fix bug where setting breakpoints in a project using macros would fail. - [#2403](https://github.com/dart-lang/webdev/pull/2403)
-- Make stack trace calculation resilient against one frame throwing an error. - [#2408](https://github.com/dart-lang/webdev/pull/2408)
-
-**Breaking changes**
-
-- Rename `dart_library.js` to `ddc_module_loader.js` to match SDK naming changes. - [#2360](https://github.com/dart-lang/webdev/pull/2360)
-
-## 23.3.0
-
-- Filter out internal type properties from the new DDC type system. - [#2348](https://github.com/dart-lang/webdev/pull/2348)
-- Fix errors on displaying getters when debugging in VS Code. - [#2343](https://github.com/dart-lang/webdev/pull/2343)
-
-## 23.2.0
-
-- Send untruncated `dart:developer` logs to debugging clients. - [#2333](https://github.com/dart-lang/webdev/pull/2333)
-- Enabling tests that run with the DDC module system and exposing `utilities/ddc_names.dart` - [#2295](https://github.com/dart-lang/webdev/pull/2295)
-
-## 23.1.1
-
-- Loosen `package:vm_service` constraints to allow `>=13.0.0 <15.0.0`. - [#2329](https://github.com/dart-lang/webdev/pull/2329)
-
-## 23.1.0
-
-- Update `package:vm_service` constraints to allow version `14.x.x`. - [#2307](https://github.com/dart-lang/webdev/pull/2307)
-
-## 23.0.0
-
-- Restructure `LoadStrategy` to provide build settings. - [#2270](https://github.com/dart-lang/webdev/pull/2270)
-- Add `FrontendServerLegacyStrategyProvider` and update bootstrap generation logic for `LegacyStrategy` - [#2285](https://github.com/dart-lang/webdev/pull/2285)
-- Tolerate failures to detect a Dart execution context. - [#2286](https://github.com/dart-lang/webdev/pull/2286)
-- Fix a null cast error when debugging a `Class` from VS Code. - [#2303](https://github.com/dart-lang/webdev/pull/2303)
-- Update `package:vm_service` constraint to `^14.0.0`. - [#2307](https://github.com/dart-lang/webdev/pull/2307)
-- Update `package:vm_service_interface` constraint to `1.0.1`. - [#2307](https://github.com/dart-lang/webdev/pull/2307)
-
-## 22.1.0
-
-- Update `package:vm_service` constraint to `^13.0.0`. - [#2265](https://github.com/dart-lang/webdev/pull/2265)
-
-## 22.0.0
-
-- Update the interface for ChromeProxyService.getSourceReport to match the VM service. - [#2235](https://github.com/dart-lang/webdev/pull/2235)
-- Update `package:vm_service` constraint to `^12.0.0`. - [#2248](https://github.com/dart-lang/webdev/pull/2248)
-
-**Breaking changes**
-
-- Refactor the parameters to `Dwds.start`. - [#2231](https://github.com/dart-lang/webdev/pull/2231).
-- Add a new parameter `workspaceName` to the `ToolConfiguration` passed to `Dwds.start`. - [#2237](https://github.com/dart-lang/webdev/pull/2237)
-
-## 21.0.0
-
-- Update Dart SDK constraint to `>=3.2.0-36.0.dev <4.0.0`. - [#2207](https://github.com/dart-lang/webdev/pull/2207)
-
-**Breaking changes**
-
-- Allow clients to specify where to find the package config. - [#2203](https://github.com/dart-lang/webdev/pull/2203).
-- Allow clients to specify a way to convert absolute paths to g3-relative paths. - [#2200](https://github.com/dart-lang/webdev/pull/2200)
-
-## 20.0.1
-
-- Update file dependency to `>=6.0.0 < 8.0.0` - [#123260](https://github.com/flutter/flutter/pull/123260#issuecomment-1674001623).
-
-## 20.0.0
-
-- Require clients to specify the `basePath` on `AssetReader`. - [#2160](https://github.com/dart-lang/webdev/pull/2160)
-- Update SDK constraint to `>=3.1.0-254.0.dev <4.0.0`. - [#2169](https://github.com/dart-lang/webdev/pull/2169)
-- Require min `build_web_compilers` version `4.0.4` - [#2171](https://github.com/dart-lang/webdev/pull/2171)
-- Switch to using new debugging API from DDC to support new type system. - [#2159](https://github.com/dart-lang/webdev/pull/2159)
-- Fix Flutter crash when calling `resume` when app is not paused. - [#2188](https://github.com/dart-lang/webdev/pull/2188)
-- Update file dependency to `7.0.0`.
-
-## 19.0.2
-
-- Fix Flutter crash due to potential null value in `setUpChromeConsoleListener`. - [#2162](https://github.com/dart-lang/webdev/pull/2162)
-
-## 19.0.1
-
-- Do not show async frame errors on evaluation. - [#2073](https://github.com/dart-lang/webdev/pull/2073)
-- Refactor code for presenting record instances. - [#2074](https://github.com/dart-lang/webdev/pull/2074)
-- Display record types concisely. - [#2070](https://github.com/dart-lang/webdev/pull/2070)
-- Display type objects concisely. - [#2103](https://github.com/dart-lang/webdev/pull/2103)
-- Support using scope in `ChromeProxyService.evaluateInFrame`. - [#2122](https://github.com/dart-lang/webdev/pull/2122)
-- Check for new events more often in batched stream. - [#2123](https://github.com/dart-lang/webdev/pull/2123)
-- Map Chrome error on `resume` to the same error returned by the Dart VM. - [#2133](https://github.com/dart-lang/webdev/issues/2133)
-- VM service API methods throw type `RPCError`, same as the Dart VM. - [#2144](https://github.com/dart-lang/webdev/pull/2144)
-
-## 19.0.0
-
-- Allow clients to specify the connected app's entrypoint file. - [#2047](https://github.com/dart-lang/webdev/pull/2047)
-- Don't include non-instantiated variables in stack frame data. - [#2061](https://github.com/dart-lang/webdev/pull/2061)
-- Fix `getObject` failure on record class - [2063](https://github.com/dart-lang/webdev/pull/2063)
-
-## 18.0.2
-
-- Support new DDC temp names for patterns. - [#2042](https://github.com/dart-lang/webdev/pull/2042)
-- Make debugger find next dart location when stepping. -[#2043](https://github.com/dart-lang/webdev/pull/2043)
-
-## 18.0.1
-
-- Fix failure to map JS exceptions to dart. - [#2004](https://github.com/dart-lang/webdev/pull/2004)
-- Fix for listening to custom streams. - [#2011](https://github.com/dart-lang/webdev/pull/2011)
-- Handle unexpected extension debugger disconnect events without crashing the app - [#2021](https://github.com/dart-lang/webdev/pull/2021)
-- Support `Set` inspection. - [#2024](https://github.com/dart-lang/webdev/pull/2024)
-
-## 18.0.0
-
-- Cleanup `getObject` code for lists and maps.
-  - Now works with offset `0` and `null` count.
-  - Fix failures on edge cases.
-- Support records:
-  - Update SDK constraint to `>=3.0.0-188.0.dev <4.0.0`.
-  - Update `package:vm_service` constraint to `>=10.1.2 <12.0.0`.
-  - Update `package:dds` constraint to `^2.7.1`.
-  - Fill `BoundField.name` for records.
-  - Display records as a container of fields.
-- Remove test-only code from `sdk_configuration.dart`.
-- Move shared test-only code to a new `test_common` package.
-- Convert unnecessary async code to sync.
-- Allow empty scopes in expression evaluation in a frame.
-
-**Breaking changes**
-
-- Require `sdkConfigurationProvider` in `ExpressionCompilerService`
-  constructor.
-- Change DWDS parameter `isFlutterApp` from type `bool?` to type
-  `Future<bool> Function()?`.
-
-## 17.0.0
-
-- Include debug information in the event sent from the injected client to the
-  Dart Debug Extension notifying that the Dart app is ready.
-- Fix null cast error on expression evaluations after dwds fails to find class
-  metadata.
-- Include the entire exception description up to the stacktrace in
-  `mapExceptionStackTrace`.
-- Allow enabling experiments in the expression compiler service.
-- Pre-warm expression compiler cache to speed up Flutter Inspector loading.
-- Display full error on failure to start DDS.
-- Fix crash on processing DevTools event when starting DevTools from DevTools
-  uri.
-- Prepare or Dart 3 alpha breaking changes:
-  - Move weak null safety tests to special branch of `build_web_compilers`.
-  - Do not pass `--(no)-sound-null-safety` flag to build daemon.
-- Add back `ChromeProxyService.setExceptionPauseMode()` without override.
-- Make hot restart atomic to prevent races on simultaneous execution.
-- Return error on expression evaluation if expression evaluator stopped.
-- Update SDK constraint to `>=3.0.0-134.0.dev <4.0.0`.
-- Update `package:vm_service` constraint to `>=10.1.0 <12.0.0`.
-- Fix expression compiler throwing when weak SDK summary is not found.
-
-**Breaking changes**
-
-- Include an optional param to `Dwds.start` to indicate whether it is running
-  internally or externally.
-- Include an optional param to `Dwds.start` to indicate whether it a Flutter
-  app or not.
-- Remove `sdkConfigurationProvider` parameter from `Dwds.start`.
-- Remove deprecated `ChromeProxyService.setExceptionPauseMode()`.
-- Support dart 3.0-alpha breaking changes:
-  - Generate missing SDK assets for tests.
-  - Enable frontend server null safe tests.
-  - Update `build_web_compilers` constraint to `^4.0.0`.
-  - Update `build_runner` constraint to `^2.4.0`.
-  - Support changes in the SDK layout for dart 3.0.
-
-## 16.0.1
-
-- Allow the following API to return `null` and add error handling:
-  - `LoadStrategy.serverPathForModule`
-  - `LoadStrategy.sourceMapPathForModule`
-- Expression evaluation performance improvement:
-  - Batch `ChromeProxyService.evaluate()` requests that are close in time and
-    are executed in the same library and scope.
-- Update `package:file` version to `6.13` or greater to handle
-  https://github.com/dart-lang/sdk/issues/49647.
-
-## 16.0.0
-
-- Fix a hang and report errors on hot reload exceptions from the injected
-  client.
-- Remove `AppInspector.evaluate` code that has been replaced by expression
-  evaluation using a compiler in all scenarios.
-- Fix a bug where evaluation would fail with more than one parameter in the
-  scope.
-- Remove showing un-captured values from the stack during evaluation.
-- Refactor code to break most circular dependencies between files.
-- Migrate `package:dwds` to null safety.
-- Make `ChromeProxyService.getStack` wait for the debugger to perform initial
-  resume operation. This avoids race conditions on isolate start.
-- Make server paths match directory structure
-  - Allows correct relative source map paths resolution.
-  - Add `PackageUriMapper` class to allow mapping uris to server paths.
-- Update the min SDK constraint to 2.18.0.
-- Make DartUri work for `google3:` uris.
-
-**Breaking changes**
-
-- Remove no longer used `ExpressionCompilerService.handler`.
-- Remove `assetHandler` parameter from `ExpressionCompilerService` constructor.
-- Add `packageUriMapper` parameter to the constructor of
-  `FrontendServerRequireStrategyProvider`.
-
-## 15.0.0
-
-- Port some `dwds` files to null safety.
-- Fix failing `frontend_server_evaluate` tests.
-- Prevent `flutter_tools` crash when the Dart execution context cannot be found.
-- Update method signature of `lookupResolvedPackageUris`.
-
-## 14.0.3
-
-- Make data types null safe.
-- Update `package:vm_service` to 8.3.0.
-- Convert JavaScript stack traces in uncaught exceptions to Dart stack traces.
-- Fix failure to set breakpoints on windows with a base change in index.html.
-- Add the `setIsolatePauseMode` method to Chrome Proxy Service.
-- Batch extension `Debugger.scriptParsed` events and send batches every 1000ms
-  to the server.
-- Move `batched_stream.dart` into shared utilities.
-- Update the method signature for `lookupResolvedPackageUris`.
-
-## 14.0.2
-
-- Update the min SDK constraint to 2.17.0.
-
-## 14.0.1
-
-- Add `libraryFilters` optional parameter to the vm service implementation of
-  `getSourceReport`.
-- Update temp variable detection heuristics so internal JS type objects do not
-  show in the debugger.
-
-## 14.0.0
-
-- Add column information to breakpoints to allow precise breakpoint placement.
-- Split SDK validation methods to allow validation of separate components.
-- Remove dependency on `package:_fe_analyzer_shared`. Note: this removes current
-  incomplete support for resolving `dart:` uris.
-- Fix issues discovered when using flutter tools with web server device:
-  - Remove `dart:web_sql` from the list of SDK libraries as it is no longer
-    used.
-  - Fix crash when using flutter tools with web server device.
-  - Remove clearing all scripts on page load for extension debugger.
-- Fix breakpoints not hitting after changing a base in index.html.
-- Find best locations for call frames, breakpoints, or expression evaluation.
-- Close the SSE connection when a DebugExtension.detached event is received.
-- Fix issues discovered when using legacy module system, debug extension, and
-  JIT modules:
-  - Improve step-into times by not stepping into library loading code.
-  - Fix incorrect skip lists due to unsorted locations.
-  - Fix memory leak in extension debugger by removing stale script IDs.
-  - Allow mapping JS locations to Dart locations matching other JS lines, to
-    match the behavior of Chrome DevTools.
-  - Fix expression evaluation failure if debugger is stopped in the middle of a
-    variable definition.
-
-**Breaking changes:**
-
-- Add `basePath` parameter to `FrontendServerRequireStrategy`.
-- Add `loadLibrariesModule` getter to `LoadStrategy` interface.
-
-## 13.1.0
-
-- Update \_fe_analyzer_shared to version ^38.0.0.
-
-## 13.0.0
-
-- Change wording of paused overlay from "Paused in Dart DevTools" to "Paused"
-- Allow sending back the Dart DevTools URL from DWDS instead of launching Dart
-  DevTools, to support embedding Dart DevTools in Chrome DevTools.
-- Temporarily disable the paused in debugger overlay.
-- Add `SdkConfiguration` and `SdkConfigurationProvider` classes to allow for
-  lazily created SDK configurations.
-- Fix an issue in reporting DevTools stats where the DevTools load time was not
-  always recorded.
-- Add an `ide` query parameter to the Dart DevTools URL for analytics.
-- Fix a race where injected client crashed on events send just before hot
-  restart.
-- Remove verbose printing on receiving DevTools events.
-- Update `vm_service` version to `^8.2.0`.
-- Migrate .packages to package_config.json.
-- Update error message on expression evaluation using unloaded libraries.
-- Add `screen` field to the `DebuggerReady` event.
-- Report `DebuggerReady` events for DevTools embedded into Chrome Devtools.
-- Fix missing `CallFrame.url` after update to Chrome 100.
-
-**Breaking changes:**
-
-- `Dwds.start` and `ExpressionCompilerService` now take
-  `sdkConfigurationProvider` argument instead of separate SDK-related file
-  paths.
-
-## 12.1.0
-
-- Update \_fe_analyzer_shared to version ^34.0.0.
-
-## 12.0.0
-
-- Implement `lookupResolvedPackageUris` and `lookupPackageUris` vm service API.
-- Update `vm_service` version to `^8.1.0`.
-- Make `ExpressionCompilerService` infer location of `libraries.json` from
-  `sdkDir` parameter.
-- Show an alert in the Dart Debug Extension for a multi-app scenario.
-- Fix a bug where `dartEmitDebugEvents` was set as a `String` instead of `bool`
-  in the injected client.
-- Emit a warning instead of crashing on missing `libraries.json`.
-- Remove dead code for reading `'dart.developer.registerExtension'` and
-  `'dart.developer.postEvent'` events from the chrome console. These messages
-  haven't been written to the console since dwds v11.1.0 and Dart SDK v2.14.0.
-- Batch debug events sent from injected client to dwds to relieve network load.
-- Update `_fe_analyzer_shared` version to `33.0.0`
-- Update the Dart minimum SDK to `>=2.16.0`.
-
-**Breaking changes:**
-
-- Add `sdkDir` and `librariesPath` arguments to `Dwds.start` to help file
-  resolution for sdk uris.
-- Add `emitDebugEvents` argument to `Dwds.start` to suppress emitting debug
-  events from the injected client.
-- Replace `sdkRoot` parameter by `sdkDir` in `ExpressionCompilerService`.
-- Adds an additional parameter to launch Dart DevTools in the same window as the
-  connected Dart app.
-
-## 11.5.1
-
-- Update SDK constraint to `>=2.15.0 <3.0.0`.
-
-## 11.5.0
-
-- Support hot restart in a multi-app scenario with legacy modules.
-  - Rename `$dartHotRestart` in the injected client to `$dartHotRestartDwds`.
-  - Make `$dartHotRestartDwds` take a `runId`.
-  - No change in behavior for single applications.
-  - For a multi-app scenario using legacy modules, this will make all sub-apps
-    with the same `runId` restart at the same time once.
-
-  Note that multi-app scenario is currently only supported for legacy modules,
-  used by DDR, and is not yet supported for amd modules that are used by flutter
-  tools and webdev.
-
-- Fix chrome detection in iPhone emulation mode in chrome or edge browsers.
-
-- Reliably find unused port for extension backend http service.
-
-- Ignore offset / count parameters in getObject if the object has no length.
-
-- Include static member information for classes.
-
-## 11.4.0
-
-- Fix duplicated scripts returned by `VmService.getScripts` API.
-- Handle and log http request serving errors.
-- Encode extension url asynchronously.
-- Use default constant port for debug service.
-  - If we fail binding to the port, fall back to previous strategy of finding
-    unbound ports.
-- Add metrics measuring
-  - DevTools Initial Page Load time
-  - Various VM API
-  - Hot restart
-  - Http request handling exceptions
-- Only return scripts included in the library with Library object.
-- Add `ext.dwds.sendEvent` service extension to dwds so other tools can send
-  events to the debugger. Event format:
-  ```
-  {
-    'type': '<event type>',
-    'payload': {
-      'screen: '<screen name>',
-      'action: '<action name>'
-    }
-  }
-  ```
-  Currently supported event values:
-  ```
-  {
-    'type: 'DevtoolsEvent',
-    'payload': {
-      'screen': 'debugger',
-      'action': 'pageReady'
-    }
-  }
-  ```
-
-## 11.3.0
-
-- Update SDK constraint to `>=2.14.0 <3.0.0`
-- Depend on `vm_service` version `7.3.0`.
-
-## 11.2.3
-
-- Fix race causing intermittent `Aww, snap` errors on starting debugger with
-  multiple breakpoints in source.
-- Fix needing chrome to be focus in order to wait for the isolate to exit on hot
-  restart.
-
-## 11.2.2
-
-- Depend on `dds` version `2.1.1`.
-- Depend on `vm_service` version `7.2.0`.
-
-## 11.2.1
-
-- Recover from used port errors when starting debug service.
-- Update min SDK constraint to `2.13.0`.
-
-## 11.2.0
-
-- Throw `SentinelException` instead of `RPCError` on vm service API on
-  unrecognized isolate.
-- Throw `RPCError` in `getStack` if the application is not paused.
-- Recognize `dart:ui` library when debugging flutter apps.
-- Fix hang on hot restart when the application has a breakpoint.
-- Fix out of memory issue during sending debug event notifications.
-
-## 11.1.2
-
-- Return empty library from `ChromeProxyService.getObject` for libraries present
-  in metadata but not loaded at runtime.
-- Log failures to load kernel during expression evaluation.
-- Show lowered final fields using their original dart names.
-- Limit simultaneous connections to asset server to prevent broken sockets.
-- Fix hangs in hot restart.
-- Initial support for passing scope to `ChromeProxyService.evaluate`.
-- Require `build_web_compilers` version `3.0.0` so current version of dwds could
-  be used with SDK stable `2.13.x` versions.
-
-## 11.1.1
-
-- Update versions of `package:sse`, `package:vm_service`, `package:dds`.
-
-## 11.1.0
-
-- Add global functions to the injected client for `dart.developer.postEvent` and
-  `dart.developer.registerExtension`.
-- Register new service extension `ext.dwds.emitEvent` so clients can emit
-  events. This is intended to be used for analytics.
-
-## 11.0.2
-
-- Implement `_flutter.listViews` extension method in dwds vm client.
-
-## 11.0.1
-
-- Make adding and removing breakpoints match VM behavior:
-  - Allow adding existing breakpoints.
-  - Throw `RPCError` when removing non-existent breakpoints.
-
-## 11.0.0
-
-- Do not send `kServiceExtensionAdded` events to subscribers on the terminating
-  isolate during hot restart.
-- Support `vm_service` version `6.2.0`.
-- Fix missing sdk libraries in `getObject()` calls.
-- Fix incorrect `rootLib` returned by `ChromeProxyService`.
-- Fix not working breakpoints in library part files.
-- Fix data race in calculating locations for a module.
-- Fix uninitialized isolate after hot restart.
-- Fix intermittent failure caused by evaluation not waiting for dependencies to
-  be updated.
-- The injected client now posts a top level event when the Dart application is
-  loaded. This event is intended to be consumed by the Dart Debug Extension.
-
-**Breaking changes:**
-
-- `Dwds.start` no longer supports automatically injecting a devtools server. A
-  `devtoolsLauncher` callback must be provided to support launching devtools.
-
-## 10.0.1
-
-- Support `webkit_inspection_protocol` version `^1.0.0`.
-
-## 10.0.0
-
-- Support `VMService.evaluate` using expression compiler.
-- Update min sdk constraint to `>=2.13.0-144.0.dev`.
-- Throw `RPCError` on evaluation if the program is not paused.
-- Record `ErrorRef` returned by evaluation in analytics.
-
-**Breaking changes:**
-
-- Change `ExpressionCompiler.initialize` method to include module format.
-- Add `LoadStrategy.moduleFormat` to be used for communicating current module
-  format to the expression compiler.
-
-## 9.1.0
-
-- Support authentication endpoint for the Dart Debug Extension.
-- Support using WebSockets for the injected client by passing
-  `useSseForInjectedClient: false` to `Dwds.start()`. Unlike SSE, WebSockets do
-  not currently support keepAlives here (beyond the standard WebSocket pings to
-  keep the socket alive).
-
-## 9.0.0
-
-- Fix an issue where relative worker paths provided to the
-  `ExpressionCompilerService` would cause a crash.
-- Fix an issue where the injected client connection could be lost while the
-  application is paused.
-- Support keep-alive for debug service connections.
-- Depend on the latest `package:sse`.
-- Filter out DDC temporary variables from the variable inspection view.
-- Add `DwdsEvent`s around stepping and evaluation.
-- Send an event to the Dart Debug Extension that contains VM service protocol
-  URI.
-- Depend on `package:vm_service` version `6.1.0+1`.
-- Update the `keepAlive` configs to prevent accidental reuse of a connection
-  after stopping a debug session.
-- Support disabling the launching of Dart DevTools through `Alt + d` with
-  `enableDevtoolsLaunch`.
-- Opt all dart files out of null safety for min SDK constraint update.
-
-**Breaking changes:**
-
-- `LoadStrategy`s now require a `moduleInfoForEntrypoint`.
-
-## 8.0.3
-
-- Fix an issue where failed hot restarts would hang indefinitely.
-
-## 8.0.2
-
-- Change `ExpressionCompiler` to accept `FutureOr<int>` port configuration.
-- Depend on `package:vm_service` version `6.0.1-nullsafety.1`.
-
-## 8.0.1
-
-- Support null safe versions of `package:crypto`, `package:uuid` and
-  `package:webdriver`.
-
-## 8.0.0
-
-- Improve logging around execution contexts.
-- Remove the expression compilation dependency update from the create isolate
-  critical path.
-- Expose new event stream for future use with analytics.
-- Update `ExpressionCompiler` to include new `initialize` method which has a
-  parameter for the null safety mode.
-- Update `ExpressionCompilerService` to change how it is instantiated and
-  implement the new `initialize` method.
-- Provide summary module paths to the expression compiler
-- Depend on `package:vm_service` version `6.0.1-nullsafety.0`.
-
-**Breaking changes:**
-
-- Change `ExpressionCompiler.updateDependencies` method to include module
-  summary paths
-
-## 7.1.1
-
-- Properly handle `requireJS` errors during hot restarts.
-- Fix an issue where Dart frame computation could result in a stack overflow for
-  highly nested calls.
-- Fix an issue where calling add breakpoint in quick succession would corrupt
-  the internal state.
-- Fix expression evaluation failure inside blocks.
-- Now log the encoded URI of the debug service to both the terminal and
-  application console.
-- No longer blacklist the Dart SDK as the `skipLists` support serves the same
-  purpose.
-- Fix an issue where running webdev with expression evaluation enabled would
-  fail to find `libraries.json` file and emit severe error.
-
-## 7.1.0
-
-- Fix a potential null issue while resuming.
-- Depend on the latest `package:vm_service`.
-- Fix crash in expression evaluation on null isolate.
-- Fix incorrect file name detection for full kernel files.
-- Add `ExpressionCompilerService.startWithPlatform` API to enable running
-  expression compiler worker from a given location.
-- Support Chrome `skipLists` to improve stepping performance.
-- Export `AbsoluteImportUriException`.
-- Depend on the latest `package:vm_service` which supports a new `limit`
-  parameter to `getStack`.
-
-## 7.0.2
-
-- Depend on the latest `package:sse`.
-- Add more verbose logging around `hotRestart`, `fullReload` and entrypoint
-  injection.
-
-## 7.0.1
-
-- Fix an issue where we attempted to find locations for the special
-  `dart_library` module.
-
-## 7.0.0
-
-- Add support for the Dart Development Service (DDS). Introduces 'single client
-  mode', which prevents additional direct connections to DWDS when DDS is
-  connected.
-- Update metadata reader version to `2.0.0`. Support reading metadata versions
-  `2.0.0` and `1.0.0`.
-- Support custom hosts and HTTPs traffic in a `ProxyServerAssetReader`.
-- Remove heuristics from require strategies and use metadata to look up module
-  paths.
-  - Fix issue where upgrading `build_web_compilers` would cause missing module
-    assets (JavaScript code and source maps).
-- Fix issue where open http connections prevent the process for exiting.
-- Add `ExpressionCompilationService` class that runs ddc in worker mode to
-  support expression evaluation for clients that use build systems to build the
-  code.
-- Require at least `devtools` and `devtools_server` version `0.9.2`.
-- Require at least `dds` version `1.4.1`.
-- Require at least `build_web_compilers` version `2.12.0`.
-- Update min sdk constraint to `>=2.10.0`.
-- Update `MetadataProvider` to throw an `AbsoluteImportUriException` when
-  absolute file paths are used in an import uri.
-
-**Breaking changes:**
-
-- Change `ExpressionCompiler` to require a new `updateDependencies` method.
-- Update a number of `LoadStrategy` APIs to remove heuristics and rely on the
-  `MetadataProvider`.
-- No longer require a `LogWriter` and corresponding `verbose` argument but
-  instead properly use `package:logger`.
-- `FrontendServerRequireStrategyProvider` now requires a `digestProvider`.
-
-## 6.0.0
-
-- Depend on the latest `package:devtools` and `package:devtools_server`.
-- Support using WebSockets for the debug backend by passing
-  `useSseForDebugBackend: false` to `Dwds.start()`
-- Ensure we run main on a hot restart request even if no modules were updated.
-- Allow reading metadata generated by `dev_compiler` from file to supply module
-  information to `Dwds`.
-- Hide JavaScript type errors when hovering over text in the debugger.
-- Fix an issue where reusing a connection could cause a null error.
-- Improve the heuristic which filters JS scopes for debugging needs.
-
-**Breaking Changes:**
-
-- Require access to the `.ddc_merged_metadata` file.
-- Remove deprecated parameter `restoreBreakpoints` as breakpoints are now set by
-  regex URL and Chrome automatically reestablishes them.
-
-## 5.0.0
-
-- Have unimplemented VM service protocol methods return the RPC error
-  'MethodNotFound' / `-32601`.
-- Fix an issue where the application main function was called before a hot
-  restart completed.
-- Breaking change `AssetReader` now requires a `metadataContents`
-  implementation.
-
-## 4.0.1
-
-- Fixed issue where `getSupportedProtocols` would return the wrong protocol.
-
-## 4.0.0
-
-- Pin the `package:vm_service` version to prevent unintended breaks.
-
-## 3.1.3
-
-- Fix an issue where the injected client served under `https` assumed the
-  corresponding SSE handler was also under `https`.
-
-## 3.1.2
-
-- Gracefully handle multiple injected clients on a single page.
-- Update to the latest `package:vm_service` and use more RPCError error codes on
-  call failures.
-- Update the `require_restarter` to rerun main after a hot restart to align with
-  the legacy strategy. We therefore no longer send a `RunRequest` after a hot
-  restart.
-- Compute only the required top frame for a paused event.
-- Change `streamListen` to return an `RPCError` / error code `-32601` for
-  streams that are not handled.
-- Populate information about async Dart frames.
-- Populate the `exception` field in debugger pause event when we break as a
-  result of an exception.
-- Prompt users to install the Dart Debug Extension if local debugging does not
-  work.
-- Allow for the injected client to run with CSP enforced.
-- Implement the `getMemoryUsage()` call.
-- Fix an issue where the injected client could cause a mixed content error.
-
-## 3.1.1
-
-- Change the reported names for isolates to be more terse.
-- Implemented the 'PossibleBreakpoints' report kind for `getSourceReport()`.
-- Change the returned errors for the unimplemented `getClassList` and
-  `reloadSources` methods to -32601 ('method does not exist / is not
-  available').
-- Do not include native JavaScript objects on stack returned from the debugger.
-
-## 3.1.0
-
-- Support Chromium based Edge.
-- Depend on latest `package:sse` version `3.5.0`.
-- Bypass connection keep-alives when shutting down to avoid delaying process
-  shutdown.
-- Fix an issue where the isolate would incorrectly be destroyed after connection
-  reuse.
-
-## 3.0.3
-
-- Support the latest version of `package:shelf_packages_handler`.
-- Throw a more useful error if during a hot restart there is no active isolate.
-- Fix a race condition in which loading module metadata could cause a crash.
-- Correct scope detection for expression evaluation
-- Silence verbose and recoverable exceptions during expression evaluation
-- Return errors from ChromeProxyService.evaluateInFrame as ErrorRef so they are
-  not shown when hovering over source in the IDE
-
-## 3.0.2
-
-- Fix an issue in JS to Dart location translation in `ExpressionEvaluator`. JS
-  location returned from Chrome is 0-based, adjusted to 1-based.
-
-## 3.0.1
-
-- Drop dependency on `package_resolver` and use `package_config` instead.
-- Bump min sdk constraint to `>=2.7.0`.
-
-## 3.0.0
-
-- Depend on the latest `package:vm_service` version `4.0.0`.
-
-**Breaking Changes:**
-
-- Delegate to the `LoadStrategy` for module information:
-  - moduleId -> serverPath
-  - serverPath -> moduleId
-
-## 2.0.1
-
-- Fix an issue where we would return prematurely during a `hotRestart`.
-- Fix an issue where we would incorrectly fail if a `hotRestart` had to fall
-  back to a full reload.
-
-## 2.0.0
-
-- Depend on the latest `package:vm_service` version `3.0.0+1`.
-
-**Breaking Changes:**
-
-- Now require a `LoadStrategy` to `Dwds.start`. This package defines two
-  compatible load strategies, `RequireStrategy` and \`LegacyStrategy.
-- `Dwds.start` function signature has been changed to accept one more parameter
-  of new interface type `ExpressionCompiler` to support expression evaluation
-- Provide an implementation of the `RequireStrategy` suitable for use with
-  `package:build_runner`.
-- Simplify hot reload logic and no longer provide module level hooks.
-
-## 1.0.1
-
-- Make the `root` optional for the `ProxyServerAssetReader`.
-
-## 1.0.0
-
-- Fix an issue where files imported with relative paths containing `../` may
-  fail to resolve breakpoint locations.
-- Remove dependency on `package:build_daemon`.
-- Add `FrontendServerAssetReader` for use with Frontend Server builds.
-- Depend on latest `package:sse` for handling client reconnects transparently on
-  the server.
-- Fix an issue where a failure to initiate debugging through the Dart Debug
-  Extension would cause your development server to crash.
-- Fix an issue where trying to launch DevTools in a non-debug enabled Chrome
-  instance could crash your development server.
-
-**Breaking Changes:**
-
-- No longer use the `BuildResult` abstraction from `package:build_daemon` but
-  require a similar abstraction provided by this package.
-- `AssetHandler` has been renamed to `AssetReader` and no longer provides a
-  generic resource handler. Specific methods for the required resources are now
-  clearly defined. The new abstraction is now consumed through `dwds.dart`.
-- `BuildRunnerAssetHandler` has been renamed to `ProxyServerAssetReader` and is
-  now consumed through `dwds.dart`.
-
-## 0.9.0
-
-- Expose `middleware` and `handler`.
-
-**Breaking Change:** The `AssetHandler` will not automatically be added the DWDS
-handler cascade. You must now also add the `middleware` to your server's
-pipeline.
-
-## 0.8.5
-
-- Always bind to `localhost` for the local debug workflow.
-- Fix an issue where breakpoints could cause DevTools to hang.
-
-## 0.8.4
-
-- Support using WebSockets for the debug (VM Service) proxy by passing
-  `useSseForDebugProxy: false` to `Dwds.start()`
-
-## 0.8.3
-
-- Support nesting Dart applications in iframes.
-
-## 0.8.2
-
-- Add the ability to receive events from the extension in batches.
-
-## 0.8.1
-
-- Depend on the latest `package:built_value`.
-
-## 0.8.0
-
-- Add temporary support for restoring breakpoints. Eventually the Dart VM
-  protocol will clearly define how breakpoints should be restored.
-- Depend on latest `package:sse` to get retry logic.
-- Don't spawn DevTools if `serveDevTools` is false.
-- `UrlEncoder` will also encode the base URI used by the injected client / Dart
-  Debug Extension. \*\* Breaking Change \*\* `serveDevTools` is not
-  automatically considered true if `enableDebugExtension`is true.
-
-## 0.7.9
-
-- Properly wait for hot reload to complete with the legacy module system.
-- Fix issue with `getObject` for a class with a generic type.
-
-## 0.7.8
-
-- Support optional argument `urlEncoder` that is used to encode remote URLs for
-  use with the Dart Debug Extension.
-
-## 0.7.7
-
-- Handle getObject for primitives properly.
-- Properly black box scripts if query parameters are provided.
-
-## 0.7.6
-
-- Fix issue with source map logic for the legacy module system.
-- Allow setting breakpoints multiple times and just return the old breakpoint.
-- Fix a bug with Maps that contain lists of simple types.
-
-## 0.7.5
-
-- The injected client's connection is now based off the request URI.
-- Fix an issue where resuming while paused at the start would cause an error.
-- Expose the `ChromeDebugException` class for error handling purposes.
-- Expose the `AppConnectionException` class for error handling purposes.
-- DevTools will now launch immediately and lazily sets up necessary state.
-- Properly set `pauseBreakpoints` on `kPauseBreakpoint` events.
-- Greatly improves handling of List, Map and IdentityMap instances.
-- Lazily parse source maps to improve performance for large applications.
-
-## 0.7.4
-
-- Deobfuscate DDC extension method stack traces.
-- Properly get all libraries with the `legacy` module system.
-
-## 0.7.3
-
-- Correctly set `Isolate` state if debugging is initiated after the application
-  has already started.
-
-## 0.7.2
-
-- Account for root directory path when using `package:` URIs with `DartUri`.
-
-## 0.7.1
-
-- Fix a bug where we would try to create a new isolate even for a failed hot
-  restart. This created a race condition that would lead to a crash.
-- Don't attempt to write a vm service request to a closed connection.
-  - Instead we log a warning with the attempted request message and return.
-- Make all `close` methods more robust by allowing them to be called more than
-  once and returning the cached future from previous calls.
-- Add explicit handling of app not loaded errors when handling chrome pause
-  events.
-
-## 0.7.0
-
-- `DWDS.start` now requires an `AssetHandler` instead of `applicationPort`,
-  `assetServerPort` and `applicationTarget`.
-- Expose a `BuildRunnerAssetHandler` which proxies request to the asset server
-  running within build runner.
-- Support the Legacy Module strategy through the injected client.
-- Support DDK sourcemap URIs.
-- Update SDK dependency to minimum of 2.5.0.
-
-### Bug Fixes:
-
-- Fix handling of chrome pause events when we have no isolate loaded yet.
-
-## 0.6.2
-
-- Capture any errors that happen when handling SSE requests in the DevHandler
-  and return an error response to the client code.
-  - Log error responses in the client to the console.
-- Handle empty Chrome exception descriptions.
-
-## 0.6.1
-
-- Add `isolateRef` to `Isolate`s `pauseEvent`s.
-- Depend on the latest `package:vm_service`.
-- Implements `invoke`.
-- Adds support for VM object IDs for things that don't have Chrome object Ids
-  (e.g. int, double, bool, null).
-
-## 0.6.0
-
-- Add new required parameter `enableDebugging` to `Dwds.start`. If `false` is
-  provided, debug services will not run. However, reload logic will continue to
-  work with the injected client.
-- Handle injected client SSE errors.
-- Handle a race condition when the browser is refreshed in the middle of setting
-  up the debug services.
-
-## 0.5.5
-
-- Properly set the `pauseEvent` on the `Isolate`.
-- Fix a race condition with Hot Restarts where the Isolate was not created in
-  time for pause events.
-
-## 0.5.4
-
-- Fix issue where certain required fields of VM service protocol objects were
-  null.
-- Properly set the `exceptionPauseMode` on the `Isolate`.
-- Depend on the latest `DevTools`.
-
-## 0.5.3
-
-- Fix issue where certain required fields of VM service protocol objects were
-  null.
-
-## 0.5.2
-
-- Fix issue where certain required fields of VM service protocol objects were
-  null.
-- Properly display `Closure` names in the debug view.
-
-## 0.5.1
-
-- Fix an issue where missing source maps would cause a crash. A warning will now
-  be logged to the console instead.
-- Depend on the latest `package:webkit_inspection_protocol`.
-
-## 0.5.0
-
-- Fix an issue where we source map paths were not normalized.
-- Added a check to tests for the variable DWDS_DEBUG_CHROME to run Chrome with a
-  UI rather than headless.
-- Catch unhandled errors in `client.js` and recommend using the
-  `--no-injected-client` flag for webdev users.
-- Add support for an SSE connection with Dart DevTools.
-- Rename `wsUri` to `uri` on `DebugConnection` to reflect that the uri may not
-  be a websocket.
-- Depend on latest `package:vm_service`.
-
-## 0.4.0
-
-- Move `data` abstractions from `package:webdev` into `package:dwds`.
-- Move debugging related handlers from `package:webdev` into `package:dwds`.
-- Move injected client from `package:webdev` into `package:dwds`.
-- Create new public entrypoint `dwds.dart`. Existing public API `services.dart`
-  is now private.
-
-## 0.3.3
-
-- Add support for `getScript` for paused isolates.
-- Add support for `onRequest` and `onResponse` listeners for the vm service.
-
-## 0.3.2
-
-- Add support for `scope` in `evaluate` calls.
-
-## 0.3.1
-
-- Improve error reporting for evals, give the full JS eval in the error message
-  so it can be more easily reproduced.
-
-## 0.3.0
-
-- Change the exposed type on DebugService to VmServiceInterface
-
-## 0.2.1
-
-- Support `setExceptionPauseMode`.
-
-## 0.2.0
-
-- Added custom tokens to the `wsUri` for increased security.
-  - Treating this as a breaking change because you now must use the `wsUri`
-    getter to get a valid uri for connecting to the service, when previously
-    combining the port and host was sufficient.
-
-## 0.1.0
-
-- Initial version
diff --git a/dwds/CONTRIBUTING.md b/dwds/CONTRIBUTING.md
deleted file mode 100644
index 198fdb4..0000000
--- a/dwds/CONTRIBUTING.md
+++ /dev/null
@@ -1,196 +0,0 @@
-## Local Development
-
-### With Flutter tools (recommended)
-
-1. Fork and download the [Flutter repo](https://github.com/flutter/flutter).
-   Detailed instructions can be found
-   [here](https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment).
-1. Add an alias to your `.bashrc`/`.zshrc` for Flutter Tools:
-
-```
-alias flutter_tools_debug='/YOUR_PATH/flutter/bin/dart --observe /YOUR_PATH/flutter/packages/flutter_tools/bin/flutter_tools.dart'
-alias flutter_tools='/YOUR_PATH/flutter/bin/dart /YOUR_PATH/flutter/packages/flutter_tools/bin/flutter_tools.dart'
-```
-
-> **Explanation:**
->
-> - `/PATH_TO_YOUR_FLUTTER_REPO/bin/dart`: This is the path to the Dart SDK that
->   Flutter Tools uses
-> - `--observe`: This flag specifies we want a Dart DevTools URL for debugging.
-> - `/PATH_TO_YOUR_FLUTTER_REPO/packages/flutter_tools/bin/flutter_tools.dart`:
->   This is the path to Flutter Tools itself
->
-> _More details can be found at the Flutter Tools
-> [README](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/README.md)._
-
-3. In your Flutter Tools
-   [`pubspec.yaml`](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/pubspec.yaml),
-   change the DWDS dependency to point to your local DWDS:
-
-```
-  dwds:
-    path: /YOUR_PATH/dwds
-```
-
-Note: This is even easier if you create a `pubspec_overrides.yaml` file in the `flutter_tools` directory, and then git-ignore it. This way you don't have to worry about committing your DWDS override.
-
-4. Choose a Flutter app to run (such as the
-   [Flutter Gallery app](https://github.com/flutter/flutter/tree/master/dev/integration_tests/flutter_gallery).
-1. From the Flutter app repo, run your local Flutter Tools with alias you
-   defined in step #2:
-
-If you want a DevTools URL:
-
-```
-flutter_tools_debug run -d chrome
-```
-
-If you don't want a DevTools URL:
-
-```
-flutter_tools run -d chrome
-```
-
-Note: `flutter_tools_debug` can be a bit of a pain, because the app starts paused and you have to first open the DevTools URL and resume before you can do anything. Therefore, when you don't need to set breakpoints you should run `flutter_tools` instead of `flutter_tools_debug`.
-
-6. If running with `flutter_tools_debug`, open up the **first** Dart DevTools URL you see printed:
-
-```
-...
-The Dart VM service is listening on http://127.0.0.1:8181/ajXIPMLq6iI=/
-The Dart DevTools debugger and profiler is available at: http://127.0.0.1:8181/ajXIPMLq6iI=/devtools/#/?uri=ws%3A%2F%2F127.0.0.1%3A8181%2FajXIPMLq6iI%3D%2Fws   <== THIS ONE!
-Launching lib/main.dart on Chrome in debug mode...
-...
-```
-
-7. The Dart DevTools you open is connected to your Flutter Tools, but because of
-   the path dependency added in step #3, you can debug your local DWDS as well.
-
-### With WebDev
-
-Follow instructions in the `webdev/example` [README](/example/README.md) to run
-the example app and connect to DWDS.
-
-## Changes required when submitting a PR
-
-- Make sure you update the `CHANGELOG.md` with a description of the change, or use
-  the 'changelog-not-required' label to mark that the PR doesn't need a `CHANGELOG.md`
-  entry.
-- If DWDS / Webdev was just released, then you will need to update the version
-  in the `CHANGELOG`, and the `pubspec.yaml` file as well (eg,
-  https://github.com/dart-lang/webdev/pull/1462)
-- For any directories you’ve touched, run `dart run tool/build.dart` to
-  check in any file that should be built. This will make sure the integration
-  tests are run against the built files.
-
-## g3 Rolls
-
-DWDS is rolled automatically into g3 along with the Dart SDK. For more information, or to learn how to handle breaking changes, see go/roll-dwds.
-
-## Release steps
-
-## Step 1: Publish DWDS to pub
-
-- From the `/tool` directory in the mono-repo root, run: `dart run release.dart -p dwds`
-- Submit a PR with those changes (example PR: https://github.com/dart-lang/webdev/pull/1456)
-- Once the PR is submitted, go to https://github.com/dart-lang/webdev/releases and create a new
-  release, eg https://github.com/dart-lang/webdev/releases/tag/dwds-v12.0.0. This should trigger
-  the auto-publisher. Verify that the package is published.
-- From the `/tool` directory in the mono-repo root, run: `dart run release.dart --reset -p dwds -v <<new version tag>>` where the new version tag is the next minor version postfixed with `-wip` ([example PR](https://github.com/dart-lang/webdev/pull/2267/files))
-- Submit a PR with those changes.
-
-> _Note: To have the right permissions for publishing, you need to be invited to
-> the tools.dart.dev. A member of the Dart team should be able to add you at
-> https://pub.dev/publishers/tools.dart.dev/admin._
-
-## Step 2: Publish Webdev to pub
-
-> _Note: DWDS is a dependency of Webdev, which is why DWDS must be published
-> before Webdev can be published._
-
-Follow instructions in the `webdev/webdev`
-[CONTRIBUTING](/webdev/CONTRIBUTING.md) to release Webdev.
-
-## Whenever the Dart SDK is updated
-
-Whenever Dart SDK is updated to a new major or minor version (~every 2 weeks),
-any PR submissions to Webdev are blocked by the min_sdk_test until the Dart min
-SDK constraint is updated. Therefore, whenever your PR gets blocked by the test,
-you need to:
-
-1. Create a new PR that updates all the min SDK constraints to the new version,
-   eg: https://github.com/dart-lang/webdev/pull/1463.
-1. From each of the subdirectories (`/dwds`, `/frontend_server_client`,
-   and `/webdev`) update dependencies with
-   `dart pub upgrade`
-1. Make sure to update the `CHANGELOG` to include the new version number
-1. Submit your PR. At this point, you technically will be able to submit the PR
-   that was blocked, but the point of the test is to make sure that DWDS and
-   Webdev get released after a Dart stable release. Therefore, follow the steps
-   above to publish DWDS and Webdev.
-
-> ### Why is this necessary?
->
-> This is so that we don’t need to support older versions of the SDK and test
-> against them, therefore every time the Dart SDK is bumped to a new major or
-> minor version, DWDS and Webdev’s min Dart SDK constraint needs to be
-> changed and DWDS and Webdev have to be released. Since DWDS is dependent on
-> DDC and the runtime API, if we had a looser min constraint we would need to
-> run tests for all earlier stable releases of the SDK that match the
-> constraint, which would have differences in functionality and therefore need
-> different tests.
-
-## Hotfixes
-
-Sometimes you might need to do a hotfix release of DWDS. An example of why this
-might be necessary is if you need to do a hotfix of DWDS into Flutter, but don't
-want to release a new version of DWDS with the current untested changes on the
-`main` branch. Instead you only want to apply a fix to the current version of
-DWDS in Flutter.
-
-### Instructions:
-
-1. Create a branch off the release that needs a hotfix:
-
-   a. In the GitHub UI's
-   [commit history view](https://github.com/dart-lang/webdev/commits/main),
-   find the commit that prepared the release of DWDS that you would like to
-   hotfix.
-
-   b. Click on `< >` ("Browse the repository at this point in history").
-
-   c. At the top-left, you should see the commit hash in a dropdown. Click the
-   dropdown, and type in a name for your hotfix branch (e.g.
-   `16.0.2-hotfix-release`). Then select "Create branch `16.0.2-hotfix-release`
-   from `commit_hash`".
-
-   d. From your local clone of DWDS, run `git fetch upstream`. (_Note: this
-   assumes you have already configured git to sync your fork with the `upstream`
-   repository. If you haven't, follow
-   [these instructions](https://docs.github.com/en/get-started/quickstart/fork-a-repo#configuring-git-to-sync-your-fork-with-the-upstream-repository).)_
-
-   e. Search for the branch that you just created, e.g.
-   `git branch -a | grep 16.0.2-hotfix-release` f. Track that branch with
-   `git checkout --track branch_name` (e.g.
-   `remotes/upstream/16.0.2-hotfix-release`)
-
-1. Update the CI tests so that the branch tests against the appropriate Dart
-   SDKs:
-
-   a. Make the appropriate changes to DWDS' `mono_pkg.yaml` then run
-   `mono_repo generate`. Submit this change to the branch you created in step
-   #3, **not** `main`.
-
-1. Make the fix:
-
-   a. You can now make the change you would like to hotfix. From the GitHub UI,
-   open a PR to merge your change into the branch you created in step #3,
-   **not** `main`. See https://github.com/dart-lang/webdev/pull/1867 as an
-   example.
-
-1. Once it's merged, you can follow the instructions to
-   [publish DWDS to pub](#step-2-publish-dwds-to-pub), except instead of pulling
-   from `main`, pull from the branch your created in step #3.
-
-1. If necessary, open a cherry-pick request in Flutter to update the version.
-   See https://github.com/flutter/flutter/issues/118122 for an example.
diff --git a/dwds/LICENSE b/dwds/LICENSE
deleted file mode 100644
index a0d5f54..0000000
--- a/dwds/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2019, the Dart project authors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-    * Neither the name of Google LLC nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dwds/OWNERS b/dwds/OWNERS
deleted file mode 100644
index 77bdf63..0000000
--- a/dwds/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-set noparent
-# Dart Development Infrastructure Team
-file:/tools/OWNERS_DEV_INFRA
\ No newline at end of file
diff --git a/dwds/README.md b/dwds/README.md
deleted file mode 100644
index b63bd63..0000000
--- a/dwds/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## Dart Web Developer Service
-
-The Dart Web Developer Service (DWDS) allows developer tools designed to work
-with the native Dart VM to also work with Dart Web applications compiled with
-[DDC](https://dart.dev/tools/dartdevc), built / served with
-[webdev](https://dart.dev/tools/webdev), and run in Chrome.
-
-`package:dwds` is integrated into `webdev serve` as well as `flutter run`.
-
-At a basic level, DWDS proxies between:
-
-- Developer tools that are written against the
-  [Dart VM Service Protocol](https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md)
-- Execution environments that expose the
-  [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol)
diff --git a/dwds/analysis_options.yaml b/dwds/analysis_options.yaml
deleted file mode 100644
index 6853b8e..0000000
--- a/dwds/analysis_options.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-include: package:dart_flutter_team_lints/analysis_options.yaml
-
-analyzer:
-  exclude:
-    # Ignore generated files
-    - "lib/src/handlers/injected_client_js.dart"
-    # Ignore integration fixtures to avoid analysis errors from "package:build_daemon".
-    - "test/integration/fixtures/context.dart"
-    - "test/integration/fixtures/server.dart"
-    - "test/integration/fixtures/utilities.dart"
-
-linter:
-  rules:
-    always_use_package_imports: true
-    prefer_relative_imports: false
diff --git a/dwds/lib/asset_reader.dart b/dwds/lib/asset_reader.dart
deleted file mode 100644
index 578849f..0000000
--- a/dwds/lib/asset_reader.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// 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.
-
-export 'src/readers/asset_reader.dart'
-    show AssetReader, PackageUriMapper, stripLeadingSlashes;
diff --git a/dwds/lib/config.dart b/dwds/lib/config.dart
deleted file mode 100644
index ddd51b4..0000000
--- a/dwds/lib/config.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2023, 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.
-
-export 'src/config/tool_configuration.dart'
-    show
-        AppMetadata,
-        DebugSettings,
-        DevToolsLauncher,
-        ToolConfiguration,
-        UrlEncoder;
diff --git a/dwds/lib/dart_web_debug_service.dart b/dwds/lib/dart_web_debug_service.dart
deleted file mode 100644
index a3698b7..0000000
--- a/dwds/lib/dart_web_debug_service.dart
+++ /dev/null
@@ -1,176 +0,0 @@
-// 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:async';
-
-import 'package:dwds/data/build_result.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/connections/debug_connection.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/handlers/dev_handler.dart';
-import 'package:dwds/src/handlers/injector.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/servers/devtools.dart';
-import 'package:dwds/src/servers/extension_backend.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-import 'package:sse/server/sse_handler.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-typedef ConnectionProvider = Future<ChromeConnection> Function();
-
-/// The Dart Web Debug Service.
-class Dwds {
-  static final _logger = Logger('DWDS');
-  final Middleware middleware;
-  final Handler handler;
-  final DevTools? _devTools;
-  final DevHandler _devHandler;
-  final AssetReader _assetReader;
-  final bool _enableDebugging;
-  final bool _useDwdsWebSocketConnection;
-
-  Dwds._(
-    this.middleware,
-    this._devTools,
-    this._devHandler,
-    this._assetReader,
-    this._enableDebugging,
-    this._useDwdsWebSocketConnection,
-  ) : handler = _devHandler.handler;
-
-  Stream<AppConnection> get connectedApps => _devHandler.connectedApps;
-
-  Stream<DwdsEvent> get events => eventStream;
-
-  StreamController<DebugConnection> get extensionDebugConnections =>
-      _devHandler.extensionDebugConnections;
-
-  Future<void> stop() async {
-    await _devTools?.close();
-    await _devHandler.close();
-    await _assetReader.close();
-  }
-
-  /// Creates a debug connection for the given app connection.
-  ///
-  /// Returns a [DebugConnection] that wraps the appropriate debug services
-  /// based on the connection type (WebSocket or Chrome-based).
-  Future<DebugConnection> debugConnection(AppConnection appConnection) async {
-    if (!_enableDebugging) throw StateError('Debugging is not enabled.');
-
-    if (_useDwdsWebSocketConnection) {
-      return await _devHandler.createDebugConnectionForWebSocket(appConnection);
-    } else {
-      return await _devHandler.createDebugConnectionForChrome(appConnection);
-    }
-  }
-
-  static Future<Dwds> start({
-    required AssetReader assetReader,
-    required Stream<BuildResult> buildResults,
-    required ConnectionProvider chromeConnection,
-    required ToolConfiguration toolConfiguration,
-    bool useDwdsWebSocketConnection = false,
-  }) async {
-    globalToolConfiguration = toolConfiguration;
-    final debugSettings = toolConfiguration.debugSettings;
-    final appMetadata = toolConfiguration.appMetadata;
-    DevTools? devTools;
-    Future<String>? extensionUri;
-    ExtensionBackend? extensionBackend;
-    if (debugSettings.enableDebugExtension) {
-      final handler = debugSettings.useSseForDebugBackend
-          ? SseSocketHandler(
-              SseHandler(
-                Uri.parse('/\$debug'),
-                // Proxy servers may actively kill long standing connections.
-                // Allow for clients to reconnect in a short window. Making the
-                // window too long may cause issues if the user closes a debug
-                // session and initiates a new one during the keepAlive window.
-                keepAlive: const Duration(seconds: 5),
-              ),
-            )
-          : WebSocketSocketHandler();
-
-      extensionBackend = await ExtensionBackend.start(
-        handler,
-        appMetadata.hostname,
-      );
-      extensionUri = Future.value(
-        Uri(
-          scheme: debugSettings.useSseForDebugBackend ? 'http' : 'ws',
-          host: extensionBackend.hostname,
-          port: extensionBackend.port,
-          path: r'$debug',
-        ).toString(),
-      );
-      final urlEncoder = debugSettings.urlEncoder;
-      if (urlEncoder != null) {
-        extensionUri = urlEncoder(await extensionUri);
-      }
-    }
-
-    // TODO(bkonyi): only allow for serving DevTools via DDS.
-    // ignore: deprecated_member_use_from_same_package
-    final devToolsLauncher = debugSettings.devToolsLauncher;
-    Uri? launchedDevToolsUri;
-    if (devToolsLauncher != null &&
-        // If DDS is configured to serve DevTools, use its instance.
-        !debugSettings.ddsConfiguration.serveDevTools) {
-      devTools = await devToolsLauncher(appMetadata.hostname);
-      launchedDevToolsUri = Uri(
-        scheme: 'http',
-        host: devTools.hostname,
-        port: devTools.port,
-      );
-      _logger.info('Serving DevTools at $launchedDevToolsUri\n');
-    }
-
-    final injected = DwdsInjector(extensionUri: extensionUri);
-
-    final devHandler = DevHandler(
-      chromeConnection,
-      buildResults,
-      devTools,
-      assetReader,
-      appMetadata.hostname,
-      extensionBackend,
-      debugSettings.urlEncoder,
-      debugSettings.useSseForDebugProxy,
-      debugSettings.useSseForInjectedClient,
-      debugSettings.expressionCompiler,
-      injected,
-      DartDevelopmentServiceConfiguration(
-        // This technically isn't correct, but
-        // DartDevelopmentServiceConfiguration.enable is true by default, so
-        // this won't break unmigrated tools.
-        // ignore: deprecated_member_use_from_same_package
-        enable: debugSettings.spawnDds && debugSettings.ddsConfiguration.enable,
-        // ignore: deprecated_member_use_from_same_package
-        port: debugSettings.ddsPort ?? debugSettings.ddsConfiguration.port,
-        devToolsServerAddress:
-            launchedDevToolsUri ??
-            debugSettings.ddsConfiguration.devToolsServerAddress,
-        serveDevTools: debugSettings.ddsConfiguration.serveDevTools,
-        appName: debugSettings.ddsConfiguration.appName,
-        dartExecutable: debugSettings.ddsConfiguration.dartExecutable,
-      ),
-      debugSettings.launchDevToolsInNewWindow,
-      useWebSocketConnection: useDwdsWebSocketConnection,
-      sseIgnoreDisconnect: debugSettings.sseIgnoreDisconnect,
-    );
-
-    return Dwds._(
-      injected.middleware,
-      devTools,
-      devHandler,
-      assetReader,
-      debugSettings.enableDebugging,
-      useDwdsWebSocketConnection,
-    );
-  }
-}
diff --git a/dwds/lib/data/README.md b/dwds/lib/data/README.md
deleted file mode 100644
index 17430bf..0000000
--- a/dwds/lib/data/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# How to generate data files:
-
-## Creating a new data file:
-
-1. Create a new file for your data type in the `/data` directory with the
-   `.dart` extension
-1. Create a class for your data type with `toJson` and `fromJson` methods (see existing files for examples)
-
-## To update an existing data file:
-
-1. Make your changes directly to the dart file.
-
diff --git a/dwds/lib/data/build_result.dart b/dwds/lib/data/build_result.dart
deleted file mode 100644
index 0f14392..0000000
--- a/dwds/lib/data/build_result.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2020, 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.
-
-enum BuildStatus {
-  started,
-  succeeded,
-  failed;
-
-  factory BuildStatus.fromJson(String json) {
-    return BuildStatus.values.firstWhere(
-      (e) => e.name == json,
-      orElse: () {
-        throw ArgumentError('Unknown BuildStatus: $json');
-      },
-    );
-  }
-
-  String toJson() => name;
-}
-
-class BuildResult {
-  final BuildStatus status;
-
-  BuildResult({required this.status});
-
-  factory BuildResult.fromJson(Map<String, dynamic> json) {
-    return BuildResult(status: BuildStatus.fromJson(json['status'] as String));
-  }
-
-  Map<String, dynamic> toJson() {
-    return {'status': status.toJson()};
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is BuildResult &&
-          runtimeType == other.runtimeType &&
-          status == other.status;
-
-  @override
-  int get hashCode => status.hashCode;
-
-  @override
-  String toString() => 'BuildResult(status: $status)';
-}
diff --git a/dwds/lib/data/connect_request.dart b/dwds/lib/data/connect_request.dart
deleted file mode 100644
index 654a97c..0000000
--- a/dwds/lib/data/connect_request.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// A request to open DevTools.
-class ConnectRequest {
-  /// Identifies a given application, across tabs/windows.
-  final String appId;
-
-  /// Identifies a given instance of an application, unique per tab/window.
-  final String instanceId;
-
-  /// The entrypoint for the Dart application.
-  final String entrypointPath;
-
-  ConnectRequest({
-    required this.appId,
-    required this.instanceId,
-    required this.entrypointPath,
-  });
-
-  Map<String, dynamic> toJson() => {
-    'appId': appId,
-    'instanceId': instanceId,
-    'entrypointPath': entrypointPath,
-  };
-
-  factory ConnectRequest.fromJson(Map<String, dynamic> json) {
-    return ConnectRequest(
-      appId: json['appId'] as String,
-      instanceId: json['instanceId'] as String,
-      entrypointPath: json['entrypointPath'] as String,
-    );
-  }
-}
diff --git a/dwds/lib/data/data_types.dart b/dwds/lib/data/data_types.dart
deleted file mode 100644
index 1104547..0000000
--- a/dwds/lib/data/data_types.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// 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 'package:dwds/data/utils.dart';
-
-class ConnectFailure {
-  static const type = 'ConnectFailure';
-  final int tabId;
-  final String? reason;
-
-  ConnectFailure({required this.tabId, this.reason});
-
-  List<Object?> toJson() => [
-    type,
-    'tabId',
-    tabId,
-    if (reason != null) ...['reason', reason],
-  ];
-
-  factory ConnectFailure.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return ConnectFailure(
-      tabId: json['tabId'] as int,
-      reason: json['reason'] as String?,
-    );
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is ConnectFailure &&
-          runtimeType == other.runtimeType &&
-          tabId == other.tabId &&
-          reason == other.reason;
-
-  @override
-  int get hashCode => Object.hash(tabId, reason);
-
-  @override
-  String toString() => 'ConnectFailure(tabId: $tabId, reason: $reason)';
-}
-
-class DevToolsOpener {
-  static const type = 'DevToolsOpener';
-  final bool newWindow;
-
-  DevToolsOpener({required this.newWindow});
-
-  List<Object?> toJson() => [type, 'newWindow', newWindow];
-
-  factory DevToolsOpener.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return DevToolsOpener(newWindow: json['newWindow'] as bool);
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is DevToolsOpener &&
-          runtimeType == other.runtimeType &&
-          newWindow == other.newWindow;
-
-  @override
-  int get hashCode => newWindow.hashCode;
-
-  @override
-  String toString() => 'DevToolsOpener(newWindow: $newWindow)';
-}
-
-class DevToolsUrl {
-  static const type = 'DevToolsUrl';
-  final int tabId;
-  final String url;
-
-  DevToolsUrl({required this.tabId, required this.url});
-
-  List<Object?> toJson() => [type, 'tabId', tabId, 'url', url];
-
-  factory DevToolsUrl.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return DevToolsUrl(tabId: json['tabId'] as int, url: json['url'] as String);
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is DevToolsUrl &&
-          runtimeType == other.runtimeType &&
-          tabId == other.tabId &&
-          url == other.url;
-
-  @override
-  int get hashCode => Object.hash(tabId, url);
-
-  @override
-  String toString() => 'DevToolsUrl(tabId: $tabId, url: $url)';
-}
-
-class DebugStateChange {
-  static const type = 'DebugStateChange';
-  static const startDebugging = 'start-debugging';
-  static const stopDebugging = 'stop-debugging';
-  static const failedToConnect = 'failed-to-connect';
-
-  final int tabId;
-
-  /// Can only be [startDebugging] or [stopDebugging].
-  final String newState;
-  final String? reason;
-
-  DebugStateChange({required this.tabId, required this.newState, this.reason});
-
-  List<Object?> toJson() => [
-    type,
-    'tabId',
-    tabId,
-    'newState',
-    newState,
-    if (reason != null) ...['reason', reason],
-  ];
-
-  factory DebugStateChange.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return DebugStateChange(
-      tabId: json['tabId'] as int,
-      newState: json['newState'] as String,
-      reason: json['reason'] as String?,
-    );
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is DebugStateChange &&
-          runtimeType == other.runtimeType &&
-          tabId == other.tabId &&
-          newState == other.newState &&
-          reason == other.reason;
-
-  @override
-  int get hashCode => Object.hash(tabId, newState, reason);
-
-  @override
-  String toString() =>
-      'DebugStateChange(tabId: $tabId, newState: $newState, reason: $reason)';
-}
diff --git a/dwds/lib/data/debug_event.dart b/dwds/lib/data/debug_event.dart
deleted file mode 100644
index 34f8d96..0000000
--- a/dwds/lib/data/debug_event.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2021, 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.
-
-class DebugEvent {
-  final String kind;
-  final String eventData;
-  final int timestamp;
-
-  DebugEvent({
-    required this.kind,
-    required this.eventData,
-    required this.timestamp,
-  });
-
-  factory DebugEvent.fromJson(Map<String, dynamic> json) {
-    return DebugEvent(
-      kind: json['kind'] as String,
-      eventData: json['eventData'] as String,
-      timestamp: json['timestamp'] as int,
-    );
-  }
-
-  Map<String, dynamic> toJson() {
-    return {'kind': kind, 'eventData': eventData, 'timestamp': timestamp};
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is DebugEvent &&
-          runtimeType == other.runtimeType &&
-          kind == other.kind &&
-          eventData == other.eventData &&
-          timestamp == other.timestamp;
-
-  @override
-  int get hashCode => Object.hash(kind, eventData, timestamp);
-
-  @override
-  String toString() =>
-      'DebugEvent(kind: $kind, eventData: $eventData, timestamp: $timestamp)';
-}
-
-/// A batched group of events, currently always Debugger.scriptParsed
-class BatchedDebugEvents {
-  final List<DebugEvent> events;
-
-  BatchedDebugEvents({required this.events});
-
-  factory BatchedDebugEvents.fromJson(Map<String, dynamic> json) {
-    return BatchedDebugEvents(
-      events: (json['events'] as List)
-          .map((e) => DebugEvent.fromJson(e as Map<String, dynamic>))
-          .toList(),
-    );
-  }
-
-  Map<String, dynamic> toJson() {
-    return {'events': events.map((e) => e.toJson()).toList()};
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is BatchedDebugEvents &&
-          runtimeType == other.runtimeType &&
-          _listEquals(events, other.events);
-
-  @override
-  int get hashCode => Object.hashAll(events);
-
-  @override
-  String toString() => 'BatchedDebugEvents(events: $events)';
-}
-
-bool _listEquals<T>(List<T>? a, List<T>? b) {
-  if (a == null) return b == null;
-  if (b == null || a.length != b.length) return false;
-  for (var i = 0; i < a.length; i++) {
-    if (a[i] != b[i]) return false;
-  }
-  return true;
-}
diff --git a/dwds/lib/data/debug_info.dart b/dwds/lib/data/debug_info.dart
deleted file mode 100644
index a22c6d2..0000000
--- a/dwds/lib/data/debug_info.dart
+++ /dev/null
@@ -1,137 +0,0 @@
-// 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 'package:dwds/data/utils.dart';
-
-class DebugInfo {
-  static const String type = 'DebugInfo';
-
-  final String? appEntrypointPath;
-  final String? appId;
-  final String? appInstanceId;
-  final String? appOrigin;
-  final String? appUrl;
-  final String? authUrl;
-  final String? dwdsVersion;
-  final String? extensionUrl;
-  final bool? isInternalBuild;
-  final bool? isFlutterApp;
-  final String? workspaceName;
-  final String? tabUrl;
-  final int? tabId;
-
-  const DebugInfo({
-    this.appEntrypointPath,
-    this.appId,
-    this.appInstanceId,
-    this.appOrigin,
-    this.appUrl,
-    this.authUrl,
-    this.dwdsVersion,
-    this.extensionUrl,
-    this.isInternalBuild,
-    this.isFlutterApp,
-    this.workspaceName,
-    this.tabUrl,
-    this.tabId,
-  });
-
-  /// Mimics built_value serialization for compatibility.
-  ///
-  /// Returns a list in the format:
-  /// ['DebugInfo', 'key1', value1, 'key2', value2, ...]
-  ///
-  /// Null values are omitted from the list.
-  List<Object?> toJson() => [
-    type,
-    if (appEntrypointPath != null) ...['appEntrypointPath', appEntrypointPath],
-    if (appId != null) ...['appId', appId],
-    if (appInstanceId != null) ...['appInstanceId', appInstanceId],
-    if (appOrigin != null) ...['appOrigin', appOrigin],
-    if (appUrl != null) ...['appUrl', appUrl],
-    if (authUrl != null) ...['authUrl', authUrl],
-    if (dwdsVersion != null) ...['dwdsVersion', dwdsVersion],
-    if (extensionUrl != null) ...['extensionUrl', extensionUrl],
-    if (isInternalBuild != null) ...['isInternalBuild', isInternalBuild],
-    if (isFlutterApp != null) ...['isFlutterApp', isFlutterApp],
-    if (workspaceName != null) ...['workspaceName', workspaceName],
-    if (tabUrl != null) ...['tabUrl', tabUrl],
-    if (tabId != null) ...['tabId', tabId],
-  ];
-
-  factory DebugInfo.fromJson(List<dynamic> list) {
-    final map = listToMap(list, type: type);
-
-    return DebugInfo(
-      appEntrypointPath: map['appEntrypointPath'] as String?,
-      appId: map['appId'] as String?,
-      appInstanceId: map['appInstanceId'] as String?,
-      appOrigin: map['appOrigin'] as String?,
-      appUrl: map['appUrl'] as String?,
-      authUrl: map['authUrl'] as String?,
-      dwdsVersion: map['dwdsVersion'] as String?,
-      extensionUrl: map['extensionUrl'] as String?,
-      isInternalBuild: map['isInternalBuild'] as bool?,
-      isFlutterApp: map['isFlutterApp'] as bool?,
-      workspaceName: map['workspaceName'] as String?,
-      tabUrl: map['tabUrl'] as String?,
-      tabId: map['tabId'] as int?,
-    );
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is DebugInfo &&
-          runtimeType == other.runtimeType &&
-          appEntrypointPath == other.appEntrypointPath &&
-          appId == other.appId &&
-          appInstanceId == other.appInstanceId &&
-          appOrigin == other.appOrigin &&
-          appUrl == other.appUrl &&
-          authUrl == other.authUrl &&
-          dwdsVersion == other.dwdsVersion &&
-          extensionUrl == other.extensionUrl &&
-          isInternalBuild == other.isInternalBuild &&
-          isFlutterApp == other.isFlutterApp &&
-          workspaceName == other.workspaceName &&
-          tabUrl == other.tabUrl &&
-          tabId == other.tabId;
-
-  @override
-  int get hashCode => Object.hash(
-    appEntrypointPath,
-    appId,
-    appInstanceId,
-    appOrigin,
-    appUrl,
-    authUrl,
-    dwdsVersion,
-    extensionUrl,
-    isInternalBuild,
-    isFlutterApp,
-    workspaceName,
-    tabUrl,
-    tabId,
-  );
-
-  @override
-  String toString() {
-    return 'DebugInfo { '
-        'appEntrypointPath: $appEntrypointPath, '
-        'appId: $appId, '
-        'appInstanceId: $appInstanceId, '
-        'appOrigin: $appOrigin, '
-        'appUrl: $appUrl, '
-        'authUrl: $authUrl, '
-        'dwdsVersion: $dwdsVersion, '
-        'extensionUrl: $extensionUrl, '
-        'isInternalBuild: $isInternalBuild, '
-        'isFlutterApp: $isFlutterApp, '
-        'workspaceName: $workspaceName, '
-        'tabUrl: $tabUrl, '
-        'tabId: $tabId, '
-        '}';
-  }
-}
diff --git a/dwds/lib/data/devtools_request.dart b/dwds/lib/data/devtools_request.dart
deleted file mode 100644
index 41795f2..0000000
--- a/dwds/lib/data/devtools_request.dart
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/data/utils.dart';
-
-/// A request to open DevTools.
-class DevToolsRequest {
-  static const type = 'DevToolsRequest';
-
-  /// Identifies a given application, across tabs/windows.
-  final String appId;
-
-  /// Identifies a given instance of an application, unique per tab/window.
-  final String instanceId;
-
-  /// Identifies the context in which evaluations should occur.
-  ///
-  /// Defines execution context for the debug service that connects
-  /// to chrome via the extension debugger.
-  /// Can be `null` for local debug service, which gets the execution
-  /// context from the Chrome runtime.
-  final int? contextId;
-
-  /// Belongs to the tab that requests the DevTools.
-  ///
-  /// Defines the tab being debugged for the debug service that connects
-  /// to chrome via the extension debugger.
-  /// Can be `null` for local debug service, which finds the tab with the
-  /// correct `dartAppInstanceId` automatically.
-  final String? tabUrl;
-
-  /// Designates this as a request to send back the DevTools URI instead of
-  /// opening DevTools in a new tab or window.
-  ///
-  /// Only available on requests coming from the Dart Debug Extension. Is `null`
-  /// for local debug service.
-  final bool? uriOnly;
-
-  /// Identifies the client that DWDS is attaching to.
-  ///
-  /// This could be Cider, DevTools (as a standalone app), or DevTools (embedded
-  /// in Chrome DevTools).
-  final String? client;
-
-  DevToolsRequest({
-    required this.appId,
-    required this.instanceId,
-    this.contextId,
-    this.tabUrl,
-    this.uriOnly,
-    this.client,
-  });
-
-  factory DevToolsRequest.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return DevToolsRequest(
-      appId: json['appId'] as String,
-      instanceId: json['instanceId'] as String,
-      contextId: json['contextId'] as int?,
-      tabUrl: json['tabUrl'] as String?,
-      uriOnly: json['uriOnly'] as bool?,
-      client: json['client'] as String?,
-    );
-  }
-
-  List<Object?> toJson() {
-    return [
-      type,
-      'appId',
-      appId,
-      'instanceId',
-      instanceId,
-      if (contextId != null) ...['contextId', contextId],
-      if (tabUrl != null) ...['tabUrl', tabUrl],
-      if (uriOnly != null) ...['uriOnly', uriOnly],
-      if (client != null) ...['client', client],
-    ];
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-    return other is DevToolsRequest &&
-        other.appId == appId &&
-        other.instanceId == instanceId &&
-        other.contextId == contextId &&
-        other.tabUrl == tabUrl &&
-        other.uriOnly == uriOnly &&
-        other.client == client;
-  }
-
-  @override
-  int get hashCode =>
-      Object.hash(appId, instanceId, contextId, tabUrl, uriOnly, client);
-
-  @override
-  String toString() {
-    return 'DevToolsRequest { '
-        'appId: $appId, '
-        'instanceId: $instanceId, '
-        'contextId: $contextId, '
-        'tabUrl: $tabUrl, '
-        'uriOnly: $uriOnly, '
-        'client: $client, '
-        '}';
-  }
-}
-
-/// A response to a [DevToolsRequest].
-class DevToolsResponse {
-  static const type = 'DevToolsResponse';
-  final bool success;
-  final bool promptExtension;
-  final String? error;
-
-  DevToolsResponse({
-    required this.success,
-    required this.promptExtension,
-    this.error,
-  });
-
-  factory DevToolsResponse.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return DevToolsResponse(
-      success: json['success'] as bool,
-      promptExtension: json['promptExtension'] as bool,
-      error: json['error'] as String?,
-    );
-  }
-
-  List<Object?> toJson() {
-    return [
-      type,
-      'success',
-      success,
-      'promptExtension',
-      promptExtension,
-      if (error != null) ...['error', error],
-    ];
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-    return other is DevToolsResponse &&
-        other.success == success &&
-        other.promptExtension == promptExtension &&
-        other.error == error;
-  }
-
-  @override
-  int get hashCode => Object.hash(success, promptExtension, error);
-
-  @override
-  String toString() {
-    return 'DevToolsResponse { '
-        'success: $success, '
-        'promptExtension: $promptExtension, '
-        'error: $error }';
-  }
-}
diff --git a/dwds/lib/data/error_response.dart b/dwds/lib/data/error_response.dart
deleted file mode 100644
index a8224b9..0000000
--- a/dwds/lib/data/error_response.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2019, 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.
-
-class ErrorResponse {
-  final String error;
-  final String stackTrace;
-
-  ErrorResponse({required this.error, required this.stackTrace});
-
-  factory ErrorResponse.fromJson(Map<String, dynamic> json) {
-    return ErrorResponse(
-      error: json['error'] as String,
-      stackTrace: json['stackTrace'] as String,
-    );
-  }
-
-  Map<String, dynamic> toJson() {
-    return {'error': error, 'stackTrace': stackTrace};
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-    return other is ErrorResponse &&
-        other.error == error &&
-        other.stackTrace == stackTrace;
-  }
-
-  @override
-  int get hashCode => Object.hash(error, stackTrace);
-
-  @override
-  String toString() => 'ErrorResponse(error: $error, stackTrace: $stackTrace)';
-}
diff --git a/dwds/lib/data/extension_request.dart b/dwds/lib/data/extension_request.dart
deleted file mode 100644
index cf87d90..0000000
--- a/dwds/lib/data/extension_request.dart
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright (c) 2019, 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:convert';
-
-import 'package:collection/collection.dart';
-import 'package:dwds/data/utils.dart';
-
-const authenticationPath = '\$dwdsExtensionAuthentication';
-
-/// A request to run a command in the Dart Debug Extension.
-class ExtensionRequest {
-  static const type = 'ExtensionRequest';
-
-  /// Used to associate a request with an [ExtensionResponse].
-  final int id;
-
-  final String command;
-
-  /// Contains JSON-encoded parameters, if available.
-  final String? commandParams;
-
-  ExtensionRequest({
-    required this.id,
-    required this.command,
-    this.commandParams,
-  });
-
-  factory ExtensionRequest.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return ExtensionRequest(
-      id: json['id'] as int,
-      command: json['command'] as String,
-      commandParams: json['commandParams'] as String?,
-    );
-  }
-
-  List<Object?> toJson() {
-    return [
-      type,
-      'id',
-      id,
-      'command',
-      command,
-      if (commandParams != null) ...['commandParams', commandParams],
-    ];
-  }
-
-  @override
-  String toString() =>
-      'ExtensionRequest { id=$id, command=$command, '
-      'commandParams=$commandParams }';
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is ExtensionRequest &&
-          runtimeType == other.runtimeType &&
-          id == other.id &&
-          command == other.command &&
-          commandParams == other.commandParams;
-
-  @override
-  int get hashCode => Object.hash(id, command, commandParams);
-}
-
-/// A response to an [ExtensionRequest].
-class ExtensionResponse {
-  static const type = 'ExtensionResponse';
-
-  /// Used to associate a response with an [ExtensionRequest].
-  final int id;
-
-  final bool success;
-
-  /// Contains a JSON-encoded payload.
-  final String result;
-
-  /// Contains an error, if available.
-  final String? error;
-
-  ExtensionResponse({
-    required this.id,
-    required this.success,
-    required this.result,
-    this.error,
-  });
-
-  factory ExtensionResponse.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return ExtensionResponse(
-      id: json['id'] as int,
-      success: json['success'] as bool,
-      result: json['result'] as String,
-      error: json['error'] as String?,
-    );
-  }
-
-  List<Object?> toJson() {
-    return [
-      type,
-      'id',
-      id,
-      'success',
-      success,
-      'result',
-      result,
-      if (error != null) ...['error', error],
-    ];
-  }
-
-  @override
-  String toString() =>
-      'ExtensionResponse { id=$id, success=$success, '
-      'result=$result, error=$error }';
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is ExtensionResponse &&
-          runtimeType == other.runtimeType &&
-          id == other.id &&
-          success == other.success &&
-          result == other.result &&
-          error == other.error;
-
-  @override
-  int get hashCode => Object.hash(id, success, result, error);
-}
-
-/// An event for Dart Debug Extension.
-class ExtensionEvent {
-  static const type = 'ExtensionEvent';
-
-  /// Contains a JSON-encoded payload.
-  final String params;
-
-  final String method;
-
-  ExtensionEvent({required this.params, required this.method});
-
-  factory ExtensionEvent.fromJson(List<dynamic> jsonList) {
-    final firstElement = jsonList.isEmpty ? null : jsonList.first;
-    final json = listToMap(jsonList, type: firstElement == type ? type : null);
-    final params = json['params'];
-    return ExtensionEvent(
-      params: params is String ? params : jsonEncode(params),
-      method: json['method'] as String,
-    );
-  }
-
-  List<Object?> toJson() {
-    return [type, 'params', params, 'method', method];
-  }
-
-  @override
-  String toString() => 'ExtensionEvent { params=$params, method=$method }';
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is ExtensionEvent &&
-          runtimeType == other.runtimeType &&
-          params == other.params &&
-          method == other.method;
-
-  @override
-  int get hashCode => Object.hash(params, method);
-}
-
-/// A batched group of events, currently always Debugger.scriptParsed
-class BatchedEvents {
-  static const type = 'BatchedEvents';
-  final List<ExtensionEvent> events;
-
-  BatchedEvents({required this.events});
-
-  factory BatchedEvents.fromJson(List<dynamic> jsonList) {
-    final json = listToMap(jsonList, type: type);
-    return BatchedEvents(
-      events: (json['events'] as List)
-          .map((e) => ExtensionEvent.fromJson(e as List))
-          .toList(),
-    );
-  }
-
-  List<Object?> toJson() {
-    return [type, 'events', events.map((e) => e.toJson()).toList()];
-  }
-
-  @override
-  String toString() => 'BatchedEvents { events=$events }';
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) ||
-      other is BatchedEvents &&
-          runtimeType == other.runtimeType &&
-          const ListEquality<ExtensionEvent>().equals(events, other.events);
-
-  @override
-  int get hashCode => Object.hashAll(events);
-}
diff --git a/dwds/lib/data/hot_reload_request.dart b/dwds/lib/data/hot_reload_request.dart
deleted file mode 100644
index 048e482..0000000
--- a/dwds/lib/data/hot_reload_request.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2025, 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.
-
-/// A request to hot reload the application.
-class HotReloadRequest {
-  /// A unique identifier for this request.
-  final String id;
-
-  HotReloadRequest({required this.id});
-
-  /// Creates a [HotReloadRequest] from a JSON map.
-  factory HotReloadRequest.fromJson(Map<String, dynamic> json) {
-    return HotReloadRequest(id: json['id'] as String);
-  }
-
-  /// Converts this [HotReloadRequest] to a JSON map.
-  Map<String, dynamic> toJson() => {'id': id};
-
-  @override
-  bool operator ==(Object other) =>
-      identical(other, this) || other is HotReloadRequest && id == other.id;
-
-  @override
-  int get hashCode => id.hashCode;
-
-  @override
-  String toString() => 'HotReloadRequest(id: $id)';
-}
diff --git a/dwds/lib/data/hot_reload_response.dart b/dwds/lib/data/hot_reload_response.dart
deleted file mode 100644
index e4fd417..0000000
--- a/dwds/lib/data/hot_reload_response.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2025, 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.
-
-/// A response to a hot reload request.
-class HotReloadResponse {
-  /// The unique identifier matching the request.
-  final String id;
-
-  /// Whether the hot reload succeeded on the client.
-  final bool success;
-
-  /// An optional error message if success is false.
-  final String? errorMessage;
-
-  HotReloadResponse({
-    required this.id,
-    required this.success,
-    this.errorMessage,
-  });
-
-  /// Creates a [HotReloadResponse] from a JSON map.
-  factory HotReloadResponse.fromJson(Map<String, dynamic> json) {
-    return HotReloadResponse(
-      id: json['id'] as String,
-      success: json['success'] as bool,
-      errorMessage: json['error'] as String?,
-    );
-  }
-
-  /// Converts this [HotReloadResponse] to a JSON map.
-  Map<String, dynamic> toJson() => {
-    'id': id,
-    'success': success,
-    if (errorMessage != null) 'error': errorMessage,
-  };
-
-  @override
-  bool operator ==(Object other) =>
-      identical(other, this) ||
-      other is HotReloadResponse &&
-          id == other.id &&
-          success == other.success &&
-          errorMessage == other.errorMessage;
-
-  @override
-  int get hashCode => Object.hash(id, success, errorMessage);
-
-  @override
-  String toString() =>
-      'HotReloadResponse(id: $id, success: $success, '
-      'errorMessage: $errorMessage)';
-}
diff --git a/dwds/lib/data/hot_restart_request.dart b/dwds/lib/data/hot_restart_request.dart
deleted file mode 100644
index bd2f9a4..0000000
--- a/dwds/lib/data/hot_restart_request.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2025, 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.
-
-/// A request to hot restart the application.
-class HotRestartRequest {
-  /// A unique identifier for this request.
-  final String id;
-
-  HotRestartRequest({required this.id});
-
-  /// Creates a [HotRestartRequest] from a JSON map.
-  factory HotRestartRequest.fromJson(Map<String, dynamic> json) {
-    return HotRestartRequest(id: json['id'] as String);
-  }
-
-  /// Converts this [HotRestartRequest] to a JSON map.
-  Map<String, dynamic> toJson() => {'id': id};
-
-  @override
-  bool operator ==(Object other) =>
-      identical(other, this) || other is HotRestartRequest && id == other.id;
-
-  @override
-  int get hashCode => id.hashCode;
-
-  @override
-  String toString() => 'HotRestartRequest(id: $id)';
-}
diff --git a/dwds/lib/data/hot_restart_response.dart b/dwds/lib/data/hot_restart_response.dart
deleted file mode 100644
index fd4b86f..0000000
--- a/dwds/lib/data/hot_restart_response.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2025, 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.
-
-/// A response to a hot restart request.
-class HotRestartResponse {
-  /// The unique identifier matching the request.
-  final String id;
-
-  /// Whether the hot restart succeeded on the client.
-  final bool success;
-
-  /// An optional error message if success is false.
-  final String? errorMessage;
-
-  HotRestartResponse({
-    required this.id,
-    required this.success,
-    this.errorMessage,
-  });
-
-  factory HotRestartResponse.fromJson(Map<String, dynamic> json) =>
-      HotRestartResponse(
-        id: json['id'] as String,
-        success: json['success'] as bool,
-        errorMessage: json['error'] as String?,
-      );
-
-  Map<String, dynamic> toJson() => {
-    'id': id,
-    'success': success,
-    if (errorMessage != null) 'error': errorMessage,
-  };
-}
diff --git a/dwds/lib/data/isolate_events.dart b/dwds/lib/data/isolate_events.dart
deleted file mode 100644
index 5d8efd3..0000000
--- a/dwds/lib/data/isolate_events.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// An event that signifies the main isolate has exited.
-class IsolateExit {
-  IsolateExit();
-
-  factory IsolateExit.fromJson(Map<String, dynamic> _) => IsolateExit();
-
-  Map<String, dynamic> toJson() => {};
-
-  @override
-  String toString() => 'IsolateExit{}';
-}
-
-/// An event that signifies the main isolate has started.
-class IsolateStart {
-  IsolateStart();
-
-  factory IsolateStart.fromJson(Map<String, dynamic> _) => IsolateStart();
-
-  Map<String, dynamic> toJson() => {};
-
-  @override
-  String toString() => 'IsolateStart{}';
-}
diff --git a/dwds/lib/data/ping_request.dart b/dwds/lib/data/ping_request.dart
deleted file mode 100644
index 66ee133..0000000
--- a/dwds/lib/data/ping_request.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2026, 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.
-
-/// A ping request to check client connection.
-class PingRequest {
-  PingRequest();
-
-  Map<String, dynamic> toJson() => {};
-
-  factory PingRequest.fromJson(Map<String, dynamic> json) {
-    return PingRequest();
-  }
-
-  @override
-  bool operator ==(Object other) =>
-      identical(this, other) || other is PingRequest;
-
-  @override
-  int get hashCode => 0;
-
-  @override
-  String toString() => 'PingRequest';
-}
diff --git a/dwds/lib/data/register_event.dart b/dwds/lib/data/register_event.dart
deleted file mode 100644
index d0f40e2..0000000
--- a/dwds/lib/data/register_event.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2021, 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.
-
-class RegisterEvent {
-  final String eventData;
-  final int timestamp;
-
-  RegisterEvent({required this.eventData, required this.timestamp});
-
-  factory RegisterEvent.fromJson(Map<String, dynamic> json) {
-    return RegisterEvent(
-      eventData: json['eventData'] as String,
-      timestamp: json['timestamp'] as int,
-    );
-  }
-
-  Map<String, dynamic> toJson() {
-    return {'eventData': eventData, 'timestamp': timestamp};
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-    return other is RegisterEvent &&
-        other.eventData == eventData &&
-        other.timestamp == timestamp;
-  }
-
-  @override
-  int get hashCode => Object.hash(eventData, timestamp);
-
-  @override
-  String toString() =>
-      'RegisterEvent(eventData: $eventData, timestamp: $timestamp)';
-}
diff --git a/dwds/lib/data/run_request.dart b/dwds/lib/data/run_request.dart
deleted file mode 100644
index 6865aa4..0000000
--- a/dwds/lib/data/run_request.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// A request to run the application's main method.
-class RunRequest {
-  RunRequest();
-
-  Map<String, dynamic> toJson() => {};
-
-  factory RunRequest.fromJson(Map<String, dynamic> json) {
-    return RunRequest();
-  }
-}
diff --git a/dwds/lib/data/service_extension_request.dart b/dwds/lib/data/service_extension_request.dart
deleted file mode 100644
index dd9e4c2..0000000
--- a/dwds/lib/data/service_extension_request.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2025, the Dart project authors. All rights reserved.
-// Defines the request for service extension calls over WebSocket.
-
-class ServiceExtensionRequest {
-  final String id;
-  final String method;
-  final Map<String, dynamic> args;
-
-  ServiceExtensionRequest({
-    required this.id,
-    required this.method,
-    Map<String, dynamic>? args,
-  }) : args = args ?? const <String, dynamic>{};
-
-  factory ServiceExtensionRequest.fromArgs({
-    required String id,
-    required String method,
-    required Map<String, dynamic> args,
-  }) => ServiceExtensionRequest(id: id, method: method, args: args);
-
-  factory ServiceExtensionRequest.fromJson(Map<String, dynamic> json) =>
-      ServiceExtensionRequest(
-        id: json['id'] as String,
-        method: json['method'] as String,
-        args:
-            (json['args'] as Map?)?.cast<String, dynamic>() ??
-            const <String, dynamic>{},
-      );
-
-  Map<String, dynamic> toJson() => {'id': id, 'method': method, 'args': args};
-}
diff --git a/dwds/lib/data/service_extension_response.dart b/dwds/lib/data/service_extension_response.dart
deleted file mode 100644
index f2013aa..0000000
--- a/dwds/lib/data/service_extension_response.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2025, the Dart project authors. All rights reserved.
-// Defines the response for service extension calls over WebSocket.
-
-class ServiceExtensionResponse {
-  final String id;
-  final bool success;
-  final Map<String, dynamic>? result;
-  final int? errorCode;
-  final String? errorMessage;
-
-  ServiceExtensionResponse({
-    required this.id,
-    required this.success,
-    this.result,
-    this.errorCode,
-    this.errorMessage,
-  });
-
-  factory ServiceExtensionResponse.fromResult({
-    required String id,
-    required bool success,
-    Map<String, dynamic>? result,
-    int? errorCode,
-    String? errorMessage,
-  }) => ServiceExtensionResponse(
-    id: id,
-    success: success,
-    result: result,
-    errorCode: errorCode,
-    errorMessage: errorMessage,
-  );
-
-  factory ServiceExtensionResponse.fromJson(Map<String, dynamic> json) =>
-      ServiceExtensionResponse(
-        id: json['id'] as String,
-        success: json['success'] as bool,
-        result: (json['result'] as Map?)?.cast<String, dynamic>(),
-        errorCode: json['errorCode'] as int?,
-        errorMessage: json['errorMessage'] as String?,
-      );
-
-  Map<String, dynamic> toJson() => {
-    'id': id,
-    'success': success,
-    if (result != null) 'result': result,
-    if (errorCode != null) 'errorCode': errorCode,
-    if (errorMessage != null) 'errorMessage': errorMessage,
-  };
-}
diff --git a/dwds/lib/data/utils.dart b/dwds/lib/data/utils.dart
deleted file mode 100644
index ff543a4..0000000
--- a/dwds/lib/data/utils.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2026, 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.
-
-/// Converts a list of key-value pairs into a map.
-///
-/// The list is expected to be in the format:
-/// ['key1', value1, 'key2', value2, ...]
-///
-/// Or, if [type] is provided:
-/// ['Type', 'key1', value1, 'key2', value2, ...]
-///
-/// If [type] is provided, the first element of the list must match [type],
-/// and the key-value pairs start from the second element.
-Map<String, dynamic> listToMap(List<dynamic> list, {String? type}) {
-  var startIndex = 0;
-  if (type != null) {
-    if (list.isEmpty || list.first != type) {
-      throw FormatException('Expected "$type" as first element', list);
-    }
-    startIndex = 1;
-  }
-
-  if ((list.length - startIndex).isOdd) {
-    throw FormatException(
-      'Expected an even number of elements'
-      '${type != null ? " after $type" : ""}',
-      list,
-    );
-  }
-  final map = <String, dynamic>{};
-  var i = startIndex;
-  while (i < list.length - 1) {
-    final key = list[i] as String;
-    final value = list[i + 1];
-    map[key] = value;
-    i += 2;
-  }
-  return map;
-}
diff --git a/dwds/lib/dwds.dart b/dwds/lib/dwds.dart
deleted file mode 100644
index 97c735f..0000000
--- a/dwds/lib/dwds.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2019, 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.
-
-export 'dart_web_debug_service.dart' show ConnectionProvider, Dwds;
-export 'src/config/tool_configuration.dart'
-    show
-        AppMetadata,
-        DartDevelopmentServiceConfiguration,
-        DebugSettings,
-        DevToolsLauncher,
-        ToolConfiguration,
-        UrlEncoder;
-export 'src/connections/app_connection.dart' show AppConnection;
-export 'src/connections/debug_connection.dart' show DebugConnection;
-export 'src/debugging/metadata/provider.dart'
-    show AbsoluteImportUriException, MetadataProvider;
-export 'src/events.dart' show DwdsEvent;
-export 'src/handlers/dev_handler.dart' show AppConnectionException;
-export 'src/handlers/socket_connections.dart';
-export 'src/loaders/build_runner_strategy_provider.dart'
-    show
-        BuildRunnerDdcLibraryBundleStrategyProvider,
-        BuildRunnerRequireStrategyProvider;
-export 'src/loaders/ddc.dart' show DdcStrategy;
-export 'src/loaders/frontend_server_strategy_provider.dart'
-    show
-        FrontendServerDdcLibraryBundleStrategyProvider,
-        FrontendServerDdcStrategyProvider,
-        FrontendServerRequireStrategyProvider;
-export 'src/loaders/require.dart' show RequireStrategy;
-export 'src/loaders/strategy.dart'
-    show
-        BuildSettings,
-        LoadStrategy,
-        ReloadConfiguration,
-        ReloadableLoadStrategy;
-export 'src/readers/asset_reader.dart' show AssetReader, PackageUriMapper;
-export 'src/readers/frontend_server_asset_reader.dart'
-    show FrontendServerAssetReader;
-export 'src/readers/proxy_server_asset_reader.dart' show ProxyServerAssetReader;
-export 'src/servers/devtools.dart';
-export 'src/services/chrome/chrome_debug_exception.dart'
-    show ChromeDebugException;
-export 'src/services/expression_compiler.dart'
-    show
-        CompilerOptions,
-        ExpressionCompilationResult,
-        ExpressionCompiler,
-        ModuleInfo;
-export 'src/services/expression_compiler_service.dart'
-    show ExpressionCompilerService;
-export 'src/utilities/ddc_names.dart';
-export 'src/utilities/sdk_configuration.dart'
-    show SdkConfiguration, SdkConfigurationProvider, SdkLayout;
diff --git a/dwds/lib/expression_compiler.dart b/dwds/lib/expression_compiler.dart
deleted file mode 100644
index d020be8..0000000
--- a/dwds/lib/expression_compiler.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-export 'src/services/expression_compiler.dart'
-    show
-        CompilerOptions,
-        ExpressionCompilationResult,
-        ExpressionCompiler,
-        ModuleFormat,
-        ModuleInfo;
diff --git a/dwds/lib/sdk_configuration.dart b/dwds/lib/sdk_configuration.dart
deleted file mode 100644
index b4608c7..0000000
--- a/dwds/lib/sdk_configuration.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2023, 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.
-
-export 'src/utilities/sdk_configuration.dart'
-    show
-        DefaultSdkConfigurationProvider,
-        SdkConfiguration,
-        SdkConfigurationProvider,
-        SdkLayout;
diff --git a/dwds/lib/shared/README.md b/dwds/lib/shared/README.md
deleted file mode 100644
index c195ebb..0000000
--- a/dwds/lib/shared/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Shared directory
-
-The files in this directory are shared between DWDS and external packages,
-such as the [Dart Debug Extension](https://dart.dev/to/web-debug-extension).
diff --git a/dwds/lib/shared/batched_stream.dart b/dwds/lib/shared/batched_stream.dart
deleted file mode 100644
index b44ce2c..0000000
--- a/dwds/lib/shared/batched_stream.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// 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:async';
-import 'dart:math';
-
-import 'package:async/async.dart';
-import 'package:dwds/src/utilities/shared.dart';
-
-/// Stream controller allowing to batch events.
-class BatchedStreamController<T> {
-  static const _defaultBatchDelayMilliseconds = 1000;
-
-  final int _checkDelayMilliseconds;
-  final int _batchDelayMilliseconds;
-
-  final StreamController<T> _inputController;
-  late StreamQueue<T> _inputQueue;
-
-  final StreamController<List<T>> _outputController;
-  final Completer<bool> _completer = Completer<bool>();
-
-  /// Create batched stream controller.
-  ///
-  /// Collects events from input [sink] and emits them in batches to the
-  /// output [stream] every [delay] milliseconds. Keeps the original order.
-  BatchedStreamController({int delay = _defaultBatchDelayMilliseconds})
-    : _batchDelayMilliseconds = delay,
-      _checkDelayMilliseconds = max(delay ~/ 10, 1),
-      _inputController = StreamController<T>(),
-      _outputController = StreamController<List<T>>() {
-    _inputQueue = StreamQueue<T>(_inputController.stream);
-    safeUnawaited(_batchAndSendEvents());
-  }
-
-  /// Sink collecting events.
-  StreamSink<T> get sink => _inputController.sink;
-
-  /// Output stream of batch events.
-  Stream<List<T>> get stream => _outputController.stream;
-
-  /// Close the controller.
-  Future<dynamic> close() {
-    safeUnawaited(_inputController.close());
-    return _completer.future.then((value) => _outputController.close());
-  }
-
-  /// Send events to the output in a batch every [_batchDelayMilliseconds].
-  Future<void> _batchAndSendEvents() async {
-    final duration = Duration(milliseconds: _checkDelayMilliseconds);
-    final buffer = <T>[];
-
-    // Batch events every `_batchDelayMilliseconds`.
-    //
-    // Note that events might arrive at random intervals, so collecting
-    // a predetermined number of events to send in a batch might delay
-    // the batch indefinitely.  Instead, check for new events every
-    // `_checkDelayMilliseconds` to make sure batches are sent in regular
-    // intervals.
-    var lastSendTime = DateTime.now().millisecondsSinceEpoch;
-    while (await _hasEventOrTimeOut(duration)) {
-      if (await _hasEventDuring(duration)) {
-        buffer.add(await _inputQueue.next);
-      }
-
-      final now = DateTime.now().millisecondsSinceEpoch;
-      if (now > lastSendTime + _batchDelayMilliseconds) {
-        lastSendTime = now;
-        if (buffer.isNotEmpty) {
-          _outputController.sink.add(List.of(buffer));
-          buffer.clear();
-        }
-      }
-    }
-
-    if (buffer.isNotEmpty) {
-      _outputController.sink.add(List.of(buffer));
-    }
-    _completer.complete(true);
-  }
-
-  Future<bool> _hasEventOrTimeOut(Duration duration) =>
-      _inputQueue.hasNext.timeout(duration, onTimeout: () => true);
-
-  Future<bool> _hasEventDuring(Duration duration) =>
-      _inputQueue.hasNext.timeout(duration, onTimeout: () => false);
-}
diff --git a/dwds/lib/src/config/tool_configuration.dart b/dwds/lib/src/config/tool_configuration.dart
deleted file mode 100644
index 37d0f83..0000000
--- a/dwds/lib/src/config/tool_configuration.dart
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/servers/devtools.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-
-/// Configuration about the app, debug settings, and file system.
-///
-/// This is set by the code runner and passed to DWDS on start up.
-class ToolConfiguration {
-  final LoadStrategy loadStrategy;
-  final DebugSettings debugSettings;
-  final AppMetadata appMetadata;
-
-  const ToolConfiguration({
-    required this.loadStrategy,
-    required this.debugSettings,
-    required this.appMetadata,
-  });
-}
-
-/// The tool configuration for the connected app.
-///
-/// TODO(elliette): Consider making this final (would require updating tests
-/// that currently depend on changing the configuration between test cases).
-late ToolConfiguration _globalToolConfiguration;
-set globalToolConfiguration(ToolConfiguration configuration) =>
-    _globalToolConfiguration = configuration;
-ToolConfiguration get globalToolConfiguration => _globalToolConfiguration;
-
-/// Metadata for the connected app.
-///
-/// These are set by the code runner and passed to DWDS on start up.
-class AppMetadata {
-  final String hostname;
-  final bool isInternalBuild;
-  final String? workspaceName;
-  final String? codeRunner;
-
-  const AppMetadata({
-    this.hostname = 'localhost',
-    this.isInternalBuild = false,
-    this.workspaceName,
-    this.codeRunner,
-  });
-}
-
-typedef UrlEncoder = Future<String> Function(String url);
-
-typedef DevToolsLauncher = Future<DevTools> Function(String hostname);
-
-class DartDevelopmentServiceConfiguration {
-  const DartDevelopmentServiceConfiguration({
-    this.enable = true,
-    this.port,
-    this.serveDevTools = true,
-    this.devToolsServerAddress,
-    this.appName,
-    this.dartExecutable,
-  });
-
-  final bool enable;
-  final int? port;
-  final bool serveDevTools;
-  final Uri? devToolsServerAddress;
-  final String? appName;
-  final String? dartExecutable;
-}
-
-/// Debug settings for the connected app.
-///
-/// These are set by the code runner and passed to DWDS on start up.
-class DebugSettings {
-  final bool enableDebugging;
-  final bool enableDebugExtension;
-  final bool useSseForDebugProxy;
-  final bool useSseForDebugBackend;
-  final bool useSseForInjectedClient;
-
-  @Deprecated('Use ddsConfiguration instead.')
-  final bool spawnDds;
-  @Deprecated('Use ddsConfiguration instead.')
-  final int? ddsPort;
-  final bool enableDevToolsLaunch;
-  final bool launchDevToolsInNewWindow;
-  final bool emitDebugEvents;
-  @Deprecated(
-    'Use ddsConfigurationInstead. DevTools will eventually only be '
-    'served via DDS.',
-  )
-  final DevToolsLauncher? devToolsLauncher;
-  final ExpressionCompiler? expressionCompiler;
-  final UrlEncoder? urlEncoder;
-  final DartDevelopmentServiceConfiguration ddsConfiguration;
-  final Duration? sseIgnoreDisconnect;
-
-  const DebugSettings({
-    this.enableDebugging = true,
-    this.enableDebugExtension = false,
-    this.useSseForDebugProxy = true,
-    this.useSseForDebugBackend = true,
-    this.useSseForInjectedClient = true,
-    @Deprecated('Use ddsConfiguration instead.') this.spawnDds = true,
-    @Deprecated('Use ddsConfiguration instead.') this.ddsPort,
-    this.enableDevToolsLaunch = true,
-    this.launchDevToolsInNewWindow = true,
-    this.emitDebugEvents = true,
-    @Deprecated(
-      'Use ddsConfigurationInstead. DevTools will eventually only be '
-      'served via DDS.',
-    )
-    this.devToolsLauncher,
-    this.expressionCompiler,
-    this.urlEncoder,
-    this.ddsConfiguration = const DartDevelopmentServiceConfiguration(),
-    this.sseIgnoreDisconnect,
-  });
-}
diff --git a/dwds/lib/src/connections/app_connection.dart b/dwds/lib/src/connections/app_connection.dart
deleted file mode 100644
index 8903904..0000000
--- a/dwds/lib/src/connections/app_connection.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/data/connect_request.dart';
-import 'package:dwds/data/hot_restart_request.dart';
-import 'package:dwds/data/run_request.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/utilities/shared.dart';
-
-/// A connection between the application loaded in the browser and DWDS.
-class AppConnection {
-  /// The initial connection request sent from the application in the browser.
-  final ConnectRequest request;
-  final _startedCompleter = Completer<void>();
-  final _doneCompleter = Completer<void>();
-  final SocketConnection _connection;
-  final Future<void> _readyToRunMain;
-
-  bool get hasStarted => _startedCompleter.isCompleted;
-
-  AppConnection(this.request, this._connection, this._readyToRunMain) {
-    safeUnawaited(_connection.sink.done.then((v) => _doneCompleter.complete()));
-  }
-
-  bool get isInKeepAlivePeriod => _connection.isInKeepAlivePeriod;
-  void shutDown() => _connection.shutdown();
-  bool get isStarted => _startedCompleter.isCompleted;
-  Future<void> get onStart => _startedCompleter.future;
-  bool get isDone => _doneCompleter.isCompleted;
-  Future<void> get onDone => _doneCompleter.future;
-
-  void runMain() {
-    if (_startedCompleter.isCompleted) {
-      throw StateError('Main has already started.');
-    }
-
-    safeUnawaited(_runMain());
-  }
-
-  Future<void> _runMain() async {
-    await _readyToRunMain;
-    _connection.sink.add(jsonEncode(['RunRequest', RunRequest().toJson()]));
-    _startedCompleter.complete();
-  }
-
-  /// The request to restart when no debugger attached.
-  ///
-  /// In this case, there's no need to block main execution until the debugger
-  /// resends breakpoints.
-  void hotRestart(HotRestartRequest request) =>
-      _connection.sink.add(jsonEncode(['HotRestartRequest', request.toJson()]));
-}
diff --git a/dwds/lib/src/connections/debug_connection.dart b/dwds/lib/src/connections/debug_connection.dart
deleted file mode 100644
index 9cc9e24..0000000
--- a/dwds/lib/src/connections/debug_connection.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/src/services/app_debug_services.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:vm_service/vm_service.dart';
-
-/// A debug connection between the application in the browser and DWDS.
-///
-/// Supports debugging your running application through the Dart VM Service
-/// Protocol.
-class DebugConnection {
-  final AppDebugServices _appDebugServices;
-  final _onDoneCompleter = Completer<void>();
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  DebugConnection(this._appDebugServices) {
-    // Only setup Chrome-specific close handling if we have a ChromeProxyService
-    final proxyService = _appDebugServices.proxyService;
-    if (proxyService is ChromeProxyService) {
-      proxyService.remoteDebugger.onClose.first.then((_) => close());
-    }
-  }
-
-  /// The port of the host Dart VM Service.
-  int get port => _appDebugServices.debugService.port;
-
-  /// The endpoint of the Dart VM Service.
-  String get uri => _appDebugServices.debugService.uri;
-
-  /// The endpoint of the Dart Development Service (DDS).
-  String? get ddsUri => _appDebugServices.ddsUri?.toString();
-
-  /// The endpoint of the Dart DevTools instance.
-  String? get devToolsUri => _appDebugServices.devToolsUri?.toString();
-
-  /// The endpoint of the Dart Tooling Daemon (DTD).
-  String? get dtdUri => _appDebugServices.dtdUri?.toString();
-
-  /// A client of the Dart VM Service with DWDS specific extensions.
-  VmService get vmService => _appDebugServices.dwdsVmClient.client;
-
-  Future<void> close() => _closed ??= () async {
-    final proxyService = _appDebugServices.proxyService;
-    if (proxyService is ChromeProxyService) {
-      await proxyService.remoteDebugger.close();
-    }
-    await _appDebugServices.close();
-    _onDoneCompleter.complete();
-  }();
-
-  Future<void> get onDone => _onDoneCompleter.future;
-}
-
-/// [ChromeProxyService] of a [DebugConnection] for internal use only.
-ChromeProxyService fetchChromeProxyService(DebugConnection debugConnection) {
-  final service = debugConnection._appDebugServices.proxyService;
-  if (service is ChromeProxyService) {
-    return service;
-  }
-  throw StateError('ChromeProxyService not available in this debug connection');
-}
diff --git a/dwds/lib/src/debugging/chrome_inspector.dart b/dwds/lib/src/debugging/chrome_inspector.dart
deleted file mode 100644
index ec10b77..0000000
--- a/dwds/lib/src/debugging/chrome_inspector.dart
+++ /dev/null
@@ -1,681 +0,0 @@
-// Copyright (c) 2019, 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:math' as math;
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/classes.dart';
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/debugging/instance.dart';
-import 'package:dwds/src/debugging/libraries.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/utilities/conversions.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/domain.dart';
-import 'package:dwds/src/utilities/objects.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// An inspector for a running Dart application contained in the
-/// [WipConnection].
-///
-/// Provides information about currently loaded scripts and objects and support
-/// for eval.
-class ChromeAppInspector extends AppInspector {
-  final _logger = Logger('AppInspector');
-
-  final RemoteDebugger remoteDebugger;
-  final ExecutionContext _executionContext;
-
-  @override
-  late final ChromeLibraryHelper libraryHelper = ChromeLibraryHelper(this);
-
-  late ChromeAppClassHelper _classHelper;
-  late ChromeAppInstanceHelper _instanceHelper;
-
-  final AssetReader _assetReader;
-  final Locations _locations;
-
-  /// JavaScript expression that evaluates to the Dart stack trace mapper.
-  static const stackTraceMapperExpression = '\$dartStackTraceUtility.mapper';
-
-  /// Regex used to extract the message from an exception description.
-  static final exceptionMessageRegex = RegExp(r'^.*$', multiLine: true);
-
-  /// Regex used to extract a stack trace line from the exception description.
-  static final stackTraceLineRegex = RegExp(r'^\s*at\s.*$', multiLine: true);
-
-  ChromeAppInspector._(
-    super.appConnection,
-    super.isolate,
-    this.remoteDebugger,
-    this._assetReader,
-    this._locations,
-    super.root,
-    this._executionContext,
-  );
-
-  /// Reset all caches and recompute any mappings.
-  ///
-  /// Should be called across hot reloads with a valid [ModifiedModuleReport].
-  @override
-  Future<void> initialize({ModifiedModuleReport? modifiedModuleReport}) async {
-    await super.initialize(modifiedModuleReport: modifiedModuleReport);
-
-    // TODO(srujzs): We can invalidate these in a smarter way instead of
-    // reinitializing when doing a hot reload, but these helpers recompute info
-    // on demand later and therefore are not in the critical path.
-    _classHelper = ChromeAppClassHelper(this);
-    _instanceHelper = ChromeAppInstanceHelper(this);
-
-    // Populate the extension RPCs in the isolate.
-    await getExtensionRpcs();
-  }
-
-  static Future<ChromeAppInspector> create(
-    AppConnection appConnection,
-    RemoteDebugger remoteDebugger,
-    AssetReader assetReader,
-    Locations locations,
-    String root,
-    Debugger debugger,
-    ExecutionContext executionContext,
-  ) async {
-    final id = createId();
-    final time = DateTime.now().millisecondsSinceEpoch;
-    final name = 'main()';
-    final isolate = Isolate(
-      id: id,
-      number: id,
-      name: name,
-      startTime: time,
-      runnable: true,
-      pauseOnExit: false,
-      pauseEvent: Event(
-        kind: EventKind.kPauseStart,
-        timestamp: time,
-        isolate: IsolateRef(
-          id: id,
-          name: name,
-          number: id,
-          isSystemIsolate: false,
-        ),
-      ),
-      livePorts: 0,
-      libraries: [],
-      breakpoints: [],
-      exceptionPauseMode: debugger.pauseState,
-      isSystemIsolate: false,
-      isolateFlags: [],
-      extensionRPCs: [],
-    );
-    final inspector = ChromeAppInspector._(
-      appConnection,
-      isolate,
-      remoteDebugger,
-      assetReader,
-      locations,
-      root,
-      executionContext,
-    );
-
-    debugger.updateInspector(inspector);
-    await inspector.initialize();
-    return inspector;
-  }
-
-  /// Returns the ID for the execution context or null if not found.
-  Future<int?> get contextId async {
-    try {
-      return await _executionContext.id;
-    } catch (e, s) {
-      _logger.severe('Missing execution context ID: ', e, s);
-      return null;
-    }
-  }
-
-  /// Get the value of the field named [fieldName] from [receiver].
-  Future<RemoteObject> loadField(RemoteObject receiver, String fieldName) {
-    final load = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getPropertyJsExpression(fieldName);
-    return jsCallFunctionOn(receiver, load, []);
-  }
-
-  /// Call a method by name on [receiver], with arguments [positionalArgs] and
-  /// [namedArgs].
-  Future<RemoteObject> _invokeMethod(
-    RemoteObject receiver,
-    String methodName, [
-    List<RemoteObject> positionalArgs = const [],
-    Map namedArgs = const {},
-  ]) async {
-    // TODO(alanknight): Support named arguments.
-    if (namedArgs.isNotEmpty) {
-      throw UnsupportedError('Named arguments are not yet supported');
-    }
-    // We use the JS pseudo-variable 'arguments' to get the list of all
-    // arguments.
-    final send = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .callInstanceMethodJsExpression(methodName);
-    final remote = await jsCallFunctionOn(receiver, send, positionalArgs);
-    return remote;
-  }
-
-  /// Calls Chrome's Runtime.callFunctionOn method.
-  ///
-  /// [evalExpression] should be a JS function definition that can accept
-  /// [arguments].
-  Future<RemoteObject> jsCallFunctionOn(
-    RemoteObject receiver,
-    String evalExpression,
-    List<RemoteObject> arguments, {
-    bool returnByValue = false,
-  }) async {
-    final jsArguments = arguments.map(callArgumentFor).toList();
-    final response = await remoteDebugger.sendCommand(
-      'Runtime.callFunctionOn',
-      params: {
-        'functionDeclaration': evalExpression,
-        'arguments': jsArguments,
-        'objectId': receiver.objectId,
-        'returnByValue': returnByValue,
-      },
-    );
-    final result = getResultOrHandleError(
-      response,
-      evalContents: evalExpression,
-    );
-    return RemoteObject(result);
-  }
-
-  /// Calls Chrome's Runtime.callFunctionOn method with a global function.
-  ///
-  /// [evalExpression] should be a JS function definition that can accept
-  /// [arguments].
-  Future<RemoteObject> _jsCallFunction(
-    String evalExpression,
-    List<Object> arguments, {
-    bool returnByValue = false,
-  }) async {
-    final jsArguments = arguments.map(callArgumentFor).toList();
-    final response = await remoteDebugger.sendCommand(
-      'Runtime.callFunctionOn',
-      params: {
-        'functionDeclaration': evalExpression,
-        'arguments': jsArguments,
-        'executionContextId': await contextId,
-        'returnByValue': returnByValue,
-      },
-    );
-    final result = getResultOrHandleError(
-      response,
-      evalContents: evalExpression,
-    );
-    return RemoteObject(result);
-  }
-
-  /// Invoke the function named [selector] on the object identified by
-  /// [targetId].
-  ///
-  /// The [targetId] can be the URL of a Dart library, in which case this means
-  /// invoking a top-level function. The [arguments] are always strings that are
-  /// Dart object Ids (which can also be Chrome RemoteObject objectIds that are
-  /// for non-Dart JS objects.)
-  Future<RemoteObject> invoke(
-    String targetId,
-    String selector, [
-    List<dynamic> arguments = const [],
-  ]) async {
-    final remoteArguments = arguments
-        .cast<String>()
-        .map(remoteObjectFor)
-        .toList();
-    // We special case the Dart library, where invokeMethod won't work because
-    // it's not really a Dart object.
-    if (isLibraryId(targetId)) {
-      final library = await getObject(targetId) as Library;
-      return await _invokeLibraryFunction(library, selector, remoteArguments);
-    } else {
-      return _invokeMethod(
-        remoteObjectFor(targetId),
-        selector,
-        remoteArguments,
-      );
-    }
-  }
-
-  /// Invoke the function named [selector] from [library] with [arguments].
-  Future<RemoteObject> _invokeLibraryFunction(
-    Library library,
-    String selector,
-    List<RemoteObject> arguments,
-  ) {
-    final libraryUri = library.uri;
-    if (libraryUri == null) {
-      throwInvalidParam('invoke', 'library uri is null');
-    }
-    return globalToolConfiguration.loadStrategy.id == 'ddc-library-bundle'
-        ? _evaluateLibraryMethodWithDdcLibraryBundle(
-            libraryUri,
-            selector,
-            arguments,
-          )
-        : _evaluateInLibrary(
-            libraryUri,
-            'function () { return this.$selector.apply(this, arguments); }',
-            arguments,
-          );
-  }
-
-  /// Evaluate [expression] by calling Chrome's Runtime.evaluate.
-  Future<RemoteObject> jsEvaluate(
-    String expression, {
-    bool returnByValue = false,
-    bool awaitPromise = false,
-  }) async {
-    // TODO(alanknight): Support a version with arguments if needed.
-    final response = await remoteDebugger.sendCommand(
-      'Runtime.evaluate',
-      params: {
-        'expression': expression,
-        'returnByValue': returnByValue,
-        'awaitPromise': awaitPromise,
-        'contextId': await contextId,
-      },
-    );
-    final result = getResultOrHandleError(response, evalContents: expression);
-    return RemoteObject(result);
-  }
-
-  /// Evaluate the JS function with source [jsFunction] in the context of
-  /// the library identified by [libraryUri] with [arguments].
-  Future<RemoteObject> _evaluateInLibrary(
-    String libraryUri,
-    String jsFunction,
-    List<RemoteObject> arguments,
-  ) async {
-    final findLibraryJsExpression = globalToolConfiguration
-        .loadStrategy
-        .dartRuntimeDebugger
-        .callLibraryMethodJsExpression(libraryUri, jsFunction);
-
-    final remoteLibrary = await jsEvaluate(findLibraryJsExpression);
-    return jsCallFunctionOn(remoteLibrary, jsFunction, arguments);
-  }
-
-  /// Evaluates the specified top-level method [methodName] within the library
-  /// identified by [libraryUri] using the Dart Development Compiler (DDC)
-  /// library bundle strategy with the given optional [arguments].
-  Future<RemoteObject> _evaluateLibraryMethodWithDdcLibraryBundle(
-    String libraryUri,
-    String methodName, [
-    List<RemoteObject> arguments = const [],
-  ]) {
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .callLibraryMethodJsExpression(libraryUri, methodName);
-    return _jsCallFunction(expression, arguments);
-  }
-
-  /// Call [function] with objects referred by [argumentIds] as arguments.
-  Future<RemoteObject> callFunction(
-    String function,
-    Iterable<String> argumentIds,
-  ) {
-    final arguments = argumentIds.map(remoteObjectFor).toList();
-    return _jsCallFunction(function, arguments);
-  }
-
-  Future<InstanceRef?> instanceRefFor(Object value) =>
-      _instanceHelper.instanceRefFor(value);
-
-  Future<Instance?> instanceFor(RemoteObject value) =>
-      _instanceHelper.instanceFor(value);
-
-  Future<Library?> getLibrary(String objectId) async {
-    final libraryRef = await libraryRefFor(objectId);
-    if (libraryRef == null) return null;
-    return libraryHelper.libraryFor(libraryRef);
-  }
-
-  Future<Obj> getObject(String objectId, {int? offset, int? count}) async {
-    try {
-      final library = await getLibrary(objectId);
-      if (library != null) {
-        return library;
-      }
-      final clazz = await _classHelper.forObjectId(objectId);
-      if (clazz != null) {
-        return clazz;
-      }
-      final scriptRef = scriptRefsById[objectId];
-      if (scriptRef != null) {
-        return await _getScript(scriptRef);
-      }
-      final instance = await _instanceHelper.instanceFor(
-        remoteObjectFor(objectId),
-        offset: offset,
-        count: count,
-      );
-      if (instance != null) {
-        return instance;
-      }
-    } catch (e, s) {
-      _logger.fine('getObject $objectId failed', e, s);
-      rethrow;
-    }
-    throw UnsupportedError(
-      'Only libraries, instances, classes, and scripts '
-      'are supported for getObject',
-    );
-  }
-
-  Future<Script> _getScript(ScriptRef scriptRef) async {
-    final scriptId = scriptRef.id;
-    final scriptUri = scriptRef.uri;
-    if (scriptId == null || scriptUri == null) {
-      throwInvalidParam('getObject', 'No script info for script $scriptRef');
-    }
-    final serverPath = DartUri(scriptUri, root).serverPath;
-    final source = await _assetReader.dartSourceContents(serverPath);
-    if (source == null) {
-      throwInvalidParam(
-        'getObject',
-        'No source for $scriptRef  with serverPath: $serverPath',
-      );
-    }
-    final libraryId = scriptIdToLibraryId[scriptId];
-    if (libraryId == null) {
-      throwInvalidParam('getObject', 'No library for script $scriptRef');
-    }
-    return Script(
-        uri: scriptRef.uri,
-        library: await libraryRefFor(libraryId),
-        id: scriptId,
-      )
-      ..tokenPosTable = await _locations.tokenPosTableFor(serverPath)
-      ..source = source;
-  }
-
-  Future<MemoryUsage> getMemoryUsage() async {
-    final response = await remoteDebugger.sendCommand('Runtime.getHeapUsage');
-    final result = response.result;
-    if (result == null) {
-      throw RPCError(
-        'getMemoryUsage',
-        RPCErrorKind.kInternalError.code,
-        'Null result from chrome Devtools.',
-      );
-    }
-    final jsUsage = HeapUsage(result);
-    final usage = MemoryUsage.parse({
-      'heapUsage': jsUsage.usedSize,
-      'heapCapacity': jsUsage.totalSize,
-      'externalUsage': 0,
-    });
-    if (usage == null) {
-      throw RPCError(
-        'getMemoryUsage',
-        RPCErrorKind.kInternalError.code,
-        'Failed to parse memory usage result.',
-      );
-    }
-    return usage;
-  }
-
-  /// Return the VM SourceReport for the given parameters.
-  ///
-  /// Currently this implements the 'PossibleBreakpoints' report kind.
-  Future<SourceReport> getSourceReport(
-    List<String> reports, {
-    String? scriptId,
-  }) {
-    if (reports.contains(SourceReportKind.kCoverage)) {
-      throwInvalidParam(
-        'getSourceReport',
-        'Source report kind ${SourceReportKind.kCoverage} not supported',
-      );
-    }
-
-    if (reports.isEmpty) {
-      throwInvalidParam(
-        'getSourceReport',
-        'Invalid parameter: no value for source report kind provided.',
-      );
-    }
-
-    if (reports.length > 1 ||
-        reports.first != SourceReportKind.kPossibleBreakpoints) {
-      throwInvalidParam('getSourceReport', 'Unsupported source report kind.');
-    }
-
-    return _getPossibleBreakpoints(scriptId);
-  }
-
-  Future<SourceReport> _getPossibleBreakpoints(String? scriptId) async {
-    // TODO(devoncarew): Consider adding some caching for this method.
-
-    final scriptRef = scriptWithId(scriptId);
-    if (scriptRef == null) {
-      throwInvalidParam('getSourceReport', 'scriptRef not found for $scriptId');
-    }
-    final scriptUri = scriptRef.uri;
-    if (scriptUri == null) {
-      throwInvalidParam('getSourceReport', 'scriptUri not found for $scriptId');
-    }
-
-    final dartUri = DartUri(scriptUri, root);
-    final mappedLocations = await _locations.locationsForDart(
-      dartUri.serverPath,
-    );
-    // Unlike the Dart VM, the token positions match exactly to the possible
-    // breakpoints. This is because the token positions are derived from the
-    // DDC source maps which Chrome also uses.
-    final tokenPositions = <int>[
-      for (final location in mappedLocations) location.tokenPos,
-    ];
-    tokenPositions.sort();
-
-    final range = SourceReportRange(
-      scriptIndex: 0,
-      startPos: tokenPositions.isEmpty ? -1 : tokenPositions.first,
-      endPos: tokenPositions.isEmpty ? -1 : tokenPositions.last,
-      compiled: true,
-      possibleBreakpoints: tokenPositions,
-    );
-
-    final ranges = [range];
-    return SourceReport(scripts: [scriptRef], ranges: ranges);
-  }
-
-  /// Calls the Chrome Runtime.getProperties API for the object with [objectId].
-  ///
-  /// Note that the property names are JS names, e.g.
-  /// Symbol(DartClass.actualName) and will need to be converted. For a system
-  /// List or Map, [offset] and/or [count] can be provided to indicate a desired
-  /// range of entries. They will be ignored if there is no [length].
-  Future<List<Property>> getProperties(
-    String objectId, {
-    int? offset,
-    int? count,
-    int? length,
-  }) async {
-    var rangeId = objectId;
-    // Ignore offset/count if there is no length:
-    if (length != null) {
-      if (_isEmptyRange(offset: offset, count: count, length: length)) {
-        return [];
-      }
-      if (_isSubRange(offset: offset, count: count)) {
-        final range = await _subRange(
-          objectId,
-          offset: offset ?? 0,
-          count: count,
-          length: length,
-        );
-        rangeId = range.objectId ?? rangeId;
-      }
-    }
-    final jsProperties = await sendCommandAndValidateResult<List>(
-      remoteDebugger,
-      method: 'Runtime.getProperties',
-      resultField: 'result',
-      params: {'objectId': rangeId, 'ownProperties': true},
-    );
-    return jsProperties
-        .map<Property>((each) => Property(each as Map<String, dynamic>))
-        .where(_isVisibleProperty)
-        .toList();
-  }
-
-  bool _isVisibleProperty(Property property) {
-    // Filter out any RTI objects from the new DDC type system. See:
-    // https://github.com/dart-lang/webdev/issues/2316
-    final isRtiObject =
-        property.value?.className?.startsWith('dart_rti.Rti') ?? false;
-    return !isRtiObject;
-  }
-
-  /// Calculate the number of available elements in the range.
-  static int _calculateRangeCount({
-    int? count,
-    required int offset,
-    required int length,
-  }) => count == null ? length - offset : math.min(count, length - offset);
-
-  /// Find a sub-range of the entries for a Map/List when offset and/or count
-  /// have been specified on a getObject request.
-  ///
-  /// If the object referenced by [id] is not a system List or Map then this
-  /// will just return a RemoteObject for it and ignore [offset], [count] and
-  /// [length]. If it is, then [length] should be the number of entries in the
-  /// List/Map and [offset] and [count] should indicate the desired range.
-  Future<RemoteObject> _subRange(
-    String id, {
-    required int offset,
-    required int length,
-    int? count,
-  }) async {
-    // TODO(#809): Sometimes we already know the type of the object, and
-    // we could take advantage of that to short-circuit.
-    final receiver = remoteObjectFor(id);
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      offset: offset,
-      length: length,
-    );
-    final args = [
-      offset,
-      rangeCount,
-    ].map(dartIdFor).map(remoteObjectFor).toList();
-    // If this is a List, just call sublist. If it's a Map, get the entries, but
-    // avoid doing a toList on a large map using skip/take to get the section we
-    // want. To make those alternatives easier in JS, pass both count and end.
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getSubRangeJsExpression();
-
-    return await jsCallFunctionOn(receiver, expression, args);
-  }
-
-  static bool _isEmptyRange({required int length, int? offset, int? count}) {
-    if (count == 0) return true;
-    if (offset == null) return false;
-    return offset >= length;
-  }
-
-  static bool _isSubRange({int? offset, int? count}) {
-    if (offset == 0 && count == null) return false;
-    return offset != null || count != null;
-  }
-
-  /// Returns true for objects we display for the user.
-  bool isDisplayableObject(Object? object) =>
-      object is Sentinel ||
-      object is InstanceRef &&
-          !isNativeJsObject(object) &&
-          !isNativeJsError(object);
-
-  /// Returns true for non-dart JavaScript objects.
-  bool isNativeJsObject(InstanceRef instanceRef) {
-    return _instanceHelper.metadataHelper.isNativeJsObject(
-      instanceRef.classRef,
-    );
-  }
-
-  /// Returns true for JavaScript exceptions.
-  bool isNativeJsError(InstanceRef instanceRef) {
-    return _instanceHelper.metadataHelper.isNativeJsError(instanceRef.classRef);
-  }
-
-  /// Runs an eval on the page to compute all existing registered extensions.
-  ///
-  /// Combines this with the RPCs registered in the [isolate]. Use this over
-  /// [Isolate.extensionRPCs] as this computes a live set.
-  ///
-  /// Updates [Isolate.extensionRPCs] to this set.
-  @override
-  Future<Set<String>> getExtensionRpcs() async {
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getDartDeveloperExtensionNamesJsExpression();
-    final extensionRpcs = <String>{};
-    final params = {
-      'expression': expression,
-      'returnByValue': true,
-      'contextId': await contextId,
-    };
-    try {
-      final response = await remoteDebugger.sendCommand(
-        'Runtime.evaluate',
-        params: params,
-      );
-      final result = getResultOrHandleError(response, evalContents: expression);
-      extensionRpcs.addAll(List.from(result['value'] as List? ?? []));
-    } catch (e, s) {
-      _logger.severe(
-        'Error calling Runtime.evaluate with params $params',
-        e,
-        s,
-      );
-    }
-    isolate.extensionRPCs = List<String>.of(extensionRpcs);
-    return extensionRpcs;
-  }
-
-  /// Convert a JS exception description into a description containing
-  /// a Dart stack trace.
-  Future<String> mapExceptionStackTrace(String description) async {
-    RemoteObject mapperResult;
-    try {
-      mapperResult = await _jsCallFunction(stackTraceMapperExpression, <Object>[
-        description,
-      ]);
-    } catch (_) {
-      return description;
-    }
-    final mappedStack = mapperResult.value?.toString();
-    if (mappedStack == null || mappedStack.isEmpty) {
-      return description;
-    }
-    final message = _allLinesBeforeStackTrace(description);
-    return '$message$mappedStack';
-  }
-
-  String _allLinesBeforeStackTrace(String description) {
-    var message = '';
-    for (final match in exceptionMessageRegex.allMatches(description)) {
-      final isStackTraceLine = stackTraceLineRegex.hasMatch(match[0] ?? '');
-      if (isStackTraceLine) break;
-      message += '${match[0]}\n';
-    }
-    return message;
-  }
-}
diff --git a/dwds/lib/src/debugging/classes.dart b/dwds/lib/src/debugging/classes.dart
deleted file mode 100644
index 5003cec..0000000
--- a/dwds/lib/src/debugging/classes.dart
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/metadata/class.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Keeps track of Dart classes available in the running application.
-class ChromeAppClassHelper {
-  /// Map of class ID to [Class].
-  final _classes = <String, Class>{};
-
-  final ChromeAppInspector inspector;
-
-  ChromeAppClassHelper(this.inspector) {
-    final staticClasses = [
-      classRefForClosure,
-      classRefForString,
-      classRefForUnknown,
-    ];
-    for (final classRef in staticClasses) {
-      final classId = classRef.id;
-      if (classId != null) {
-        _classes[classId] = Class(
-          name: classRef.name,
-          isAbstract: false,
-          isConst: false,
-          library: null,
-          interfaces: [],
-          fields: [],
-          functions: [],
-          subclasses: [],
-          id: classId,
-          traceAllocations: false,
-        );
-      }
-    }
-  }
-
-  /// Returns the [Class] that corresponds to the provided [objectId].
-  ///
-  /// If a corresponding class does not exist it will return null.
-  Future<Class?> forObjectId(String objectId) async {
-    if (!objectId.startsWith('classes|')) return null;
-    var clazz = _classes[objectId];
-    if (clazz != null) return clazz;
-    final splitId = objectId.split('|');
-    final libraryId = splitId[1];
-    if (libraryId == 'null') {
-      throw UnsupportedError('unknown library: $libraryId');
-    }
-    final libraryRef = await inspector.libraryRefFor(libraryId);
-    if (libraryRef == null) {
-      throw Exception('Could not find library: $libraryId');
-    }
-    final classRef = classRefFor(libraryId, splitId.last);
-    clazz = await _constructClass(libraryRef, classRef);
-    if (clazz == null) {
-      throw Exception('Could not construct class: $classRef');
-    }
-    return _classes[objectId] = clazz;
-  }
-
-  /// Constructs a [Class] instance for the provided [LibraryRef] and
-  /// [ClassRef].
-  Future<Class?> _constructClass(
-    LibraryRef libraryRef,
-    ClassRef classRef,
-  ) async {
-    final libraryUri = libraryRef.uri;
-    final className = classRef.name;
-    final classId = classRef.id;
-
-    if (libraryUri == null || classId == null || className == null) return null;
-
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getClassMetadataJsExpression(libraryUri, className);
-    RemoteObject result;
-    try {
-      result = await inspector.remoteDebugger.evaluate(
-        expression,
-        returnByValue: true,
-        contextId: await inspector.contextId,
-      );
-    } on ExceptionDetails catch (e) {
-      throw ChromeDebugException(e.json, evalContents: expression);
-    }
-
-    final classDescriptor = _mapify(result.value);
-    final methodRefs = <FuncRef>[];
-    final methodDescriptors = _mapify(classDescriptor['methods']);
-    methodDescriptors.forEach((name, descriptor) {
-      final methodId = 'methods|$classId|$name';
-      final methodDescriptor = _mapify(descriptor);
-      methodRefs.add(
-        FuncRef(
-          id: methodId,
-          name: name,
-          owner: classRef,
-          isConst: methodDescriptor['isConst'] as bool? ?? false,
-          isStatic: methodDescriptor['isStatic'] as bool? ?? false,
-          implicit: methodDescriptor['isImplicit'] as bool? ?? false,
-          isAbstract: methodDescriptor['isAbstract'] as bool? ?? false,
-          isGetter: methodDescriptor['isGetter'] as bool? ?? false,
-          isSetter: methodDescriptor['isSetter'] as bool? ?? false,
-        ),
-      );
-    });
-    final fieldRefs = <FieldRef>[];
-
-    final fieldDescriptors = _mapify(classDescriptor['fields']);
-    fieldDescriptors.forEach((name, descriptor) {
-      final fieldDescriptor = _mapify(descriptor);
-      final classMetaData = ClassMetaData(
-        runtimeKind: RuntimeObjectKind.type,
-        classRef: classRefFor(
-          fieldDescriptor['classLibraryId'] as String?,
-          fieldDescriptor['className'] as String?,
-        ),
-      );
-
-      fieldRefs.add(
-        FieldRef(
-          name: name,
-          owner: classRef,
-          declaredType: InstanceRef(
-            identityHashCode: createId().hashCode,
-            id: createId(),
-            kind: classMetaData.kind,
-            classRef: classMetaData.classRef,
-          ),
-          isConst: fieldDescriptor['isConst'] as bool? ?? false,
-          isFinal: fieldDescriptor['isFinal'] as bool? ?? false,
-          isStatic: fieldDescriptor['isStatic'] as bool? ?? false,
-          id: createId(),
-        ),
-      );
-    });
-
-    final superClassLibraryId =
-        classDescriptor['superClassLibraryId'] as String?;
-    final superClassName = classDescriptor['superClassName'] as String?;
-    final superClassRef = superClassName == null
-        ? null
-        : classRefFor(superClassLibraryId, superClassName);
-
-    // TODO: Implement the rest of these
-    // https://github.com/dart-lang/webdev/issues/176.
-    return Class(
-      name: classRef.name,
-      isAbstract: false,
-      isConst: false,
-      library: libraryRef,
-      interfaces: [],
-      fields: fieldRefs,
-      functions: methodRefs,
-      subclasses: [],
-      id: classId,
-      traceAllocations: false,
-      superClass: superClassRef,
-    );
-  }
-
-  Map<String, dynamic> _mapify(dynamic map) =>
-      (map as Map<String, dynamic>?) ?? <String, dynamic>{};
-}
diff --git a/dwds/lib/src/debugging/dart_runtime_debugger.dart b/dwds/lib/src/debugging/dart_runtime_debugger.dart
deleted file mode 100644
index 978f02e..0000000
--- a/dwds/lib/src/debugging/dart_runtime_debugger.dart
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/loaders/strategy.dart';
-
-class DartRuntimeDebugger {
-  final LoadStrategy _loadStrategy;
-  final bool _useLibraryBundleExpression;
-
-  DartRuntimeDebugger({
-    required this._loadStrategy,
-    required this._useLibraryBundleExpression,
-  });
-
-  /// Generates a JS expression based on DDC module format.
-  String _generateJsExpression(
-    String ddcExpression,
-    String libraryBundleExpression,
-  ) => _useLibraryBundleExpression ? libraryBundleExpression : ddcExpression;
-
-  /// Wraps a JS function call with SDK loader logic.
-  String _wrapWithSdkLoader(String args, String functionCall) {
-    return '''
-      function($args) {
-        const sdk = ${_loadStrategy.loadModuleSnippet}('dart_sdk');
-        const dart = sdk.dart;
-        return dart.$functionCall;
-      }
-    ''';
-  }
-
-  /// Wraps a JS function call with DDC library bundle loader logic.
-  String _wrapWithBundleLoader(String args, String functionCall) {
-    return '''
-      function($args) {
-        return dartDevEmbedder.debugger.$functionCall;
-      }
-    ''';
-  }
-
-  /// Wraps an expression in an Immediately Invoked Function Expression (IIFE).
-  String _wrapInIIFE(String expression) {
-    return '($expression)()';
-  }
-
-  /// Builds a JS expression based on the loading strategy.
-  String _buildExpression(
-    String args,
-    String ddcFunction,
-    String libraryBundleFunction,
-  ) {
-    return _generateJsExpression(
-      _wrapWithSdkLoader(args, ddcFunction),
-      _wrapWithBundleLoader(args, libraryBundleFunction),
-    );
-  }
-
-  /// Generates a JS expression for retrieving object metadata.
-  String getObjectMetadataJsExpression() {
-    return _buildExpression(
-      'arg',
-      'getObjectMetadata(arg)',
-      'getObjectMetadata(arg)',
-    );
-  }
-
-  /// Generates a JS expression for retrieving object field names.
-  String getObjectFieldNamesJsExpression() {
-    return _buildExpression(
-      '',
-      'getObjectFieldNames(this)',
-      'getObjectFieldNames(this)',
-    );
-  }
-
-  /// Generates a JS expression for retrieving function metadata.
-  String getFunctionMetadataJsExpression() {
-    return _buildExpression(
-      '',
-      'getFunctionMetadata(this)',
-      'getFunctionName(this)',
-    );
-  }
-
-  /// Generates a JS expression for retrieving a subrange of elements.
-  String getSubRangeJsExpression() {
-    return _buildExpression(
-      'offset, count',
-      'getSubRange(this, offset, count)',
-      'getSubRange(this, offset, count)',
-    );
-  }
-
-  /// Generates a JS expression for retrieving class metadata.
-  String getClassMetadataJsExpression(String libraryUri, String className) {
-    final expression = _buildExpression(
-      '',
-      "getClassMetadata('$libraryUri', '$className')",
-      "getClassMetadata('$libraryUri', '$className')",
-    );
-    // Use the helper method to wrap this in an IIFE
-    return _wrapInIIFE(expression);
-  }
-
-  /// Generates a JS expression for retrieving Dart Developer Extension Names.
-  String getDartDeveloperExtensionNamesJsExpression() {
-    return _generateJsExpression(
-      '${_loadStrategy.loadModuleSnippet}("dart_sdk").developer._extensions'
-          '.keys.toList();',
-      'dartDevEmbedder.debugger.extensionNames',
-    );
-  }
-
-  /// Generates a JS expression for retrieving metadata of classes in a library.
-  String getClassesInLibraryJsExpression(String libraryUri) {
-    final expression = _buildExpression(
-      '',
-      "getLibraryMetadata('$libraryUri')",
-      "getClassesInLibrary('$libraryUri')",
-    );
-    // Use the helper method to wrap this in an IIFE
-    return _wrapInIIFE(expression);
-  }
-
-  /// Generates a JS expression for retrieving map elements.
-  String getMapElementsJsExpression() {
-    return _buildExpression('', 'getMapElements(this)', 'getMapElements(this)');
-  }
-
-  /// Generates a JS expression for getting a property from a JS object.
-  String getPropertyJsExpression(String fieldName) {
-    return _generateJsExpression(
-      '''
-      function() {
-        return this["$fieldName"];
-      }
-      ''',
-      '''
-      function() {
-        return this["$fieldName"];
-      }
-      ''',
-    );
-  }
-
-  /// Generates a JS expression for retrieving set elements.
-  String getSetElementsJsExpression() {
-    return _buildExpression('', 'getSetElements(this)', 'getSetElements(this)');
-  }
-
-  /// Generates a JS expression for retrieving the fields of a record.
-  String getRecordFieldsJsExpression() {
-    return _buildExpression(
-      '',
-      'getRecordFields(this)',
-      'getRecordFields(this)',
-    );
-  }
-
-  /// Generates a JS expression for retrieving the fields of a record type.
-  String getRecordTypeFieldsJsExpression() {
-    return _buildExpression(
-      '',
-      'getRecordTypeFields(this)',
-      'getRecordTypeFields(this)',
-    );
-  }
-
-  /// Generates a JS expression for calling an instance method on an object.
-  String callInstanceMethodJsExpression(String methodName) {
-    String generateInstanceMethodJsExpression(String functionCall) {
-      return '''
-        function () {
-          if (!Object.getPrototypeOf(this)) { return 'Instance of PlainJavaScriptObject'; }
-          return $functionCall;
-        }
-      ''';
-    }
-
-    return _generateJsExpression(
-      generateInstanceMethodJsExpression(
-        '${_loadStrategy.loadModuleSnippet}("dart_sdk").dart'
-        '.dsendRepl(this, "$methodName", arguments)',
-      ),
-      generateInstanceMethodJsExpression(
-        'dartDevEmbedder.debugger.callInstanceMethod'
-        '(this, "$methodName", arguments)',
-      ),
-    );
-  }
-
-  /// Generates a JS expression to invoke a Dart extension method.
-  String invokeExtensionJsExpression(String methodName, String encodedJson) {
-    return _generateJsExpression(
-      '${_loadStrategy.loadModuleSnippet}("dart_sdk").developer'
-          '.invokeExtension("$methodName", JSON.stringify($encodedJson));',
-      'dartDevEmbedder.debugger.invokeExtension'
-          '("$methodName", JSON.stringify($encodedJson));',
-    );
-  }
-
-  /// Generates a JS expression for calling a library method.
-  String callLibraryMethodJsExpression(String libraryUri, String methodName) {
-    final findLibraryExpression =
-        '''
-     (function() {
-       const sdk = ${_loadStrategy.loadModuleSnippet}('dart_sdk');
-       const dart = sdk.dart;
-       const library = dart.getLibrary('$libraryUri');
-       if (!library) throw 'cannot find library for $libraryUri';
-       return library;
-     })();
-     ''';
-
-    // `callLibraryMethod` expects an array of arguments. Chrome DevTools
-    // spreads arguments individually when calling functions. This code
-    // reconstructs the expected argument array.
-    return _generateJsExpression(
-      findLibraryExpression,
-      _wrapWithBundleLoader(
-        '',
-        'callLibraryMethod("$libraryUri", "$methodName", '
-            'Array.from(arguments))',
-      ),
-    );
-  }
-}
diff --git a/dwds/lib/src/debugging/dart_scope.dart b/dwds/lib/src/debugging/dart_scope.dart
deleted file mode 100644
index 63c825b..0000000
--- a/dwds/lib/src/debugging/dart_scope.dart
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/utilities/objects.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// The regular expressions used to filter out temp variables.
-/// Needs to be kept in sync with SDK repo.
-///
-/// TODO(annagrin) - use an alternative way to identify
-/// synthetic variables.
-/// Issue: https://github.com/dart-lang/sdk/issues/44262
-final ddcTemporaryVariableRegExp = RegExp(
-  // Starts with t$
-  r'^t\$'
-  // followed by anything
-  r'.*'
-  // or,
-  r'|'
-  // anything that contains the sequence '$35'.
-  r'.*\$35.*',
-);
-final ddcTemporaryTypeVariableRegExp = RegExp(r'^__t[\$\w*]+$');
-
-/// Temporary variable regex before SDK changes for patterns.
-/// TODO(annagrin): remove after dart 3.0 is stable.
-final previousDdcTemporaryVariableRegExp = RegExp(
-  r'^(t[0-9]+\$?[0-9]*|__t[\$\w*]+)$',
-);
-
-const ddcAsyncScope = 'asyncScope';
-const ddcCapturedAsyncScope = 'capturedAsyncScope';
-
-/// Find the visible Dart variables from a JS Scope Chain, coming from the
-/// scopeChain attribute of a Chrome CallFrame corresponding to [frame].
-///
-/// See chromedevtools.github.io/devtools-protocol/tot/Debugger#type-CallFrame.
-Future<List<Property>> visibleVariables({
-  required ChromeAppInspector inspector,
-  required WipCallFrame frame,
-}) async {
-  final allProperties = <Property>[];
-
-  if (frame.thisObject.type != 'undefined') {
-    allProperties.add(Property({'name': 'this', 'value': frame.thisObject}));
-  }
-
-  // TODO: Try and populate all the property info for the scopes in one backend
-  // call. Along with some other optimizations (caching classRef lookups), we'd
-  // end up averaging one backend call per frame.
-
-  // Iterate to least specific scope last to help preserve order in the local
-  // variables view when stepping.
-  for (final scope in filterScopes(frame).reversed) {
-    final objectId = scope.object.objectId;
-    if (objectId != null) {
-      final properties = await inspector.getProperties(objectId);
-      allProperties.addAll(properties);
-    }
-  }
-
-  if (frame.returnValue != null && frame.returnValue!.type != 'undefined') {
-    allProperties.add(Property({'name': 'return', 'value': frame.returnValue}));
-  }
-
-  // DDC's async lowering hoists variable declarations into scope objects. We
-  // create one scope object per Dart scope (skipping scopes containing no
-  // declarations). If a Dart scope is captured by a Dart closure the
-  // JS scope object will also be captured by the compiled JS closure.
-  //
-  // For debugging purposes we unpack these scope objects into the set of
-  // available properties to recreate the Dart context at any given point.
-
-  final capturedAsyncScopes = [
-    ...allProperties.where(
-      (p) => p.name?.startsWith(ddcCapturedAsyncScope) ?? false,
-    ),
-  ];
-
-  if (capturedAsyncScopes.isNotEmpty) {
-    // If we are in a local function within an async function, we should use the
-    // available captured scopes. These will contain all the variables captured
-    // by the closure. We only close over variables used within the closure.
-    for (final scopeObject in capturedAsyncScopes) {
-      final scopeObjectId = scopeObject.value?.objectId;
-      if (scopeObjectId == null) continue;
-      final scopeProperties = await inspector.getProperties(scopeObjectId);
-      allProperties.addAll(scopeProperties);
-      allProperties.remove(scopeObject);
-    }
-  } else {
-    // Otherwise we are in the async function body itself. Unpack the available
-    // async scopes. Scopes we have not entered may already have a scope object
-    // declared but the object will not have any values in it yet.
-    final asyncScopes = [
-      ...allProperties.where((p) => p.name?.startsWith(ddcAsyncScope) ?? false),
-    ];
-    for (final scopeObject in asyncScopes) {
-      final scopeObjectId = scopeObject.value?.objectId;
-      if (scopeObjectId == null) continue;
-      final scopeProperties = await inspector.getProperties(scopeObjectId);
-      allProperties.addAll(scopeProperties);
-      allProperties.remove(scopeObject);
-    }
-  }
-
-  allProperties.removeWhere((property) {
-    final value = property.value;
-    if (value == null) return true;
-
-    final type = value.type;
-    if (type == 'undefined') return true;
-
-    final description = value.description ?? '';
-    final name = property.name ?? '';
-
-    // TODO(#786) Handle these correctly rather than just suppressing them.
-    // We should never see a raw JS class. The only case where this happens is a
-    // Dart generic function, where the type arguments get passed in as
-    // parameters. Hide those.
-    return (type == 'function' && description.startsWith('class ')) ||
-        previousDdcTemporaryVariableRegExp.hasMatch(name) ||
-        ddcTemporaryVariableRegExp.hasMatch(name) ||
-        ddcTemporaryTypeVariableRegExp.hasMatch(name) ||
-        (type == 'object' && description == 'dart.LegacyType.new');
-  });
-
-  return allProperties;
-}
-
-/// Filters the provided frame scopes to those that are pertinent for Dart
-/// debugging.
-List<WipScope> filterScopes(WipCallFrame frame) {
-  final scopes = frame.getScopeChain().toList();
-  // Remove outer scopes up to and including the Dart SDK.
-  while (scopes.isNotEmpty &&
-      !(scopes.last.name?.startsWith('load__') ?? false)) {
-    scopes.removeLast();
-  }
-  if (scopes.isNotEmpty) scopes.removeLast();
-  return scopes;
-}
diff --git a/dwds/lib/src/debugging/debugger.dart b/dwds/lib/src/debugging/debugger.dart
deleted file mode 100644
index 2a5a5e4..0000000
--- a/dwds/lib/src/debugging/debugger.dart
+++ /dev/null
@@ -1,994 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/dart_scope.dart';
-import 'package:dwds/src/debugging/frame_computer.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/debugging/skip_list.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/domain.dart';
-import 'package:dwds/src/utilities/objects.dart' show Property;
-import 'package:dwds/src/utilities/server.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:dwds/src/utilities/synchronized.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
-    hide StackTrace;
-
-/// Adds [event] to the stream with [streamId] if there is anybody listening
-/// on that stream.
-typedef StreamNotify = void Function(String streamId, Event event);
-
-/// Converts from ExceptionPauseMode strings to [PauseState] enums.
-///
-/// Values defined in:
-/// https://chromedevtools.github.io/devtools-protocol/tot/Debugger#method-setPauseOnExceptions
-const _pauseModePauseStates = {
-  'none': PauseState.none,
-  'all': PauseState.all,
-  'unhandled': PauseState.uncaught,
-};
-
-/// Mapping from the path of a script in Chrome to the Runtime.ScriptId Chrome
-/// uses to reference it.
-///
-/// See https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ScriptId
-///
-/// e.g. 'packages/myapp/main.dart.lib.js' -> '12'
-final chromePathToRuntimeScriptId = <String, String>{};
-
-class Debugger {
-  static final logger = Logger('Debugger');
-
-  final RemoteDebugger _remoteDebugger;
-
-  final StreamNotify _streamNotify;
-  final Locations _locations;
-  final SkipLists _skipLists;
-
-  late ChromeAppInspector inspector;
-
-  int _frameErrorCount = 0;
-
-  final StreamController<String> parsedScriptsController =
-      StreamController.broadcast();
-
-  Debugger._(
-    this._remoteDebugger,
-    this._streamNotify,
-    this._locations,
-    this._skipLists,
-    String root,
-  ) : _breakpoints = _Breakpoints(
-        locations: _locations,
-        remoteDebugger: _remoteDebugger,
-        root: root,
-      );
-
-  /// The breakpoints we have set so far, indexable by either
-  /// Dart or JS ID.
-  final _Breakpoints _breakpoints;
-
-  PauseState _pauseState = PauseState.none;
-
-  // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable
-  // after checking with Chrome team if there is a way to check if the Chrome
-  // DevTools is showing an overlay. Both cannot be shown at the same time:
-  // bool _pausedOverlayVisible = false;
-
-  String get pauseState => _pauseModePauseStates.entries
-      .firstWhere((entry) => entry.value == _pauseState)
-      .key;
-
-  /// The JS frames at the current paused location.
-  ///
-  /// The most important thing here is that frames are identified by
-  /// frameIndex in the Dart API, but by frame Id in Chrome, so we need
-  /// to keep the JS frames and their Ids around.
-  FrameComputer? stackComputer;
-
-  bool _isStepping = false;
-  DartLocation? _previousSteppingLocation;
-
-  // If not null and not completed, the pause handler completes this instead of
-  // sending a `PauseInterrupted` event to the event stream.
-  //
-  // In some cases e.g. a hot reload, DWDS pauses the execution itself in order
-  // to handle debugging logic like breakpoints. In such cases, sending the
-  // event to the event stream may trigger the client to believe that the user
-  // sent the event. To avoid that and still signal that a pause is completed,
-  // this completer is used. See https://github.com/dart-lang/sdk/issues/61560
-  // for more details.
-  Completer<void>? _internalPauseCompleter;
-
-  void updateInspector(ChromeAppInspector appInspector) {
-    inspector = appInspector;
-    _breakpoints.inspector = appInspector;
-  }
-
-  Future<Success> pause({bool internalPause = false}) async {
-    _isStepping = false;
-    if (internalPause) _internalPauseCompleter = Completer<void>();
-    final result = await _remoteDebugger.pause();
-    handleErrorIfPresent(result);
-    await _internalPauseCompleter?.future;
-    return Success();
-  }
-
-  Future<Success> setExceptionPauseMode(String mode) async {
-    mode = mode.toLowerCase();
-    final state = _pauseModePauseStates[mode];
-    if (state == null) {
-      throwInvalidParam('setExceptionPauseMode', 'Unsupported mode: $mode');
-    } else {
-      _pauseState = state;
-    }
-    await _remoteDebugger.setPauseOnExceptions(_pauseState);
-    return Success();
-  }
-
-  /// Resumes the debugger.
-  ///
-  /// Step parameter options:
-  /// https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md#resume
-  ///
-  /// If the step parameter is not provided, the program will resume regular
-  /// execution.
-  ///
-  /// If the step parameter is provided, it indicates what form of
-  /// single-stepping to use.
-  ///
-  /// Note that stepping will automatically continue until Chrome is paused at
-  /// a location for which we have source information.
-  Future<Success> resume({String? step, int? frameIndex}) async {
-    try {
-      if (frameIndex != null) {
-        throw ArgumentError('FrameIndex is currently unsupported.');
-      }
-      WipResponse? result;
-      if (step != null) {
-        _isStepping = true;
-        switch (step) {
-          case 'Over':
-            result = await _remoteDebugger.stepOver();
-            break;
-          case 'Out':
-            result = await _remoteDebugger.stepOut();
-            break;
-          case 'Into':
-            result = await _remoteDebugger.stepInto();
-            break;
-          default:
-            throwInvalidParam('resume', 'Unexpected value for step: $step');
-        }
-      } else {
-        _isStepping = false;
-        _previousSteppingLocation = null;
-        result = await _remoteDebugger.resume();
-      }
-      handleErrorIfPresent(result);
-      return Success();
-    } on WipError catch (e) {
-      final errorMessage = e.message;
-      if (errorMessage != null &&
-          errorMessage.contains('Can only perform operation while paused')) {
-        throw RPCError(
-          'resume',
-          RPCErrorKind.kIsolateMustBePaused.code,
-          errorMessage,
-        );
-      }
-      rethrow;
-    }
-  }
-
-  /// Returns the current Dart stack for the paused debugger.
-  ///
-  /// Throws RPCError if the debugger is not paused.
-  ///
-  /// The returned stack will contain up to [limit] frames if provided.
-  Future<Stack> getStack({int? limit}) async {
-    if (stackComputer == null) {
-      throw RPCError(
-        'getStack',
-        RPCErrorKind.kInternalError.code,
-        'Cannot compute stack when application is not paused',
-      );
-    }
-
-    final frames = await stackComputer!.calculateFrames(limit: limit);
-    return Stack(
-      frames: frames,
-      messages: [],
-      truncated: limit != null && frames.length == limit,
-    );
-  }
-
-  static Future<Debugger> create(
-    RemoteDebugger remoteDebugger,
-    StreamNotify streamNotify,
-    Locations locations,
-    SkipLists skipLists,
-    String root,
-  ) async {
-    final debugger = Debugger._(
-      remoteDebugger,
-      streamNotify,
-      locations,
-      skipLists,
-      root,
-    );
-    remoteDebugger.onReconnect = debugger._initialize;
-    await debugger._initialize();
-    return debugger;
-  }
-
-  Future<void> _initialize() async {
-    // We must add a listener before enabling the debugger otherwise we will
-    // miss events.
-    // Allow a null debugger/connection for unit tests.
-    runZonedGuarded(
-      () {
-        _remoteDebugger.onScriptParsed.listen(_scriptParsedHandler);
-        _remoteDebugger.onPaused.listen(_pauseHandler);
-        _remoteDebugger.onResumed.listen(_resumeHandler);
-        _remoteDebugger.onTargetCrashed.listen(_crashHandler);
-      },
-      (e, StackTrace s) {
-        logger.warning('Error handling Chrome event', e, s);
-      },
-    );
-
-    handleErrorIfPresent(await _remoteDebugger.enablePage());
-    await _remoteDebugger.enable();
-
-    // Enable collecting information about async frames when paused.
-    handleErrorIfPresent(
-      await _remoteDebugger.sendCommand(
-        'Debugger.setAsyncCallStackDepth',
-        params: {'maxDepth': 128},
-      ),
-    );
-  }
-
-  /// Resumes the Isolate from start.
-  ///
-  /// The JS VM is technically not paused at the start of the Isolate so there
-  /// will not be a corresponding [DebuggerResumedEvent].
-  void resumeFromStart() => _resumeHandler(null);
-
-  /// Notify the debugger the [Isolate] is paused at the application start.
-  void notifyPausedAtStart() {
-    stackComputer = FrameComputer(this, []);
-  }
-
-  /// Add a breakpoint at the given position.
-  ///
-  /// Note that line and column are Dart source locations and are one-based.
-  Future<Breakpoint> addBreakpoint(
-    String scriptId,
-    int line, {
-    int? column,
-  }) async {
-    column ??= 0;
-    final breakpoint = await _breakpoints.add(scriptId, line, column);
-    _notifyBreakpoint(breakpoint);
-    return breakpoint;
-  }
-
-  void _notifyBreakpoint(Breakpoint breakpoint) {
-    final event = Event(
-      kind: EventKind.kBreakpointAdded,
-      timestamp: DateTime.now().millisecondsSinceEpoch,
-      isolate: inspector.isolateRef,
-    );
-    event.breakpoint = breakpoint;
-    _streamNotify('Debug', event);
-  }
-
-  /// Remove a Dart breakpoint.
-  Future<Success> removeBreakpoint(String breakpointId) async {
-    if (_breakpoints.breakpointFor(breakpointId) == null) {
-      throwInvalidParam(
-        'removeBreakpoint',
-        'invalid breakpoint id $breakpointId',
-      );
-    }
-    final jsId = _breakpoints.jsIdFor(breakpointId);
-    if (jsId == null) {
-      throw RPCError(
-        'removeBreakpoint',
-        RPCErrorKind.kInternalError.code,
-        'invalid JS breakpoint id $jsId',
-      );
-    }
-    await _removeBreakpoint(jsId);
-
-    final bp = await _breakpoints.remove(jsId: jsId, dartId: breakpointId);
-    if (bp != null) {
-      _streamNotify(
-        'Debug',
-        Event(
-          kind: EventKind.kBreakpointRemoved,
-          timestamp: DateTime.now().millisecondsSinceEpoch,
-          isolate: inspector.isolateRef,
-        )..breakpoint = bp,
-      );
-    }
-    return Success();
-  }
-
-  /// Call the Chrome protocol removeBreakpoint.
-  Future<void> _removeBreakpoint(String breakpointId) async {
-    try {
-      final response = await _remoteDebugger.removeBreakpoint(breakpointId);
-      handleErrorIfPresent(response);
-    } on WipError catch (e) {
-      throw RPCError('removeBreakpoint', 102, '$e');
-    }
-  }
-
-  /// Returns Chrome script uri for Chrome script ID.
-  String? urlForScriptId(String scriptId) =>
-      _remoteDebugger.scripts[scriptId]?.url;
-
-  /// Returns source [Location] for the paused event.
-  ///
-  /// If we do not have [Location] data for the embedded JS location, null is
-  /// returned.
-  Future<Location?> _sourceLocation(DebuggerPausedEvent e) async {
-    final frame =
-        (e.params?['callFrames'] as List<dynamic>?)?[0]
-            as Map<String, dynamic>?;
-    final location = frame?['location'] as Map<String, dynamic>?;
-    if (location == null) return null;
-
-    final scriptId = location['scriptId'] as String?;
-    final line = location['lineNumber'] as int?;
-    if (scriptId == null || line == null) return null;
-
-    final column = location['columnNumber'] as int?;
-    final url = urlForScriptId(scriptId);
-    if (url == null) return null;
-
-    final loc = await _locations.locationForJs(url, line, column);
-    if (loc == null || loc.dartLocation == _previousSteppingLocation) {
-      return null;
-    }
-    _previousSteppingLocation = loc.dartLocation;
-    return loc;
-  }
-
-  /// Returns script ID for the paused event.
-  String? _frameScriptId(DebuggerPausedEvent e) {
-    final frame =
-        (e.params?['callFrames'] as List<dynamic>?)?[0]
-            as Map<String, dynamic>?;
-    return (frame?['location'] as Map<String, dynamic>?)?['scriptId']
-        as String?;
-  }
-
-  /// The variables visible in a frame in Dart protocol [BoundVariable] form.
-  Future<List<BoundVariable>> variablesFor(WipCallFrame frame) async {
-    // TODO(alanknight): Can these be moved to dart_scope.dart?
-    final properties = await visibleVariables(
-      inspector: inspector,
-      frame: frame,
-    );
-    final boundVariables = await Future.wait(properties.map(_boundVariable));
-
-    // Filter out variables that do not come from dart code, such as native
-    // JavaScript objects
-    return boundVariables
-        .where((bv) => inspector.isDisplayableObject(bv?.value))
-        .toList()
-        .cast();
-  }
-
-  Future<BoundVariable?> _boundVariable(Property property) async {
-    // TODO(annagrin): value might be null in the future for variables
-    // optimized by V8. Return appropriate sentinel values for them.
-    if (property.value != null) {
-      final value = property.value!;
-      // We return one level of properties from this object. Sub-properties are
-      // another round trip.
-      final instanceRef = await inspector.instanceRefFor(value);
-      // Skip null instance refs, which we get for weird objects, e.g.
-      // properties that are getter/setter pairs.
-      // TODO(alanknight): Handle these properly.
-      if (instanceRef == null) return null;
-
-      return BoundVariable(
-        name: property.name,
-        value: instanceRef,
-        // TODO(grouma) - Provide actual token positions.
-        declarationTokenPos: -1,
-        scopeStartTokenPos: -1,
-        scopeEndTokenPos: -1,
-      );
-    }
-    return null;
-  }
-
-  // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable
-  // after checking with Chrome team if there is a way to check if the Chrome
-  // DevTools is showing an overlay. Both cannot be shown at the same time:
-
-  // Renders the paused at breakpoint overlay over the application.
-  // void _showPausedOverlay() async {
-  //   if (_pausedOverlayVisible) return;
-  //   handleErrorIfPresent(await _remoteDebugger?.sendCommand('DOM.enable'));
-  //   handleErrorIfPresent(
-  //       await _remoteDebugger?.sendCommand('Overlay.enable'));
-  //   handleErrorIfPresent(await _remoteDebugger
-  //       ?.sendCommand('Overlay.setPausedInDebuggerMessage', params: {
-  //     'message': 'Paused',
-  //   }));
-  //   _pausedOverlayVisible = true;
-  // }
-
-  // Removes the paused at breakpoint overlay from the application.
-  // void _hidePausedOverlay() async {
-  //   if (!_pausedOverlayVisible) return;
-  //   handleErrorIfPresent(
-  //       await _remoteDebugger?.sendCommand('Overlay.disable'));
-  //   _pausedOverlayVisible = false;
-  // }
-
-  /// Returns a Dart [Frame] for a JS [frame].
-  Future<Frame?> calculateDartFrameFor(
-    WipCallFrame frame,
-    int frameIndex, {
-    bool populateVariables = true,
-  }) async {
-    final location = frame.location;
-    final line = location.lineNumber;
-    final column = location.columnNumber;
-
-    final url = urlForScriptId(location.scriptId);
-    if (url == null) {
-      logger.fine(
-        'Failed to create dart frame for ${frame.functionName}: '
-        'cannot find url for script ${location.scriptId}',
-      );
-      return null;
-    }
-
-    final bestLocation = await _locations.locationForJs(url, line, column ?? 0);
-    if (bestLocation == null) return null;
-
-    final script = await inspector.scriptRefFor(
-      bestLocation.dartLocation.uri.serverPath,
-    );
-    // We think we found a location, but for some reason we can't find the
-    // script. Just drop the frame.
-    // TODO(#700): Understand when this can happen and have a better fix.
-    if (script == null) return null;
-
-    final functionName = _prettifyMember(frame.functionName.split('.').last);
-    final codeRefName = functionName.isEmpty ? '<closure>' : functionName;
-
-    final dartFrame = Frame(
-      index: frameIndex,
-      code: CodeRef(name: codeRefName, kind: CodeKind.kDart, id: createId()),
-      location: SourceLocation(
-        line: bestLocation.dartLocation.line,
-        column: bestLocation.dartLocation.column,
-        tokenPos: bestLocation.tokenPos,
-        script: script,
-      ),
-      kind: FrameKind.kRegular,
-    );
-
-    // Don't populate variables for async frames.
-    if (populateVariables) {
-      try {
-        dartFrame.vars = await variablesFor(frame);
-      } catch (e) {
-        _frameErrorCount++;
-      }
-    }
-
-    return dartFrame;
-  }
-
-  /// Can be called after [calculateDartFrameFor] to log any errors.
-  void logAnyFrameErrors({required String frameType}) {
-    if (_frameErrorCount > 0) {
-      logger.warning(
-        'Error calculating Dart variables for $_frameErrorCount $frameType '
-        'frames.',
-      );
-    }
-    _frameErrorCount = 0;
-  }
-
-  void _scriptParsedHandler(ScriptParsedEvent e) {
-    final scriptPath = _pathForChromeScript(e.script.url);
-    if (scriptPath != null) {
-      chromePathToRuntimeScriptId[scriptPath] = e.script.scriptId;
-      if (parsedScriptsController.hasListener) {
-        parsedScriptsController.sink.add(e.script.url);
-      }
-    }
-  }
-
-  String? _pathForChromeScript(String scriptUrl) {
-    final scriptPathSegments = Uri.parse(scriptUrl).pathSegments;
-    if (scriptPathSegments.isEmpty) {
-      return null;
-    }
-
-    final isInternal = globalToolConfiguration.appMetadata.isInternalBuild;
-    const packagesDir = 'packages';
-    if (isInternal && scriptUrl.contains(packagesDir)) {
-      final packagesIdx = scriptPathSegments.indexOf(packagesDir);
-      return p.joinAll(scriptPathSegments.sublist(packagesIdx));
-    }
-
-    // Note: Replacing "\" with "/" is necessary because `joinAll` uses "\" if
-    // the platform is Windows. However, only "/" is expected by the browser.
-    return p.joinAll(scriptPathSegments).replaceAll('\\', '/');
-  }
-
-  /// Handles pause events coming from the Chrome connection.
-  Future<void> _pauseHandler(DebuggerPausedEvent e) async {
-    final isolate = inspector.isolate;
-    Event event;
-    final timestamp = DateTime.now().millisecondsSinceEpoch;
-    final jsBreakpointIds = e.hitBreakpoints ?? [];
-    if (jsBreakpointIds.isNotEmpty) {
-      final breakpointIds = jsBreakpointIds
-          .map((id) => _breakpoints._dartIdByJsId[id])
-          // In case the breakpoint was set in Chrome DevTools outside of
-          // package:dwds.
-          .where((entry) => entry != null)
-          .toSet();
-      final pauseBreakpoints = isolate.breakpoints
-          ?.where((bp) => breakpointIds.contains(bp.id))
-          .toList();
-      event = Event(
-        kind: EventKind.kPauseBreakpoint,
-        timestamp: timestamp,
-        isolate: inspector.isolateRef,
-      )..pauseBreakpoints = pauseBreakpoints;
-    } else if (e.reason == 'exception' || e.reason == 'assert') {
-      InstanceRef? exception;
-
-      if (e.data is Map<String, dynamic>) {
-        final map = e.data as Map<String, dynamic>;
-        if (map['type'] == 'object') {
-          final obj = RemoteObject(map);
-          exception = await inspector.instanceRefFor(obj);
-          if (exception != null && inspector.isNativeJsError(exception)) {
-            if (obj.description != null) {
-              // Create a string exception object.
-              final description = await inspector.mapExceptionStackTrace(
-                obj.description!,
-              );
-              exception = await inspector.instanceRefFor(description);
-            } else {
-              exception = null;
-            }
-          }
-        }
-      }
-
-      event = Event(
-        kind: EventKind.kPauseException,
-        timestamp: timestamp,
-        isolate: inspector.isolateRef,
-        exception: exception,
-      );
-    } else {
-      // Continue stepping until we hit a dart location,
-      // avoiding stepping through library loading code.
-      if (_isStepping) {
-        final scriptId = _frameScriptId(e);
-        if (scriptId == null) {
-          logger.severe(
-            'Stepping failed: '
-            'cannot find script id for event $e',
-          );
-          throw StateError('Stepping failed on event $e');
-        }
-        final url = urlForScriptId(scriptId);
-        if (url == null) {
-          logger.severe(
-            'Stepping failed: '
-            'cannot find url for script $scriptId',
-          );
-          throw StateError('Stepping failed in script $scriptId');
-        }
-
-        if (url.contains(
-          globalToolConfiguration.loadStrategy.loadLibrariesModule,
-        )) {
-          await _remoteDebugger.stepOut();
-          return;
-        } else if ((await _sourceLocation(e)) == null) {
-          // TODO(grouma) - In the future we should send all previously computed
-          // skipLists.
-          await _remoteDebugger.stepInto(
-            params: {
-              'skipList': _skipLists.compute(
-                scriptId,
-                url,
-                await _locations.locationsForUrl(url),
-              ),
-            },
-          );
-          return;
-        }
-      }
-      event = Event(
-        kind: EventKind.kPauseInterrupted,
-        timestamp: timestamp,
-        isolate: inspector.isolateRef,
-      );
-    }
-
-    // Calculate the frames (and handle any exceptions that may occur).
-    stackComputer = FrameComputer(
-      this,
-      e.getCallFrames().toList(),
-      asyncStackTrace: e.asyncStackTrace,
-    );
-
-    try {
-      final frames = await stackComputer!.calculateFrames(limit: 1);
-      event.topFrame = frames.isNotEmpty ? frames.first : null;
-    } catch (e, s) {
-      // TODO: Return information about the error to the user.
-      logger.warning('Error calculating Dart frames', e, s);
-    }
-
-    // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable
-    // after checking with Chrome team if there is a way to check if the Chrome
-    // DevTools is showing an overlay. Both cannot be shown at the same time.
-    // _showPausedOverlay();
-    isolate.pauseEvent = event;
-    final internalPauseCompleter = _internalPauseCompleter;
-    if (event.kind == EventKind.kPauseInterrupted &&
-        internalPauseCompleter != null &&
-        !internalPauseCompleter.isCompleted) {
-      internalPauseCompleter.complete();
-    } else {
-      _streamNotify('Debug', event);
-    }
-  }
-
-  /// Handles resume events coming from the Chrome connection.
-  void _resumeHandler(DebuggerResumedEvent? _) {
-    // We can receive a resume event in the middle of a reload which will result
-    // in a null isolate.
-    final isolate = inspector.isolate;
-
-    stackComputer = null;
-    final event = Event(
-      kind: EventKind.kResume,
-      timestamp: DateTime.now().millisecondsSinceEpoch,
-      isolate: inspector.isolateRef,
-    );
-
-    // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable
-    // after checking with Chrome team if there is a way to check if the Chrome
-    // DevTools is showing an overlay. Both cannot be shown at the same time.
-    // _hidePausedOverlay();
-    isolate.pauseEvent = event;
-    _streamNotify('Debug', event);
-  }
-
-  /// Handles targetCrashed events coming from the Chrome connection.
-  void _crashHandler(TargetCrashedEvent _) {
-    // We can receive a resume event in the middle of a reload which will result
-    // in a null isolate.
-    final isolate = inspector.isolate;
-
-    stackComputer = null;
-    final event = Event(
-      kind: EventKind.kIsolateExit,
-      timestamp: DateTime.now().millisecondsSinceEpoch,
-      isolate: inspector.isolateRef,
-    );
-    isolate.pauseEvent = event;
-    _streamNotify('Isolate', event);
-    logger.severe('Target crashed!');
-  }
-
-  WipCallFrame? jsFrameForIndex(int frameIndex) {
-    final computer = stackComputer;
-    if (computer == null) {
-      throw RPCError(
-        'evaluateInFrame',
-        106,
-        'Cannot evaluate on a call frame when the program is not paused',
-      );
-    }
-    return computer.jsFrameForIndex(frameIndex);
-  }
-
-  /// Evaluate [expression] by calling Chrome's Runtime.evaluateOnCallFrame on
-  /// the call frame with index [frameIndex] in the currently saved stack.
-  ///
-  /// If the program is not paused, so there is no current stack, throws a
-  /// [StateError].
-  Future<RemoteObject> evaluateJsOnCallFrameIndex(
-    int frameIndex,
-    String expression,
-  ) {
-    final index = jsFrameForIndex(frameIndex)?.callFrameId;
-    if (index == null) {
-      // This might happen on async frames.
-      throw StateError('No frame for frame index: $index');
-    }
-    return evaluateJsOnCallFrame(index, expression);
-  }
-
-  /// Evaluate [expression] by calling Chrome's Runtime.evaluateOnCallFrame on
-  /// the call frame with id [callFrameId].
-  Future<RemoteObject> evaluateJsOnCallFrame(
-    String callFrameId,
-    String expression,
-  ) async {
-    // TODO(alanknight): Support a version with arguments if needed.
-    try {
-      return await _remoteDebugger.evaluateOnCallFrame(callFrameId, expression);
-    } on ExceptionDetails catch (e) {
-      throw ChromeDebugException(e.json, evalContents: expression);
-    }
-  }
-}
-
-Future<T> sendCommandAndValidateResult<T>(
-  RemoteDebugger remoteDebugger, {
-  required String method,
-  required String resultField,
-  Map<String, dynamic>? params,
-}) async {
-  final response = await remoteDebugger.sendCommand(method, params: params);
-  final result = response.result?[resultField];
-  if (result == null) {
-    throw RPCError(
-      method,
-      RPCErrorKind.kInternalError.code,
-      '$resultField not found in result from sendCommand',
-      params,
-    );
-  }
-  return result as T;
-}
-
-/// Returns the breakpoint ID for the provided Dart script ID and Dart line
-/// number.
-String breakpointIdFor(String scriptId, int line, int column) =>
-    'bp/$scriptId#$line:$column';
-
-/// Keeps track of the Dart and JS breakpoint Ids that correspond.
-class _Breakpoints {
-  final _logger = Logger('Breakpoints');
-  final _dartIdByJsId = <String, String>{};
-  final _jsIdByDartId = <String, String>{};
-
-  final _bpByDartId = <String, Future<Breakpoint>>{};
-
-  final _queue = AtomicQueue();
-
-  final Locations locations;
-  final RemoteDebugger remoteDebugger;
-
-  late AppInspector inspector;
-
-  /// The root URI from which the application is served.
-  final String root;
-
-  _Breakpoints({
-    required this.locations,
-    required this.remoteDebugger,
-    required this.root,
-  });
-
-  Future<Breakpoint> _createBreakpoint(
-    String id,
-    String scriptId,
-    int line,
-    int column,
-  ) async {
-    final dartScript = inspector.scriptWithId(scriptId);
-    final dartScriptUri = dartScript?.uri;
-    Location? location;
-    if (dartScriptUri != null) {
-      final dartUri = DartUri(dartScriptUri, root);
-      location = await locations.locationForDart(dartUri, line, column);
-    }
-    // TODO: Handle cases where a breakpoint can't be set exactly at that line.
-    if (location == null) {
-      _logger.fine(
-        'Failed to set breakpoint $id '
-        '($scriptId:$line:$column): '
-        'cannot find Dart location.',
-      );
-      throw RPCError(
-        'addBreakpoint',
-        102,
-        'The VM is unable to add a breakpoint $id '
-            'at the specified line or function: ($scriptId:$line:$column): '
-            ' cannot find Dart location.',
-      );
-    }
-
-    try {
-      final dartBreakpoint = _dartBreakpoint(dartScript!, location, id);
-      final jsBreakpointId = await _setJsBreakpoint(location);
-      if (jsBreakpointId == null) {
-        _logger.fine(
-          'Failed to set breakpoint $id '
-          '($scriptId:$line:$column): '
-          'cannot set JS breakpoint.',
-        );
-        throw RPCError(
-          'addBreakpoint',
-          102,
-          'The VM is unable to add a breakpoint $id '
-              'at the specified line or function: ($scriptId:$line:$column): '
-              'cannot set JS breakpoint at $location',
-        );
-      }
-      _note(jsId: jsBreakpointId, bp: dartBreakpoint);
-      return dartBreakpoint;
-    } on WipError catch (wipError) {
-      throw RPCError('addBreakpoint', 102, '$wipError');
-    }
-  }
-
-  /// Adds a breakpoint at [scriptId] and [line] or returns an existing one if
-  /// present.
-  Future<Breakpoint> add(String scriptId, int line, int column) {
-    final id = breakpointIdFor(scriptId, line, column);
-    return _bpByDartId.putIfAbsent(
-      id,
-      () => _createBreakpoint(id, scriptId, line, column),
-    );
-  }
-
-  /// Create a Dart breakpoint at [location] in [dartScript] with [id].
-  Breakpoint _dartBreakpoint(
-    ScriptRef dartScript,
-    Location location,
-    String id,
-  ) {
-    final breakpoint = Breakpoint(
-      id: id,
-      breakpointNumber: int.parse(createId()),
-      resolved: true,
-      location: SourceLocation(
-        script: dartScript,
-        tokenPos: location.tokenPos,
-        line: location.dartLocation.line,
-        column: location.dartLocation.column,
-      ),
-      enabled: true,
-    )..id = id;
-    return breakpoint;
-  }
-
-  /// Calls the Chrome protocol setBreakpoint and returns the remote ID.
-  Future<String?> _setJsBreakpoint(Location location) {
-    // Prevent `Aww, snap!` errors when setting multiple breakpoints
-    // simultaneously by serializing the requests.
-    return _queue.run(() async {
-      final scriptId = location.jsLocation.runtimeScriptId;
-      if (scriptId != null) {
-        return sendCommandAndValidateResult<String>(
-          remoteDebugger,
-          method: 'Debugger.setBreakpoint',
-          resultField: 'breakpointId',
-          params: {
-            'location': {
-              'lineNumber': location.jsLocation.line,
-              'columnNumber': location.jsLocation.column,
-              'scriptId': scriptId,
-            },
-          },
-        );
-      } else {
-        _logger.fine('No runtime script ID for location $location');
-        return null;
-      }
-    });
-  }
-
-  /// Records the internal Dart <=> JS breakpoint id mapping and adds the
-  /// breakpoint to the current isolates list of breakpoints.
-  void _note({required Breakpoint bp, required String jsId}) {
-    final bpId = bp.id;
-    if (bpId != null) {
-      _dartIdByJsId[jsId] = bpId;
-      _jsIdByDartId[bpId] = jsId;
-      final isolate = inspector.isolate;
-      isolate.breakpoints?.add(bp);
-    }
-  }
-
-  Future<Breakpoint?> remove({
-    required String jsId,
-    required String dartId,
-  }) async {
-    final isolate = inspector.isolate;
-    _dartIdByJsId.remove(jsId);
-    _jsIdByDartId.remove(dartId);
-    isolate.breakpoints?.removeWhere((b) => b.id == dartId);
-    return await _bpByDartId.remove(dartId);
-  }
-
-  Future<Breakpoint>? breakpointFor(String dartId) => _bpByDartId[dartId];
-  String? jsIdFor(String dartId) => _jsIdByDartId[dartId];
-}
-
-final escapedPipe = '\$124';
-final escapedPound = '\$35';
-
-/// Reformats a JS member name to make it look more Dart-like.
-///
-/// Logic copied from build/build_web_compilers/web/stack_trace_mapper.dart.
-/// TODO(https://github.com/dart-lang/sdk/issues/38869): Remove this logic when
-/// DDC stack trace deobfuscation is overhauled.
-String _prettifyMember(String member) {
-  member = member.replaceAll(escapedPipe, '|');
-  if (member.contains('|')) {
-    return _prettifyExtension(member);
-  } else {
-    if (member.startsWith('[') && member.endsWith(']')) {
-      member = member.substring(1, member.length - 1);
-    }
-    return member;
-  }
-}
-
-/// Reformats a JS member name as an extension method invocation.
-String _prettifyExtension(String member) {
-  var isSetter = false;
-  final pipeIndex = member.indexOf('|');
-  final spaceIndex = member.indexOf(' ');
-  final poundIndex = member.indexOf(escapedPound);
-  if (spaceIndex >= 0) {
-    // Here member is a static field or static getter/setter.
-    isSetter = member.substring(0, spaceIndex) == 'set';
-    member = member.substring(spaceIndex + 1, member.length);
-  } else if (poundIndex >= 0) {
-    // Here member is a tear-off or local property getter/setter.
-    isSetter = member.substring(pipeIndex + 1, poundIndex) == 'set';
-    member = member.replaceRange(pipeIndex + 1, poundIndex + 3, '');
-  } else {
-    final body = member.substring(pipeIndex + 1, member.length);
-    if (body.startsWith('unary') || body.startsWith('\$')) {
-      // Here member's an operator, so it's safe to unescape everything lazily.
-      member = _unescape(member);
-    }
-  }
-  member = member.replaceAll('|', '.');
-  return isSetter ? '$member=' : member;
-}
-
-/// Un-escapes a DDC-escaped JS identifier name.
-///
-/// Identifier names that contain illegal JS characters are escaped by DDC to a
-/// decimal representation of the symbol's UTF-16 value.
-/// Warning: this greedily escapes characters, so it can be unsafe in the event
-/// that an escaped sequence precedes a number literal in the JS name.
-String _unescape(String name) {
-  return name.replaceAllMapped(
-    RegExp(r'\$[0-9]+'),
-    (m) => String.fromCharCode(int.parse(name.substring(m.start + 1, m.end))),
-  );
-}
diff --git a/dwds/lib/src/debugging/execution_context.dart b/dwds/lib/src/debugging/execution_context.dart
deleted file mode 100644
index 9263888..0000000
--- a/dwds/lib/src/debugging/execution_context.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:async/async.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:logging/logging.dart';
-
-abstract class ExecutionContext {
-  /// Returns the context ID that contains the running Dart application,
-  /// if available.
-  Future<int?> get id;
-}
-
-/// The execution context in which to do remote evaluations.
-class RemoteDebuggerExecutionContext extends ExecutionContext {
-  final RemoteDebugger _remoteDebugger;
-  final _logger = Logger('RemoteDebuggerExecutionContext');
-
-  /// Contexts that may contain a Dart application.
-  ///
-  /// Context can be null if an error has occurred and we cannot detect
-  /// and parse the context ID.
-  late StreamQueue<int> _contexts;
-  final _contextController = StreamController<int>();
-  final _seenContexts = <int>[];
-
-  int? _id;
-
-  Future<int?> _lookUpId() async {
-    _logger.fine('Looking for Dart execution context...');
-    const timeoutInMs = 100;
-    while (await _contexts.hasNext.timeout(
-      const Duration(milliseconds: timeoutInMs),
-      onTimeout: () {
-        _logger.warning(
-          'Timed out finding an execution context after $timeoutInMs ms.',
-        );
-        return false;
-      },
-    )) {
-      final context = await _contexts.next;
-      _seenContexts.add(context);
-      _logger.fine('Checking context id: $context');
-      try {
-        final result = await _remoteDebugger.sendCommand(
-          'Runtime.evaluate',
-          params: {
-            'expression': r'window["$dartAppInstanceId"];',
-            'contextId': context,
-          },
-        );
-        if ((result.result?['result'] as Map<String, dynamic>?)?['value'] !=
-            null) {
-          _logger.fine('Found dart execution context: $context');
-          return context;
-        }
-      } catch (_) {
-        // Errors may be thrown if we attempt to evaluate in a stale a context.
-        // Ignore and continue.
-        _logger.fine('Stale execution context: $context');
-        _seenContexts.remove(context);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Future<int?> get id async {
-    if (_id != null) return _id;
-
-    _id = await _lookUpId();
-    if (_id == null) {
-      // Add seen contexts back to the queue in case the injected
-      // client is still loading, so the next call to `id` succeeds.
-      _seenContexts.forEach(_contextController.add);
-      _seenContexts.clear();
-    }
-    return _id;
-  }
-
-  RemoteDebuggerExecutionContext(this._id, this._remoteDebugger) {
-    _remoteDebugger
-        .eventStream('Runtime.executionContextsCleared', (e) => e)
-        .listen((_) => _id = null);
-    _remoteDebugger
-        .eventStream('Runtime.executionContextCreated', (e) {
-          // Parse and add the context ID to the stream.
-          // If we cannot detect or parse the context ID, add `null` to the
-          // stream to indicate an error context - those will be skipped when
-          // trying to find the dart context, with a warning.
-          final id = (e.params?['context'] as Map<String, dynamic>?)?['id']
-              ?.toString();
-          final parsedId = id == null ? null : int.parse(id);
-          if (id == null) {
-            _logger.warning('Cannot find execution context id: $e');
-          } else if (parsedId == null) {
-            _logger.warning('Cannot parse execution context id: $id');
-          }
-          return parsedId;
-        })
-        .listen((e) {
-          if (e != null) _contextController.add(e);
-        });
-    _contexts = StreamQueue(_contextController.stream);
-  }
-}
diff --git a/dwds/lib/src/debugging/frame_computer.dart b/dwds/lib/src/debugging/frame_computer.dart
deleted file mode 100644
index c2f00f6..0000000
--- a/dwds/lib/src/debugging/frame_computer.dart
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/utilities/synchronized.dart';
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-class FrameComputer {
-  static final logger = Logger('FrameComputer');
-
-  final Debugger debugger;
-
-  // To ensure that the frames are computed only once, we use an atomic queue
-  // to guard the work. Frames are computed sequentially.
-  final _queue = AtomicQueue();
-
-  final List<WipCallFrame> _callFrames;
-  final List<Frame> _computedFrames = [];
-
-  var _frameIndex = 0;
-
-  StackTrace? _asyncStackTrace;
-  List<CallFrame>? _asyncFramesToProcess;
-
-  FrameComputer(this.debugger, this._callFrames, {this._asyncStackTrace});
-
-  /// Given a frame index, return the corresponding JS frame.
-  WipCallFrame? jsFrameForIndex(int frameIndex) {
-    // Clients can send us indices greater than the number of JS frames as async
-    // frames don't have corresponding WipCallFrames.
-    return frameIndex < _callFrames.length ? _callFrames[frameIndex] : null;
-  }
-
-  /// Translates Chrome callFrames contained in [DebuggerPausedEvent] into Dart
-  /// [Frame]s.
-  Future<List<Frame>> calculateFrames({int? limit}) {
-    return _queue.run(() async {
-      if (limit != null && _computedFrames.length >= limit) {
-        return _computedFrames.take(limit).toList();
-      }
-      // TODO(grouma) - We compute the frames sequentially. Consider computing
-      // frames in parallel batches.
-      await _collectSyncFrames(limit: limit);
-      await _collectAsyncFrames(limit: limit);
-
-      // Remove any trailing kAsyncSuspensionMarker frame.
-      if (limit == null &&
-          _computedFrames.isNotEmpty &&
-          _computedFrames.last.kind == FrameKind.kAsyncSuspensionMarker) {
-        _computedFrames.removeLast();
-      }
-
-      return _computedFrames;
-    });
-  }
-
-  Future<void> _collectSyncFrames({int? limit}) async {
-    while (_frameIndex < _callFrames.length) {
-      if (limit != null && _computedFrames.length == limit) return;
-      try {
-        final callFrame = _callFrames[_frameIndex];
-        final dartFrame = await debugger.calculateDartFrameFor(
-          callFrame,
-          _frameIndex++,
-        );
-        if (dartFrame != null) {
-          _computedFrames.add(dartFrame);
-        }
-      } catch (e) {
-        // If there is an error calculating the frame, then skip it.
-        logger.warning('Error calculating sync frame: $e');
-      }
-    }
-    debugger.logAnyFrameErrors(frameType: 'sync');
-  }
-
-  Future<void> _collectAsyncFrames({int? limit}) async {
-    if (_asyncStackTrace == null) return;
-
-    while (_asyncStackTrace != null) {
-      final asyncStackTrace = _asyncStackTrace!;
-      if (limit != null && _computedFrames.length == limit) {
-        return;
-      }
-
-      // We are processing a new set of async frames, add a suspension marker.
-      if (_asyncFramesToProcess == null) {
-        if (_computedFrames.isNotEmpty &&
-            _computedFrames.last.kind != FrameKind.kAsyncSuspensionMarker) {
-          _computedFrames.add(
-            Frame(index: _frameIndex++, kind: FrameKind.kAsyncSuspensionMarker),
-          );
-        }
-        _asyncFramesToProcess = asyncStackTrace.callFrames;
-      } else {
-        final asyncFramesToProcess = _asyncFramesToProcess!;
-        // Process a single async frame.
-        if (asyncFramesToProcess.isNotEmpty) {
-          try {
-            final callFrame = asyncFramesToProcess.removeAt(0);
-            final location = WipLocation.fromValues(
-              callFrame.scriptId,
-              callFrame.lineNumber,
-              columnNumber: callFrame.columnNumber,
-            );
-
-            final tempWipFrame = WipCallFrame(<String, dynamic>{
-              'url': callFrame.url,
-              'functionName': callFrame.functionName,
-              'location': location.json,
-              'scopeChain': <Map<String, dynamic>>[],
-            });
-
-            final frame = await debugger.calculateDartFrameFor(
-              tempWipFrame,
-              _frameIndex++,
-              populateVariables: false,
-            );
-            if (frame != null) {
-              frame.kind = FrameKind.kAsyncCausal;
-              _computedFrames.add(frame);
-            }
-          } catch (e) {
-            // If there is an error calculating the frame, then skip it.
-            logger.warning('Error calculating async frame: $e');
-          }
-        }
-        debugger.logAnyFrameErrors(frameType: 'async');
-      }
-
-      // Async frames are no longer on the stack - we don't have local variable
-      // information for them.
-      if (_asyncFramesToProcess!.isEmpty) {
-        _asyncStackTrace = asyncStackTrace.parent;
-        _asyncFramesToProcess = null;
-      }
-    }
-  }
-}
diff --git a/dwds/lib/src/debugging/inspector.dart b/dwds/lib/src/debugging/inspector.dart
deleted file mode 100644
index c926a4a..0000000
--- a/dwds/lib/src/debugging/inspector.dart
+++ /dev/null
@@ -1,229 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:collection';
-
-import 'package:async/async.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/libraries.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:meta/meta.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// An inspector for a running Dart application contained in the
-/// [WipConnection].
-///
-/// Provides information about currently loaded scripts and objects and support
-/// for eval.
-abstract class AppInspector {
-  var _scriptCacheMemoizer = AsyncMemoizer<List<ScriptRef>>();
-
-  Future<List<ScriptRef>> getScriptRefs({
-    ModifiedModuleReport? modifiedModuleReport,
-  }) => _populateScriptCaches(modifiedModuleReport: modifiedModuleReport);
-
-  /// Map of scriptRef ID to [ScriptRef].
-  UnmodifiableMapView<String, ScriptRef> get scriptRefsById =>
-      UnmodifiableMapView(_scriptRefsById);
-  final _scriptRefsById = <String, ScriptRef>{};
-
-  /// Map of Dart server path to [ScriptRef].
-  final _serverPathToScriptRef = <String, ScriptRef>{};
-
-  /// Map of [ScriptRef] id to containing [LibraryRef] id.
-  UnmodifiableMapView<String, String> get scriptIdToLibraryId =>
-      UnmodifiableMapView(_scriptIdToLibraryId);
-  final _scriptIdToLibraryId = <String, String>{};
-
-  /// Map of [Library] id to included [ScriptRef]s.
-  final _libraryIdToScriptRefs = <String, List<ScriptRef>>{};
-
-  final Isolate isolate;
-
-  final IsolateRef isolateRef;
-
-  final AppConnection appConnection;
-
-  LibraryHelper get libraryHelper;
-
-  /// The root URI from which the application is served.
-  final String root;
-
-  /// JavaScript expression that evaluates to the Dart stack trace mapper.
-  static const stackTraceMapperExpression = '\$dartStackTraceUtility.mapper';
-
-  /// Regex used to extract the message from an exception description.
-  static final exceptionMessageRegex = RegExp(r'^.*$', multiLine: true);
-
-  /// Flutter widget inspector library.
-  Future<LibraryRef?> get flutterWidgetInspectorLibrary => libraryHelper
-      .libraryRefFor('package:flutter/src/widgets/widget_inspector.dart');
-
-  /// Regex used to extract a stack trace line from the exception description.
-  static final stackTraceLineRegex = RegExp(r'^\s*at\s.*$', multiLine: true);
-
-  AppInspector(this.appConnection, this.isolate, this.root)
-    : isolateRef = _toIsolateRef(isolate);
-
-  /// Reset all caches and recompute any mappings.
-  ///
-  /// Should be called across hot reloads with a valid [ModifiedModuleReport].
-  @protected
-  @mustCallSuper
-  Future<void> initialize({ModifiedModuleReport? modifiedModuleReport}) async {
-    _scriptCacheMemoizer = AsyncMemoizer<List<ScriptRef>>();
-
-    // Invalidate `_libraryHelper` as we use it populate any script caches.
-    libraryHelper.initialize(modifiedModuleReport: modifiedModuleReport);
-    if (modifiedModuleReport == null) {
-      _scriptRefsById.clear();
-      _serverPathToScriptRef.clear();
-      _scriptIdToLibraryId.clear();
-      _libraryIdToScriptRefs.clear();
-    }
-
-    final libraries = await libraryHelper.libraryRefs;
-    isolate.rootLib = await libraryHelper.rootLib;
-    isolate.libraries?.clear();
-    isolate.libraries?.addAll(libraries);
-
-    final scripts = await getScriptRefs(
-      modifiedModuleReport: modifiedModuleReport,
-    );
-
-    await DartUri.initialize();
-    DartUri.recordAbsoluteUris(libraries.map((lib) => lib.uri).nonNulls);
-    DartUri.recordAbsoluteUris(scripts.map((script) => script.uri).nonNulls);
-  }
-
-  static IsolateRef _toIsolateRef(Isolate isolate) => IsolateRef(
-    id: isolate.id,
-    name: isolate.name,
-    number: isolate.number,
-    isSystemIsolate: isolate.isSystemIsolate,
-  );
-
-  Future<LibraryRef?> libraryRefFor(String objectId) =>
-      libraryHelper.libraryRefFor(objectId);
-
-  /// Returns the [ScriptRef] for the provided Dart server path [uri].
-  Future<ScriptRef?> scriptRefFor(String uri) async {
-    await _populateScriptCaches();
-    return _serverPathToScriptRef[uri];
-  }
-
-  /// Returns the [ScriptRef]s in the library with [libraryId].
-  Future<List<ScriptRef>> scriptRefsForLibrary(String libraryId) async {
-    await _populateScriptCaches();
-    return _libraryIdToScriptRefs[libraryId] ?? [];
-  }
-
-  /// All the scripts in the isolate.
-  Future<ScriptList> getScripts() async {
-    return ScriptList(scripts: await getScriptRefs());
-  }
-
-  /// Request and cache `<ScriptRef>`s for all the scripts in the application.
-  ///
-  /// This populates [_scriptRefsById], [_scriptIdToLibraryId],
-  /// [_libraryIdToScriptRefs] and [_serverPathToScriptRef].
-  ///
-  /// This will get repopulated on restarts and reloads.
-  ///
-  /// If [modifiedModuleReport] is provided, only invalidates and
-  /// recalculates caches for the modified libraries.
-  ///
-  /// Returns the list of scripts refs cached.
-  Future<List<ScriptRef>> _populateScriptCaches({
-    ModifiedModuleReport? modifiedModuleReport,
-  }) {
-    return _scriptCacheMemoizer.runOnce(() async {
-      final scripts = await globalToolConfiguration.loadStrategy
-          .metadataProviderFor(appConnection.request.entrypointPath)
-          .scripts;
-      if (modifiedModuleReport != null) {
-        // Invalidate any script caches that were computed for the now invalid
-        // libraries. They will get repopulated below.
-        for (final libraryUri in modifiedModuleReport.modifiedLibraries) {
-          final libraryRef = await libraryHelper.libraryRefFor(libraryUri);
-          final libraryId = libraryRef?.id;
-          // If this was not a pre-existing library, nothing to invalidate.
-          if (libraryId == null) continue;
-          final scriptRefs = _libraryIdToScriptRefs.remove(libraryId);
-          if (scriptRefs == null) continue;
-          for (final scriptRef in scriptRefs) {
-            final scriptId = scriptRef.id;
-            final scriptUri = scriptRef.uri;
-            if (scriptId != null && scriptUri != null) {
-              _scriptRefsById.remove(scriptId);
-              _scriptIdToLibraryId.remove(scriptId);
-              _serverPathToScriptRef.remove(
-                DartUri(scriptUri, root).serverPath,
-              );
-            }
-          }
-        }
-      }
-      // For all the non-dart: libraries, find their parts and create scriptRefs
-      // for them.
-      final userLibraries = _userLibraryUris(
-        isolate.libraries ?? <LibraryRef>[],
-      );
-      for (final uri in userLibraries) {
-        if (modifiedModuleReport?.modifiedLibraries.contains(uri) == false) {
-          continue;
-        }
-        final parts = scripts[uri];
-        final scriptRefs = [
-          ScriptRef(uri: uri, id: createId()),
-          if (parts != null)
-            for (final String part in parts)
-              ScriptRef(uri: part, id: createId()),
-        ];
-        final libraryRef = await libraryHelper.libraryRefFor(uri);
-        final libraryId = libraryRef?.id;
-        if (libraryId != null) {
-          final libraryIdToScriptRefs = _libraryIdToScriptRefs.putIfAbsent(
-            libraryId,
-            () => <ScriptRef>[],
-          );
-          for (final scriptRef in scriptRefs) {
-            final scriptId = scriptRef.id;
-            final scriptUri = scriptRef.uri;
-            if (scriptId != null && scriptUri != null) {
-              _scriptRefsById[scriptId] = scriptRef;
-              _scriptIdToLibraryId[scriptId] = libraryId;
-              _serverPathToScriptRef[DartUri(scriptUri, root).serverPath] =
-                  scriptRef;
-              libraryIdToScriptRefs.add(scriptRef);
-            }
-          }
-        }
-      }
-      return _scriptRefsById.values.toList();
-    });
-  }
-
-  Iterable<String> _userLibraryUris(Iterable<LibraryRef> libraries) {
-    return libraries
-        .map((library) => library.uri ?? '')
-        .where((uri) => uri.isNotEmpty && !uri.startsWith('dart:'));
-  }
-
-  /// Look up the script by id in an isolate.
-  ScriptRef? scriptWithId(String? scriptId) =>
-      scriptId == null ? null : _scriptRefsById[scriptId];
-
-  /// Runs an eval on the page to compute all existing registered extensions.
-  ///
-  /// Combines this with the RPCs registered in the [isolate]. Use this over
-  /// [Isolate.extensionRPCs] as this computes a live set.
-  ///
-  /// Updates [Isolate.extensionRPCs] to this set.
-  Future<Set<String>> getExtensionRpcs();
-}
diff --git a/dwds/lib/src/debugging/instance.dart b/dwds/lib/src/debugging/instance.dart
deleted file mode 100644
index b3dfd10..0000000
--- a/dwds/lib/src/debugging/instance.dart
+++ /dev/null
@@ -1,930 +0,0 @@
-// Copyright (c) 2019, 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:math';
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/metadata/class.dart';
-import 'package:dwds/src/debugging/metadata/function.dart';
-import 'package:dwds/src/utilities/conversions.dart';
-import 'package:dwds/src/utilities/objects.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Contains a set of methods for getting [Instance]s and [InstanceRef]s.
-class ChromeAppInstanceHelper {
-  final _logger = Logger('InstanceHelper');
-  final ChromeClassMetaDataHelper metadataHelper;
-  final ChromeAppInspector inspector;
-
-  ChromeAppInstanceHelper(this.inspector)
-    : metadataHelper = ChromeClassMetaDataHelper(inspector);
-
-  static final InstanceRef kNullInstanceRef = _primitiveInstanceRef(
-    InstanceKind.kNull,
-    null,
-  );
-
-  /// Creates an [InstanceRef] for a primitive [RemoteObject].
-  static InstanceRef _primitiveInstanceRef(
-    String kind,
-    RemoteObject? remoteObject,
-  ) {
-    final classRef = classRefFor('dart:core', kind);
-    return InstanceRef(
-      identityHashCode: dartIdFor(remoteObject?.value).hashCode,
-      kind: kind,
-      classRef: classRef,
-      id: dartIdFor(remoteObject?.value),
-      valueAsString: '${remoteObject?.value}',
-    );
-  }
-
-  /// Creates an [Instance] for a primitive [RemoteObject].
-  Instance? _primitiveInstance(String kind, RemoteObject? remoteObject) {
-    final objectId = remoteObject?.objectId;
-    if (objectId == null) return null;
-    return Instance(
-      identityHashCode: objectId.hashCode,
-      id: objectId,
-      kind: kind,
-      classRef: classRefFor('dart:core', kind),
-      valueAsString: '${remoteObject?.value}',
-    );
-  }
-
-  Instance? _stringInstanceFor(
-    RemoteObject? remoteObject,
-    int? offset,
-    int? count,
-  ) {
-    // TODO(#777) Consider a way of not passing the whole string around (in the
-    // ID) in order to find a substring.
-    final objectId = remoteObject?.objectId;
-    if (objectId == null) return null;
-    final fullString = stringFromDartId(objectId);
-    var preview = fullString;
-    var truncated = false;
-    if (offset != null || count != null) {
-      truncated = true;
-      final start = offset ?? 0;
-      final end = count == null ? null : min(start + count, fullString.length);
-      preview = fullString.substring(start, end);
-    }
-    return Instance(
-      identityHashCode: createId().hashCode,
-      kind: InstanceKind.kString,
-      classRef: classRefForString,
-      id: createId(),
-      valueAsString: preview,
-      valueAsStringIsTruncated: truncated,
-      length: fullString.length,
-      count: (truncated ? preview.length : null),
-      offset: (truncated ? offset : null),
-    );
-  }
-
-  Instance? _closureInstanceFor(RemoteObject remoteObject) {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-    final result = Instance(
-      kind: InstanceKind.kClosure,
-      id: objectId,
-      identityHashCode: remoteObject.objectId.hashCode,
-      classRef: classRefForClosure,
-    );
-    return result;
-  }
-
-  /// Create an [Instance] for the given [remoteObject].
-  ///
-  /// Does a remote eval to get instance information. Returns null if there
-  /// isn't a corresponding instance. For enumerable objects, [offset] and
-  /// [count] allow retrieving a sub-range of properties.
-  Future<Instance?> instanceFor(
-    RemoteObject? remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final primitive = _primitiveInstanceOrNull(remoteObject, offset, count);
-    if (primitive != null) {
-      return primitive;
-    }
-    final objectId = remoteObject?.objectId;
-    if (remoteObject == null || objectId == null) return null;
-
-    final metaData = await metadataHelper.metaDataFor(remoteObject);
-
-    final classRef = metaData?.classRef;
-    if (metaData == null || classRef == null) return null;
-
-    switch (metaData.runtimeKind) {
-      case RuntimeObjectKind.function:
-        return _closureInstanceFor(remoteObject);
-      case RuntimeObjectKind.recordType:
-        return await _recordTypeInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.type:
-        return await _plainTypeInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.list:
-        return await _listInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.set:
-        return await _setInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.map:
-        return await _mapInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.record:
-        return await _recordInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-      case RuntimeObjectKind.object:
-      case RuntimeObjectKind.nativeError:
-      case RuntimeObjectKind.nativeObject:
-        return await _plainInstanceFor(
-          metaData,
-          remoteObject,
-          offset: offset,
-          count: count,
-        );
-    }
-  }
-
-  /// If [remoteObject] represents a primitive, return an [Instance] for it,
-  /// otherwise return null.
-  Instance? _primitiveInstanceOrNull(
-    RemoteObject? remoteObject,
-    int? offset,
-    int? count,
-  ) {
-    switch (remoteObject?.type ?? 'undefined') {
-      case 'string':
-        return _stringInstanceFor(remoteObject, offset, count);
-      case 'number':
-        return _primitiveInstance(InstanceKind.kDouble, remoteObject);
-      case 'boolean':
-        return _primitiveInstance(InstanceKind.kBool, remoteObject);
-      case 'undefined':
-        return _primitiveInstance(InstanceKind.kNull, remoteObject);
-      default:
-        return null;
-    }
-  }
-
-  /// Create a bound field for [property] in an instance of [classRef].
-  Future<BoundField> _fieldFor(Property property, ClassRef classRef) async {
-    final instance = await _instanceRefForRemote(property.value);
-    // TODO(annagrin): convert JS name to dart and fill missing information.
-    //https://github.com/dart-lang/sdk/issues/46723
-    return BoundField(
-      name: property.name,
-      decl: FieldRef(
-        // TODO(grouma) - Convert JS name to Dart.
-        name: property.name,
-        declaredType: InstanceRef(
-          kind: InstanceKind.kType,
-          classRef: instance?.classRef,
-          identityHashCode: createId().hashCode,
-          id: createId(),
-        ),
-        owner: classRef,
-        isConst: false,
-        isFinal: false,
-        isStatic: false,
-        id: createId(),
-      ),
-      value: instance,
-    );
-  }
-
-  /// Create a plain instance of `classRef` from [remoteObject] and the JS
-  /// properties `properties`.
-  Future<Instance?> _plainInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-
-    final fields = await _getInstanceFields(
-      metaData,
-      remoteObject,
-      offset: offset,
-      count: count,
-    );
-
-    final result = Instance(
-      kind: InstanceKind.kPlainInstance,
-      id: objectId,
-      identityHashCode: remoteObject.objectId.hashCode,
-      classRef: metaData.classRef,
-      fields: fields,
-    );
-    return result;
-  }
-
-  Future<List<BoundField>> _getInstanceFields(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) throw StateError('Object id is null for instance');
-
-    final properties = await inspector.getProperties(
-      objectId,
-      offset: offset,
-      count: count,
-      length: metaData.kind != InstanceKind.kPlainInstance
-          ? metaData.length
-          : null,
-    );
-
-    final dartProperties = await _dartFieldsFor(properties, remoteObject);
-    final boundFields = await Future.wait(
-      dartProperties.map<Future<BoundField>>(
-        (p) => _fieldFor(p, metaData.classRef),
-      ),
-    );
-
-    return boundFields
-        .where((bv) => inspector.isDisplayableObject(bv.value))
-        .toList()
-      ..sort(_compareBoundFields);
-  }
-
-  int _compareBoundFields(BoundField a, BoundField b) {
-    final aName = a.decl?.name;
-    final bName = b.decl?.name;
-    if (aName == null) return bName == null ? 0 : -1;
-    if (bName == null) return 1;
-    return aName.compareTo(bName);
-  }
-
-  /// The associations for a Dart Map or IdentityMap.
-  ///
-  /// Returns a range of [count] associations, if available, starting from
-  /// the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  Future<List<MapAssociation>> _mapAssociations(
-    RemoteObject map, {
-    int? offset,
-    int? count,
-  }) async {
-    // We do this in in awkward way because we want the keys and values, but we
-    // can't return things by value or some Dart objects will come back as
-    // values that we need to be RemoteObject, e.g. a List of int.
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getMapElementsJsExpression();
-
-    final keysAndValues = await inspector.jsCallFunctionOn(map, expression, []);
-    final keys = await inspector.loadField(keysAndValues, 'keys');
-    final values = await inspector.loadField(keysAndValues, 'values');
-    final keysInstance = await instanceFor(keys, offset: offset, count: count);
-    final valuesInstance = await instanceFor(
-      values,
-      offset: offset,
-      count: count,
-    );
-    final associations = <MapAssociation>[];
-    final keyElements = keysInstance?.elements;
-    final valueElements = valuesInstance?.elements;
-    if (keyElements != null && valueElements != null) {
-      Map.fromIterables(keyElements, valueElements).forEach((key, value) {
-        associations.add(MapAssociation(key: key, value: value));
-      });
-    }
-    return associations;
-  }
-
-  /// Create a Map instance with class `classRef` from [remoteObject].
-  ///
-  /// Returns an instance containing [count] associations, if available,
-  /// starting from the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// `length` is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<Instance?> _mapInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-
-    // Maps are complicated, do an eval to get keys and values.
-    final associations = await _mapAssociations(
-      remoteObject,
-      offset: offset,
-      count: count,
-    );
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      elementCount: associations.length,
-      length: metaData.length,
-    );
-    return Instance(
-      identityHashCode: remoteObject.objectId.hashCode,
-      kind: InstanceKind.kMap,
-      id: objectId,
-      classRef: metaData.classRef,
-      length: metaData.length,
-      offset: offset,
-      count: rangeCount,
-      associations: associations,
-    );
-  }
-
-  /// Create a List instance of `classRef` from [remoteObject].
-  ///
-  /// Returns an instance containing [count] elements, if available,
-  /// starting from the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// `length` is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<Instance?> _listInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-
-    final elements = await _listElements(
-      remoteObject,
-      offset: offset,
-      count: count,
-      length: metaData.length,
-    );
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      elementCount: elements.length,
-      length: metaData.length,
-    );
-    return Instance(
-      identityHashCode: remoteObject.objectId.hashCode,
-      kind: InstanceKind.kList,
-      id: objectId,
-      classRef: metaData.classRef,
-      length: metaData.length,
-      elements: elements,
-      offset: offset,
-      count: rangeCount,
-    );
-  }
-
-  /// The elements for a Dart List.
-  ///
-  /// Returns a range of [count] elements, if available, starting from
-  /// the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// [length] is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<List<InstanceRef?>> _listElements(
-    RemoteObject list, {
-    int? offset,
-    int? count,
-    int? length,
-  }) async {
-    final properties = await inspector.getProperties(
-      list.objectId!,
-      offset: offset,
-      count: count,
-      length: length,
-    );
-
-    // Filter out all non-indexed properties
-    final elements = _indexedListProperties(properties);
-
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      elementCount: elements.length,
-      length: length,
-    );
-    final range = elements.sublist(0, rangeCount);
-
-    return Future.wait(
-      range.map((element) => _instanceRefForRemote(element.value)),
-    );
-  }
-
-  /// Return elements of the list from [properties].
-  ///
-  /// Ignore any non-elements like 'length', 'fixed$length', etc.
-  static List<Property> _indexedListProperties(List<Property> properties) =>
-      properties
-          .where((p) => p.name != null && int.tryParse(p.name!) != null)
-          .toList();
-
-  /// The field names for a Dart record shape.
-  ///
-  /// Returns a range of [count] fields, if available, starting from
-  /// the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// The [shape] object describes the shape using `positionalCount`
-  /// and `named` fields.
-  ///
-  /// Returns list of field names for the record shape.
-  Future<List<dynamic>> _recordShapeFields(
-    RemoteObject shape, {
-    int? offset,
-    int? count,
-  }) async {
-    final positionalCountObject = await inspector.loadField(
-      shape,
-      'positionalCount',
-    );
-    if (positionalCountObject.value is! int) {
-      _logger.warning(
-        'Unexpected positional count from record: $positionalCountObject',
-      );
-      return [];
-    }
-
-    final namedObject = await inspector.loadField(shape, 'named');
-    final positionalCount = positionalCountObject.value as int;
-    final positionalOffset = offset ?? 0;
-    final positionalAvailable = _remainingCount(
-      positionalOffset,
-      positionalCount,
-    );
-    final positionalRangeCount = min(
-      positionalAvailable,
-      count ?? positionalAvailable,
-    );
-    final positionalElements = [
-      for (
-        var i = positionalOffset + 1;
-        i <= positionalOffset + positionalRangeCount;
-        i++
-      )
-        i,
-    ];
-
-    // Collect named fields in the requested range.
-    // Account for already collected positional fields.
-    final namedRangeOffset = offset == null
-        ? null
-        : _remainingCount(positionalCount, offset);
-    final namedRangeCount = count == null
-        ? null
-        : _remainingCount(positionalRangeCount, count);
-    final namedInstance = await instanceFor(
-      namedObject,
-      offset: namedRangeOffset,
-      count: namedRangeCount,
-    );
-    final namedElements =
-        (namedInstance?.elements as List<InstanceRef?>?)?.map(
-          (e) => e?.valueAsString,
-        ) ??
-        [];
-
-    return [...positionalElements, ...namedElements];
-  }
-
-  /// The fields for a Dart Record.
-  ///
-  /// Returns a range of [count] fields, if available, starting from
-  /// the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  Future<List<BoundField>> _recordFields(
-    RemoteObject record, {
-    int? offset,
-    int? count,
-  }) async {
-    // We do this in in awkward way because we want the keys and values, but we
-    // can't return things by value or some Dart objects will come back as
-    // values that we need to be RemoteObject, e.g. a List of int.
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getRecordFieldsJsExpression();
-
-    final result = await inspector.jsCallFunctionOn(record, expression, []);
-    final fieldNameElements = await _recordShapeFields(
-      result,
-      offset: offset,
-      count: count,
-    );
-
-    final valuesObject = await inspector.loadField(result, 'values');
-    final valuesInstance = await instanceFor(
-      valuesObject,
-      offset: offset,
-      count: count,
-    );
-    final valueElements = valuesInstance?.elements ?? [];
-
-    return _elementsToBoundFields(fieldNameElements, valueElements);
-  }
-
-  /// Create a list of `BoundField`s from field [names] and [values].
-  List<BoundField> _elementsToBoundFields(
-    List<dynamic> names,
-    List<dynamic> values,
-  ) {
-    if (names.length != values.length) {
-      _logger.warning('Bound field names and values are not the same length.');
-      return [];
-    }
-
-    final boundFields = <BoundField>[];
-    Map.fromIterables(names, values).forEach((name, value) {
-      boundFields.add(BoundField(name: name, value: value));
-    });
-    return boundFields;
-  }
-
-  static int _remainingCount(int collected, int requested) {
-    return requested < collected ? 0 : requested - collected;
-  }
-
-  /// Create a Record instance with class `classRef` from [remoteObject].
-  ///
-  /// Returns an instance containing [count] fields, if available,
-  /// starting from the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// `length` is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<Instance?> _recordInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-    // Records are complicated, do an eval to get names and values.
-    final fields = await _recordFields(
-      remoteObject,
-      offset: offset,
-      count: count,
-    );
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      elementCount: fields.length,
-      length: metaData.length,
-    );
-    return Instance(
-      identityHashCode: remoteObject.objectId.hashCode,
-      kind: InstanceKind.kRecord,
-      id: objectId,
-      classRef: metaData.classRef,
-      length: metaData.length,
-      offset: offset,
-      count: rangeCount,
-      fields: fields,
-    );
-  }
-
-  /// Create a RecordType instance with class `classRef` from [remoteObject].
-  ///
-  /// Returns an instance containing [count] fields, if available,
-  /// starting from the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all fields starting from the offset.
-  /// `length` is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<Instance?> _recordTypeInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-
-    // Records are complicated, do an eval to get names and values.
-    final fields = await _recordTypeFields(
-      remoteObject,
-      offset: offset,
-      count: count,
-    );
-    final rangeCount = _calculateRangeCount(
-      count: count,
-      elementCount: fields.length,
-      length: metaData.length,
-    );
-    return Instance(
-      identityHashCode: remoteObject.objectId.hashCode,
-      kind: InstanceKind.kRecordType,
-      id: objectId,
-      classRef: metaData.classRef,
-      length: metaData.length,
-      offset: offset,
-      count: rangeCount,
-      fields: fields,
-    );
-  }
-
-  /// The field types for a Dart RecordType.
-  ///
-  /// Returns a range of [count] field types, if available, starting from
-  /// the [offset].
-  ///
-  /// If [offset] is `null`, assumes 0 offset.
-  /// If [count] is `null`, return all field types starting from the offset.
-  Future<List<BoundField>> _recordTypeFields(
-    RemoteObject record, {
-    int? offset,
-    int? count,
-  }) async {
-    // We do this in in awkward way because we want the names and types, but we
-    // can't return things by value or some Dart objects will come back as
-    // values that we need to be RemoteObject, e.g. a List of int.
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getRecordTypeFieldsJsExpression();
-
-    final result = await inspector.jsCallFunctionOn(record, expression, []);
-    final fieldNameElements = await _recordShapeFields(
-      result,
-      offset: offset,
-      count: count,
-    );
-
-    final typesObject = await inspector.loadField(result, 'types');
-    final typesInstance = await instanceFor(
-      typesObject,
-      offset: offset,
-      count: count,
-    );
-    final typeElements = typesInstance?.elements ?? [];
-
-    return _elementsToBoundFields(fieldNameElements, typeElements);
-  }
-
-  Future<Instance?> _setInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final length = metaData.length;
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getSetElementsJsExpression();
-
-    final result = await inspector.jsCallFunctionOn(
-      remoteObject,
-      expression,
-      [],
-    );
-    final entriesObject = await inspector.loadField(result, 'entries');
-    final entriesInstance = await instanceFor(
-      entriesObject,
-      offset: offset,
-      count: count,
-    );
-    final elements = entriesInstance?.elements ?? [];
-
-    final setInstance = Instance(
-      identityHashCode: remoteObject.objectId.hashCode,
-      kind: InstanceKind.kSet,
-      id: objectId,
-      classRef: metaData.classRef,
-      length: length,
-      elements: elements,
-    );
-
-    if (offset != null && offset > 0) {
-      setInstance.offset = offset;
-    }
-    if (length != null && elements.length < length) {
-      setInstance.count = elements.length;
-    }
-
-    return setInstance;
-  }
-
-  /// Create Type instance with class `classRef` from [remoteObject].
-  ///
-  /// Collect information from the internal [remoteObject] and present
-  /// it as an instance of [Type] class.
-  ///
-  /// Returns an instance containing `hashCode` and `runtimeType` fields.
-  /// `length` is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  Future<Instance?> _plainTypeInstanceFor(
-    ClassMetaData metaData,
-    RemoteObject remoteObject, {
-    int? offset,
-    int? count,
-  }) async {
-    final objectId = remoteObject.objectId;
-    if (objectId == null) return null;
-
-    final fields = await _getInstanceFields(
-      metaData,
-      remoteObject,
-      offset: offset,
-      count: count,
-    );
-
-    return Instance(
-      identityHashCode: objectId.hashCode,
-      kind: InstanceKind.kType,
-      id: objectId,
-      classRef: metaData.classRef,
-      name: metaData.typeName,
-      length: metaData.length,
-      offset: offset,
-      count: count,
-      fields: fields,
-    );
-  }
-
-  /// Return the available count of elements in the requested range.
-  /// Return `null` if the range includes the whole object.
-  /// [count] is the range length requested by the `getObject` call.
-  /// [elementCount] is the number of elements in the runtime object.
-  /// [length] is the expected length of the whole object, read from
-  /// the [ClassMetaData].
-  static int? _calculateRangeCount({
-    int? count,
-    int? elementCount,
-    int? length,
-  }) {
-    if (count == null) return null;
-    if (elementCount == null) return null;
-    if (length == elementCount) return null;
-    return min(count, elementCount);
-  }
-
-  /// Filter [allJsProperties] and return a list containing only those
-  /// that correspond to Dart fields on [remoteObject].
-  ///
-  /// This only applies to objects with named fields, not Lists or Maps.
-  Future<List<Property>> _dartFieldsFor(
-    List<Property> allJsProperties,
-    RemoteObject remoteObject,
-  ) async {
-    // An expression to find the field names from the types, extract both
-    // private (named by symbols) and public (named by strings) and return them
-    // as a comma-separated single string, so we can return it by value and not
-    // need to make multiple round trips.
-    //
-    // For maps and lists it's more complicated. Treat the actual SDK versions
-    // of these as special.
-    final fieldNameExpression = globalToolConfiguration
-        .loadStrategy
-        .dartRuntimeDebugger
-        .getObjectFieldNamesJsExpression();
-    final result = await inspector.jsCallFunctionOn(
-      remoteObject,
-      fieldNameExpression,
-      [],
-      returnByValue: true,
-    );
-    final names = List<String>.from(result.value as List);
-    // TODO(#761): Better support for large collections.
-    return allJsProperties
-        .where((property) => names.contains(property.name))
-        .toList();
-  }
-
-  /// Create an InstanceRef for an object, which may be a RemoteObject, or may
-  /// be something returned by value from Chrome, e.g. number, boolean, or
-  /// String.
-  Future<InstanceRef?> instanceRefFor(Object value) {
-    final remote = value is RemoteObject
-        ? value
-        : RemoteObject({'value': value, 'type': _chromeType(value)});
-    return _instanceRefForRemote(remote);
-  }
-
-  /// The Chrome type for a value.
-  String? _chromeType(Object? value) {
-    if (value == null) return null;
-    if (value is String) return 'string';
-    if (value is num) return 'number';
-    if (value is bool) return 'boolean';
-    if (value is Function) return 'function';
-    return 'object';
-  }
-
-  /// Create an [InstanceRef] for the given Chrome [remoteObject].
-  Future<InstanceRef?> _instanceRefForRemote(RemoteObject? remoteObject) async {
-    // If we have a null result, treat it as a reference to null.
-    if (remoteObject == null) {
-      return kNullInstanceRef;
-    }
-
-    switch (remoteObject.type) {
-      case 'string':
-        final stringValue = remoteObject.value as String?;
-        // TODO: Support truncation for long strings.
-        // TODO(#777): dartIdFor() will return an ID containing the entire
-        // string, even if we're truncating the string value here.
-        return InstanceRef(
-          identityHashCode: dartIdFor(remoteObject.value).hashCode,
-          id: dartIdFor(remoteObject.value),
-          classRef: classRefForString,
-          kind: InstanceKind.kString,
-          valueAsString: stringValue,
-          length: stringValue?.length,
-        );
-      case 'number':
-        return _primitiveInstanceRef(InstanceKind.kDouble, remoteObject);
-      case 'boolean':
-        return _primitiveInstanceRef(InstanceKind.kBool, remoteObject);
-      case 'undefined':
-        return _primitiveInstanceRef(InstanceKind.kNull, remoteObject);
-      case 'object':
-        final objectId = remoteObject.objectId;
-        if (objectId == null) {
-          return _primitiveInstanceRef(InstanceKind.kNull, remoteObject);
-        }
-        final metaData = await metadataHelper.metaDataFor(remoteObject);
-        if (metaData == null) return null;
-
-        return InstanceRef(
-          kind: metaData.kind,
-          id: objectId,
-          identityHashCode: objectId.hashCode,
-          classRef: metaData.classRef,
-          length: metaData.length,
-          name: metaData.typeName,
-        );
-      case 'function':
-        final objectId = remoteObject.objectId;
-        if (objectId == null) {
-          return _primitiveInstanceRef(InstanceKind.kNull, remoteObject);
-        }
-        final functionMetaData = await FunctionMetaData.metaDataFor(
-          inspector.remoteDebugger,
-          remoteObject,
-        );
-        // TODO(annagrin) - fill missing information.
-        // https://github.com/dart-lang/sdk/issues/46723
-        return InstanceRef(
-          kind: InstanceKind.kClosure,
-          id: objectId,
-          identityHashCode: objectId.hashCode,
-          classRef: classRefForClosure,
-          closureFunction: FuncRef(
-            name: functionMetaData.name,
-            id: createId(),
-            owner: classRefForUnknown,
-            isConst: false,
-            isStatic: false,
-            implicit: false,
-            isGetter: false,
-            isSetter: false,
-          ),
-          closureContext: ContextRef(length: 0, id: createId()),
-        );
-      default:
-        // Return null for an unsupported type. This is likely a JS construct.
-        return null;
-    }
-  }
-}
diff --git a/dwds/lib/src/debugging/libraries.dart b/dwds/lib/src/debugging/libraries.dart
deleted file mode 100644
index d551f77..0000000
--- a/dwds/lib/src/debugging/libraries.dart
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:collection/collection.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/debugging/metadata/class.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:logging/logging.dart';
-import 'package:meta/meta.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Keeps track of Dart libraries available in the running application.
-class LibraryHelper<T extends AppInspector> {
-  final Logger _logger = Logger('LibraryHelper');
-
-  /// Map of library ID to [Library].
-  final _librariesById = <String, Library>{};
-
-  /// Map of libraryRef ID to [LibraryRef].
-  final _libraryRefsById = <String, LibraryRef>{};
-
-  LibraryRef? _rootLib;
-
-  final T inspector;
-
-  LibraryHelper(this.inspector);
-
-  /// Initialize any caches.
-  ///
-  /// If [modifiedModuleReport] is not null, invalidates only modified libraries
-  /// from the cache and recomputes values for any eager caches.
-  @mustCallSuper
-  void initialize({ModifiedModuleReport? modifiedModuleReport}) {
-    _rootLib = null;
-    if (modifiedModuleReport != null) {
-      for (final library in modifiedModuleReport.modifiedLibraries) {
-        // These will later be initialized by `libraryFor` if needed.
-        _librariesById.remove(library);
-        _libraryRefsById.remove(library);
-      }
-      for (final library in modifiedModuleReport.reloadedLibraries) {
-        // These need to be recomputed here as `libraryRefs` only checks if this
-        // map is empty before returning.
-        _libraryRefsById[library] = _createLibraryRef(library);
-      }
-      return;
-    }
-    _librariesById.clear();
-    _libraryRefsById.clear();
-  }
-
-  Future<LibraryRef> get rootLib async {
-    if (_rootLib != null) return _rootLib!;
-    final libraries = await libraryRefs;
-    final mainLibrary =
-        globalToolConfiguration.loadStrategy.buildSettings.appEntrypoint;
-    if (mainLibrary != null) {
-      _rootLib = libraries.firstWhereOrNull(
-        (lib) => Uri.parse(lib.uri ?? '') == mainLibrary,
-      );
-    }
-    _rootLib =
-        _rootLib ??
-        libraries.firstWhereOrNull(
-          (lib) => lib.name?.contains('org-dartlang') ?? false,
-        );
-    _rootLib =
-        _rootLib ??
-        libraries.firstWhereOrNull(
-          (lib) => lib.name?.contains('main') ?? false,
-        );
-    _rootLib = _rootLib ?? (libraries.isNotEmpty ? libraries.last : null);
-    return _rootLib!;
-  }
-
-  LibraryRef _createLibraryRef(String library) =>
-      LibraryRef(id: library, name: library, uri: library);
-
-  /// Returns all libraryRefs in the app.
-  ///
-  /// Note this can return a cached result that can be selectively reinitialized
-  /// using [initialize].
-  Future<List<LibraryRef>> get libraryRefs async {
-    if (_libraryRefsById.isNotEmpty) return _libraryRefsById.values.toList();
-    final libraries = await globalToolConfiguration.loadStrategy
-        .metadataProviderFor(inspector.appConnection.request.entrypointPath)
-        .libraries;
-    for (final library in libraries) {
-      _libraryRefsById[library] = _createLibraryRef(library);
-    }
-    return _libraryRefsById.values.toList();
-  }
-
-  Future<LibraryRef?> libraryRefFor(String objectId) async {
-    if (_libraryRefsById.isEmpty) await libraryRefs;
-    return _libraryRefsById[objectId];
-  }
-}
-
-class ChromeLibraryHelper extends LibraryHelper<ChromeAppInspector> {
-  ChromeLibraryHelper(super.inspector);
-
-  Future<Library?> libraryFor(LibraryRef libraryRef) async {
-    final libraryId = libraryRef.id;
-    if (libraryId == null) return null;
-    final library =
-        _librariesById[libraryId] ?? await _constructLibrary(libraryRef);
-    if (library == null) return null;
-    return _librariesById[libraryId] = library;
-  }
-
-  Future<Library?> _constructLibrary(LibraryRef libraryRef) async {
-    final libraryId = libraryRef.id;
-    final libraryUri = libraryRef.uri;
-    if (libraryId == null || libraryUri == null) return null;
-    // Fetch information about all the classes in this library.
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .getClassesInLibraryJsExpression(libraryUri);
-
-    RemoteObject? result;
-    try {
-      result = await inspector.jsEvaluate(expression, returnByValue: true);
-    } on ChromeDebugException catch (_) {
-      // Unreferenced libraries are not loaded at runtime,
-      // return empty library object for consistency among
-      // VM Service implementations.
-      // TODO: Collect library and class information from debug symbols.
-      _logger.warning(
-        'Library ${libraryRef.uri} is not loaded. '
-        'This can happen for unreferenced libraries.',
-      );
-    }
-    final classRefs = <ClassRef>[];
-    if (result != null) {
-      final classNames = result.value as List;
-
-      for (final className in classNames) {
-        final classMetaData = ClassMetaData(
-          runtimeKind: RuntimeObjectKind.type,
-          classRef: classRefFor(libraryRef.id, className),
-        );
-        classRefs.add(classMetaData.classRef);
-      }
-    }
-    return Library(
-      name: libraryRef.name,
-      uri: libraryRef.uri,
-      debuggable: true,
-      dependencies: [],
-      scripts: await inspector.scriptRefsForLibrary(libraryId),
-      variables: [],
-      functions: [],
-      classes: classRefs,
-      id: libraryId,
-    );
-  }
-}
diff --git a/dwds/lib/src/debugging/location.dart b/dwds/lib/src/debugging/location.dart
deleted file mode 100644
index b2c07dc..0000000
--- a/dwds/lib/src/debugging/location.dart
+++ /dev/null
@@ -1,424 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:async/async.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/debugging/modules.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-import 'package:source_maps/parser.dart';
-import 'package:source_maps/source_maps.dart';
-
-var _startTokenId = 1337;
-
-/// A source location, with both Dart and JS information.
-class Location {
-  final JsLocation jsLocation;
-
-  final DartLocation dartLocation;
-
-  /// An arbitrary integer value used to represent this location.
-  final int tokenPos;
-
-  Location._(this.jsLocation, this.dartLocation) : tokenPos = _startTokenId++;
-
-  static Location from(
-    String module,
-    TargetLineEntry lineEntry,
-    TargetEntry entry,
-    DartUri dartUri,
-    String? runtimeScriptId,
-  ) {
-    final dartLine = entry.sourceLine;
-    final dartColumn = entry.sourceColumn;
-    final jsLine = lineEntry.line;
-    final jsColumn = entry.column;
-
-    // lineEntry data is 0 based according to:
-    // https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k
-    return Location._(
-      JsLocation.fromZeroBased(module, jsLine, jsColumn, runtimeScriptId),
-      DartLocation.fromZeroBased(dartUri, dartLine ?? 0, dartColumn ?? 0),
-    );
-  }
-
-  @override
-  String toString() => '$dartLocation -> $jsLocation';
-}
-
-/// Location information for a Dart source.
-class DartLocation {
-  final DartUri uri;
-
-  /// 1 based row offset within the Dart source code.
-  final int line;
-
-  /// 1 based column offset within the Dart source code.
-  final int column;
-
-  DartLocation._(this.uri, this.line, this.column);
-
-  int compareTo(DartLocation other) => compareToLine(other.line, other.column);
-
-  int compareToLine(int otherLine, int otherColumn) {
-    final result = line.compareTo(otherLine);
-    return result == 0 ? column.compareTo(otherColumn) : result;
-  }
-
-  @override
-  int get hashCode => Object.hashAll([uri, line, column]);
-
-  @override
-  bool operator ==(Object other) {
-    if (other is! DartLocation) {
-      return false;
-    }
-    return uri.serverPath == other.uri.serverPath &&
-        line == other.line &&
-        column == other.column;
-  }
-
-  @override
-  String toString() => '[${uri.serverPath}:$line:$column]';
-
-  factory DartLocation.fromZeroBased(DartUri uri, int line, int column) =>
-      DartLocation._(uri, line + 1, column + 1);
-}
-
-/// Location information for a JS source.
-class JsLocation {
-  final String module;
-
-  /// 0 based row offset within the JS source code.
-  final int line;
-
-  /// 0 based column offset within the JS source code.
-  final int column;
-
-  /// The Runtime.ScriptId of a script in Chrome.
-  ///
-  /// See https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-ScriptId
-  String? runtimeScriptId;
-
-  JsLocation._(this.module, this.line, this.column, this.runtimeScriptId);
-
-  int compareTo(JsLocation other) => compareToLine(other.line, other.column);
-
-  int compareToLine(int otherLine, int otherColumn) {
-    final result = line.compareTo(otherLine);
-    return result == 0 ? column.compareTo(otherColumn) : result;
-  }
-
-  @override
-  String toString() => '[$module:$line:$column]';
-
-  // JS Location is 0 based according to:
-  // https://chromedevtools.github.io/devtools-protocol/tot/Debugger#type-Location
-  factory JsLocation.fromZeroBased(
-    String module,
-    int line,
-    int column,
-    String? runtimeScriptId,
-  ) => JsLocation._(module, line, column, runtimeScriptId);
-}
-
-/// Contains meta data for known [Location]s.
-class Locations {
-  final _logger = Logger('Locations');
-
-  /// [Location] data for Dart server path.
-  final Map<String, Set<Location>> _sourceToLocation = {};
-  final Map<String, AsyncMemoizer<Set<Location>>> _locationMemoizer = {};
-
-  /// `tokenPosTable` for Dart server path, as defined in the
-  /// Dart VM Service Protocol:
-  /// https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md#script
-  final Map<String, List<List<int>>> _sourceToTokenPosTable = {};
-
-  /// The set of all known [Location]s for a module.
-  final Map<String, Set<Location>> _moduleToLocations = {};
-
-  final AssetReader _assetReader;
-  final Modules _modules;
-  final String _root;
-
-  late String _entrypoint;
-
-  Locations(this._assetReader, this._modules, this._root);
-
-  Modules get modules => _modules;
-
-  /// Initialize any caches.
-  ///
-  /// If [modifiedModuleReport] is not null, only invalidates the caches for the
-  /// modified modules instead.
-  Future<void> initialize(
-    String entrypoint, {
-    ModifiedModuleReport? modifiedModuleReport,
-  }) async {
-    // If we know that only certain modules are deleted or added, we can only
-    // invalidate those.
-    if (modifiedModuleReport != null) {
-      for (final module in modifiedModuleReport.modifiedModules) {
-        _locationMemoizer.remove(module);
-        _moduleToLocations.remove(module);
-        final sources = await _modules.sourcesForModule(module);
-        if (sources != null) {
-          for (final serverPath in sources) {
-            _sourceToTokenPosTable.remove(serverPath);
-            _sourceToLocation.remove(serverPath);
-          }
-        }
-      }
-      return;
-    }
-    _locationMemoizer.clear();
-    _moduleToLocations.clear();
-    _sourceToTokenPosTable.clear();
-    _sourceToLocation.clear();
-    _entrypoint = entrypoint;
-  }
-
-  /// Returns all [Location] data for a provided Dart source.
-  Future<Set<Location>> locationsForDart(String serverPath) async {
-    final module = await _modules.moduleForSource(serverPath);
-    if (module == null) {
-      _logger.warning('No module for server path $serverPath');
-    } else {
-      await _locationsForModule(module);
-    }
-    return _sourceToLocation[serverPath] ?? {};
-  }
-
-  /// Returns all [Location] data for a provided JS server path.
-  Future<Set<Location>> locationsForUrl(String url) async {
-    if (url.isEmpty) return {};
-
-    final dartUri = DartUri(url, _root);
-    final serverPath = dartUri.serverPath;
-    final module = await globalToolConfiguration.loadStrategy
-        .moduleForServerPath(_entrypoint, serverPath);
-
-    final cache = _moduleToLocations[module];
-    if (cache != null) return cache;
-    if (module != null) {
-      await _locationsForModule(module);
-    }
-    return _moduleToLocations[module] ?? {};
-  }
-
-  /// Find the [Location] for the given Dart source position.
-  ///
-  /// The [line] number is 1-based.
-  Future<Location?> locationForDart(DartUri uri, int line, int column) async {
-    final locations = await locationsForDart(uri.serverPath);
-    return _bestDartLocation(locations, line, column);
-  }
-
-  /// Find the [Location] for the given JS source position.
-  ///
-  /// The [line] number is 0-based.
-  Future<Location?> locationForJs(String url, int line, int? column) async {
-    final locations = await locationsForUrl(url);
-    return _bestJsLocation(locations, line, column);
-  }
-
-  /// Find closest existing Dart location for the line and column.
-  ///
-  /// Dart columns for breakpoints are either exact or start at the
-  /// beginning of the line - return the first existing location
-  /// that comes after the given column.
-  Location? _bestDartLocation(
-    Iterable<Location> locations,
-    int line,
-    int column,
-  ) {
-    Location? bestLocation;
-    for (final location in locations) {
-      if (location.dartLocation.line == line &&
-          location.dartLocation.column >= column) {
-        bestLocation ??= location;
-        if (location.dartLocation.compareTo(bestLocation.dartLocation) < 0) {
-          bestLocation = location;
-        }
-      }
-    }
-    return bestLocation;
-  }
-
-  /// Find closest existing JavaScript location for the line and column.
-  ///
-  /// Some JS locations are not stored in the source maps, so we find the
-  /// closest existing location coming before the given column.
-  ///
-  /// This is a known problem that other code bases solve using by finding
-  /// the closest location to the current one:
-  ///
-  /// https://github.com/microsoft/vscode-js-debug/blob/536f96bae61a3d87546b61bc7916097904c81429/src/common/sourceUtils.ts#L286
-  Location? _bestJsLocation(
-    Iterable<Location> locations,
-    int line,
-    int? column,
-  ) {
-    column ??= 0;
-    Location? bestLocation;
-    for (final location in locations) {
-      if (location.jsLocation.compareToLine(line, column) <= 0) {
-        bestLocation ??= location;
-        if (location.jsLocation.compareTo(bestLocation.jsLocation) > 0) {
-          bestLocation = location;
-        }
-      }
-    }
-    return bestLocation;
-  }
-
-  /// Returns the tokenPosTable for the provided Dart script path as defined
-  /// in:
-  /// https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md#script
-  Future<List<List<int>>> tokenPosTableFor(String serverPath) async {
-    var tokenPosTable = _sourceToTokenPosTable[serverPath];
-    if (tokenPosTable != null) return tokenPosTable;
-    // Construct the tokenPosTable which is of the form:
-    // [lineNumber, (tokenId, columnNumber)*]
-    tokenPosTable = <List<int>>[];
-    final locations = await locationsForDart(serverPath);
-    final lineNumberToLocation = <int, Set<Location>>{};
-    for (final location in locations) {
-      lineNumberToLocation
-          .putIfAbsent(location.dartLocation.line, () => <Location>{})
-          .add(location);
-    }
-    for (final lineNumber in lineNumberToLocation.keys) {
-      final locations = lineNumberToLocation[lineNumber]!;
-      tokenPosTable.add([
-        lineNumber,
-        for (final location in locations) ...[
-          location.tokenPos,
-          location.dartLocation.column,
-        ],
-      ]);
-    }
-    _sourceToTokenPosTable[serverPath] = tokenPosTable;
-    return tokenPosTable;
-  }
-
-  /// Returns all known [Location]s for the provided [module].
-  ///
-  /// [module] refers to the JS path of a DDC module without the extension.
-  ///
-  /// This will populate the [_sourceToLocation] and [_moduleToLocations] maps.
-  Future<Set<Location>> _locationsForModule(String module) {
-    final memoizer = _locationMemoizer.putIfAbsent(module, AsyncMemoizer.new);
-
-    return memoizer.runOnce(() async {
-      if (_moduleToLocations.containsKey(module)) {
-        return _moduleToLocations[module]!;
-      }
-      final result = <Location>{};
-      if (module.isEmpty) return _moduleToLocations[module] = result;
-      if (module.endsWith('dart_sdk') ||
-          (module.endsWith('dart_library') &&
-              !module.endsWith('.dart_library'))) {
-        return result;
-      }
-      final modulePath = await globalToolConfiguration.loadStrategy
-          .serverPathForModule(_entrypoint, module);
-      if (modulePath == null) {
-        _logger.warning('No module path for module: $module');
-        return result;
-      }
-      final sourceMapPath = await globalToolConfiguration.loadStrategy
-          .sourceMapPathForModule(_entrypoint, module);
-      if (sourceMapPath == null) {
-        _logger.warning('No sourceMap path for module: $module');
-        return result;
-      }
-      final sourceMapContents = await _assetReader.sourceMapContents(
-        sourceMapPath,
-      );
-      final scriptLocation = p.url.dirname(
-        '/${stripLeadingSlashes(modulePath)}',
-      );
-
-      if (sourceMapContents == null) return result;
-
-      final runtimeScriptId = await _modules.getRuntimeScriptIdForModule(
-        _entrypoint,
-        module,
-      );
-
-      // This happens to be a [SingleMapping] today in DDC.
-      final mapping = parse(sourceMapContents);
-      if (mapping is SingleMapping) {
-        // Create TokenPos for each entry in the source map.
-        for (final lineEntry in mapping.lines) {
-          for (final entry in lineEntry.entries) {
-            final location = _locationForSourceMapEntry(
-              lineEntry: lineEntry,
-              entry: entry,
-              modulePath: modulePath,
-              runtimeScriptId: runtimeScriptId,
-              sourceUrls: mapping.urls,
-              scriptLocation: scriptLocation,
-            );
-            if (location != null) {
-              result.add(location);
-            }
-          }
-        }
-      }
-      for (final location in result) {
-        _sourceToLocation
-            .putIfAbsent(
-              location.dartLocation.uri.serverPath,
-              () => <Location>{},
-            )
-            .add(location);
-      }
-      return _moduleToLocations[module] = result;
-    });
-  }
-
-  /// Creates a TokenPos [Location] for an entry in the source map.
-  Location? _locationForSourceMapEntry({
-    required TargetLineEntry lineEntry,
-    required TargetEntry entry,
-    required String modulePath,
-    required String? runtimeScriptId,
-    required List<String> sourceUrls,
-    required String scriptLocation,
-  }) {
-    final index = entry.sourceUrlId;
-    if (index == null) return null;
-    // Source map URLS are relative to the script. They may have platform
-    // separators or they may use URL semantics. To be sure, we split and
-    // re-join them.
-    // This works on Windows because path treats both / and \ as separators.
-    // It will fail if the path has both separators in it.
-    final relativeSegments = p.split(sourceUrls[index]);
-    final path = p.url.normalize(
-      p.url.joinAll([scriptLocation, ...relativeSegments]),
-    );
-
-    try {
-      final dartUri = DartUri(path, _root);
-      return Location.from(
-        modulePath,
-        lineEntry,
-        entry,
-        dartUri,
-        runtimeScriptId,
-      );
-    } catch (error) {
-      // DartUri throws if the path format is unrecognized. Log any errors and
-      // return null in that case.
-      _logger.warning('Error adding location for $path: $error');
-      return null;
-    }
-  }
-}
diff --git a/dwds/lib/src/debugging/metadata/class.dart b/dwds/lib/src/debugging/metadata/class.dart
deleted file mode 100644
index 0ca7182..0000000
--- a/dwds/lib/src/debugging/metadata/class.dart
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-const _dartCoreLibrary = 'dart:core';
-
-/// A hard-coded ClassRef for the Closure class.
-final classRefForClosure = classRefFor(_dartCoreLibrary, InstanceKind.kClosure);
-
-/// A hard-coded ClassRef for the String class.
-final classRefForString = classRefFor(_dartCoreLibrary, InstanceKind.kString);
-
-/// A hard-coded ClassRef for a (non-existent) class called Unknown.
-final classRefForUnknown = classRefFor(_dartCoreLibrary, 'Unknown');
-
-/// Returns a [LibraryRef] for the provided library ID and class name.
-LibraryRef libraryRefFor(String libraryId) =>
-    LibraryRef(id: libraryId, name: libraryId, uri: libraryId);
-
-/// Returns a [ClassRef] for the provided library ID and class name.
-ClassRef classRefFor(Object? libraryId, Object? dartName) {
-  final library = libraryId as String? ?? _dartCoreLibrary;
-  final name = dartName as String?;
-  return ClassRef(
-    id: classIdFor(library, name),
-    name: name,
-    library: libraryRefFor(library),
-  );
-}
-
-String classIdFor(String libraryId, String? name) => 'classes|$libraryId|$name';
-String classMetaDataIdFor(ClassRef classRef) =>
-    '${classRef.library!.id!}:${classRef.name}';
-
-/// DDC runtime object kind.
-///
-/// Object kinds are determined using DDC runtime API and
-/// are used to translate from JavaScript objects to their
-/// vm service protocol representation.
-enum RuntimeObjectKind {
-  object,
-  set,
-  list,
-  map,
-  function,
-  record,
-  type,
-  recordType,
-  nativeError,
-  nativeObject;
-
-  // TODO(annagrin): Update when built-in parsing is available.
-  // We can also implement a faster parser if needed.
-  // https://github.com/dart-lang/language/issues/2348
-  static final parse = values.byName;
-
-  String toInstanceKind() {
-    return switch (this) {
-      object || nativeObject || nativeError => InstanceKind.kPlainInstance,
-      set => InstanceKind.kSet,
-      list => InstanceKind.kList,
-      map => InstanceKind.kMap,
-      function => InstanceKind.kClosure,
-      record => InstanceKind.kRecord,
-      type => InstanceKind.kType,
-      recordType => InstanceKind.kRecordType,
-    };
-  }
-}
-
-/// Meta data for a remote Dart class in Chrome.
-class ClassMetaData {
-  /// Runtime object kind.
-  final RuntimeObjectKind runtimeKind;
-
-  /// Class id.
-  ///
-  /// Takes the form of 'libraryId:name'.
-  final String id;
-
-  /// Type name for Type instances.
-  ///
-  /// For example, `int`, `String`, `MyClass`, `List<int>`.
-  final String? typeName;
-
-  /// The length of the object, if applicable.
-  final int? length;
-
-  /// The dart type name for the object.
-  ///
-  /// For example, `int`, `List<String>`, `Null`
-  String? get dartName => classRef.name;
-
-  /// Class ref for the class metadata.
-  final ClassRef classRef;
-
-  /// Instance kind for vm service protocol.
-  String get kind => runtimeKind.toInstanceKind();
-
-  factory ClassMetaData({
-    Object? typeName,
-    Object? length,
-    required RuntimeObjectKind runtimeKind,
-    required ClassRef classRef,
-  }) {
-    final id = classMetaDataIdFor(classRef);
-    return ClassMetaData._(
-      id,
-      classRef,
-      typeName as String?,
-      int.tryParse('$length'),
-      runtimeKind,
-    );
-  }
-
-  ClassMetaData._(
-    this.id,
-    this.classRef,
-    this.typeName,
-    this.length,
-    this.runtimeKind,
-  );
-}
-
-/// Metadata helper for objects and class refs.
-///
-/// Allows to get runtime metadata from DDC runtime
-/// and provides functionality to detect some of the
-/// runtime kinds of objects.
-class ChromeClassMetaDataHelper {
-  static final _logger = Logger('ClassMetadata');
-
-  final ChromeAppInspector _inspector;
-
-  /// Runtime object kinds for class refs.
-  final _runtimeObjectKinds = <String, RuntimeObjectKind>{};
-
-  ChromeClassMetaDataHelper(this._inspector);
-
-  /// Returns the [ClassMetaData] for the Chrome [remoteObject].
-  ///
-  /// Returns null if the [remoteObject] is not a Dart class.
-  Future<ClassMetaData?> metaDataFor(RemoteObject remoteObject) async {
-    try {
-      final evalExpression = globalToolConfiguration
-          .loadStrategy
-          .dartRuntimeDebugger
-          .getObjectMetadataJsExpression();
-
-      final result = await _inspector.jsCallFunctionOn(
-        remoteObject,
-        evalExpression,
-        [remoteObject],
-        returnByValue: true,
-      );
-      final metadata = result.value as Map;
-      final className = metadata['className'];
-
-      if (className == null) {
-        return null;
-      }
-
-      final typeName = metadata['typeName'];
-      final library = metadata['libraryId'];
-      final runtimeKind = RuntimeObjectKind.parse(
-        metadata['runtimeKind'] as String,
-      );
-      final length = metadata['length'];
-
-      final classRef = classRefFor(library, className);
-      _addRuntimeObjectKind(classRef, runtimeKind);
-
-      return ClassMetaData(
-        typeName: typeName,
-        length: length,
-        runtimeKind: runtimeKind,
-        classRef: classRef,
-      );
-    } on ChromeDebugException catch (e, s) {
-      _logger.fine(
-        'Could not create class metadata for ${remoteObject.json}',
-        e,
-        s,
-      );
-      return null;
-    }
-  }
-
-  // Stores runtime object kind for class refs.
-  void _addRuntimeObjectKind(ClassRef classRef, RuntimeObjectKind runtimeKind) {
-    final id = classRef.id;
-    if (id == null) {
-      throw StateError('No classRef id for $classRef');
-    }
-    _runtimeObjectKinds[id] = runtimeKind;
-  }
-
-  /// Returns true for non-dart JavaScript classes.
-  bool isNativeJsObject(ClassRef? classRef) {
-    final id = classRef?.id;
-    return id != null &&
-        _runtimeObjectKinds[id] == RuntimeObjectKind.nativeObject;
-  }
-
-  /// Returns true for non-dart JavaScript classes.
-  bool isNativeJsError(ClassRef? classRef) {
-    final id = classRef?.id;
-    return id != null &&
-        _runtimeObjectKinds[id] == RuntimeObjectKind.nativeError;
-  }
-}
diff --git a/dwds/lib/src/debugging/metadata/function.dart b/dwds/lib/src/debugging/metadata/function.dart
deleted file mode 100644
index 3f824db..0000000
--- a/dwds/lib/src/debugging/metadata/function.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Meta data for a remote Dart function in Chrome.
-class FunctionMetaData {
-  final String name;
-  FunctionMetaData(this.name);
-
-  /// Returns the [FunctionMetaData] for the Chrome [remoteObject].
-  static Future<FunctionMetaData> metaDataFor(
-    RemoteDebugger remoteDebugger,
-    RemoteObject remoteObject,
-  ) async {
-    final evalExpression = globalToolConfiguration
-        .loadStrategy
-        .dartRuntimeDebugger
-        .getFunctionMetadataJsExpression();
-
-    final response = await remoteDebugger.sendCommand(
-      'Runtime.callFunctionOn',
-      params: {
-        'functionDeclaration': evalExpression,
-        'objectId': remoteObject.objectId,
-        'returnByValue': true,
-      },
-    );
-    handleErrorIfPresent(response, evalContents: evalExpression);
-    final name =
-        (response.result?['result'] as Map<String, dynamic>?)?['value']
-            as String?;
-    if (name == null) return FunctionMetaData('<unknown>');
-    if (name.isEmpty) return FunctionMetaData('Closure');
-    return FunctionMetaData(name);
-  }
-}
diff --git a/dwds/lib/src/debugging/metadata/module_metadata.dart b/dwds/lib/src/debugging/metadata/module_metadata.dart
deleted file mode 100644
index 56ff614..0000000
--- a/dwds/lib/src/debugging/metadata/module_metadata.dart
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright (c) 2020, 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.
-
-/// Module metadata format version
-///
-/// Module reader always creates the current version but is able to read
-/// metadata files with later versions as long as the changes are backward
-/// compatible, i.e. only minor or patch versions have changed.
-///
-/// See: https://goto.google.com/dart-web-debugger-metadata
-class ModuleMetadataVersion {
-  final int majorVersion;
-  final int minorVersion;
-  final int patchVersion;
-
-  const ModuleMetadataVersion(
-    this.majorVersion,
-    this.minorVersion,
-    this.patchVersion,
-  );
-
-  /// Current metadata version
-  ///
-  /// Version follows simple semantic versioning format 'major.minor.patch'
-  /// See https://semver.org
-  static const ModuleMetadataVersion current = ModuleMetadataVersion(2, 0, 0);
-
-  /// Previous version supported by the metadata reader
-  static const ModuleMetadataVersion previous = ModuleMetadataVersion(1, 0, 0);
-
-  /// Current metadata version created by the reader
-  String get version => '$majorVersion.$minorVersion.$patchVersion';
-
-  /// Is this metadata version compatible with the given version
-  ///
-  /// The minor and patch version changes never remove any fields that current
-  /// version supports, so the reader can create current metadata version from
-  /// any file created with a later writer, as long as the major version does
-  /// not change.
-  bool isCompatibleWith(String version) {
-    final parts = version.split('.');
-    if (parts.length != 3) {
-      throw FormatException(
-        'Version: $version'
-        'does not follow simple semantic versioning format',
-      );
-    }
-    final major = int.parse(parts[0]);
-    final minor = int.parse(parts[1]);
-    final patch = int.parse(parts[2]);
-    return major == majorVersion &&
-        minor >= minorVersion &&
-        patch >= patchVersion;
-  }
-}
-
-/// Library metadata
-///
-/// Represents library metadata used in the debugger,
-/// supports reading from and writing to json
-/// See: https://goto.google.com/dart-web-debugger-metadata
-class LibraryMetadata {
-  /// Library name as defined in pubspec.yaml
-  final String name;
-
-  /// Library importUri
-  ///
-  /// Example package:path/path.dart
-  final String importUri;
-
-  /// All file uris from the library
-  ///
-  /// Can be relative paths to the directory of the fileUri
-  final List<String> partUris;
-
-  LibraryMetadata(this.name, this.importUri, this.partUris);
-
-  LibraryMetadata.fromJson(Map<String, dynamic> json)
-    : name = _readRequiredField(json, 'name'),
-      importUri = _readRequiredField(json, 'importUri'),
-      partUris = _readOptionalList(json, 'partUris') ?? [];
-
-  Map<String, dynamic> toJson() {
-    return {
-      'name': name,
-      'importUri': importUri,
-      'partUris': [...partUris],
-    };
-  }
-}
-
-/// Module metadata
-///
-/// Represents module metadata used in the debugger,
-/// supports reading from and writing to json
-/// See: https://goto.google.com/dart-web-debugger-metadata
-class ModuleMetadata {
-  /// Metadata format version
-  late final String version;
-
-  /// Module name
-  ///
-  /// Used as a name of the js module created by the compiler and
-  /// as key to store and load modules in the debugger and the browser
-  // TODO(srujzs): Remove once https://github.com/dart-lang/sdk/issues/59618 is
-  // resolved.
-  final String name;
-
-  /// Name of the function enclosing the module
-  ///
-  /// Used by debugger to determine the top dart scope
-  final String closureName;
-
-  /// Source map uri
-  final String sourceMapUri;
-
-  /// Module uri
-  final String moduleUri;
-
-  final Map<String, LibraryMetadata> libraries = {};
-
-  ModuleMetadata(
-    this.name,
-    this.closureName,
-    this.sourceMapUri,
-    this.moduleUri, {
-    String? ver,
-  }) {
-    version = ver ?? ModuleMetadataVersion.current.version;
-  }
-
-  /// Add [library] to metadata
-  ///
-  /// Used for filling the metadata in the compiler or for reading from
-  /// stored metadata files.
-  void addLibrary(LibraryMetadata library) {
-    if (!libraries.containsKey(library.importUri)) {
-      libraries[library.importUri] = library;
-    } else {
-      throw Exception(
-        'Metadata creation error: '
-        'Cannot add library $library with uri ${library.importUri}: '
-        'another library "${libraries[library.importUri]}" is found '
-        'with the same uri',
-      );
-    }
-  }
-
-  ModuleMetadata.fromJson(Map<String, dynamic> json)
-    : version = _readRequiredField(json, 'version'),
-      name = _readRequiredField(json, 'name'),
-      closureName = _readRequiredField(json, 'closureName'),
-      sourceMapUri = _readRequiredField(json, 'sourceMapUri'),
-      moduleUri = _readRequiredField(json, 'moduleUri') {
-    if (!ModuleMetadataVersion.current.isCompatibleWith(version) &&
-        !ModuleMetadataVersion.previous.isCompatibleWith(version)) {
-      throw Exception(
-        'Unsupported metadata version $version. '
-        '\n  Supported versions: '
-        '\n    ${ModuleMetadataVersion.current.version} '
-        '\n    ${ModuleMetadataVersion.previous.version}',
-      );
-    }
-
-    for (final l in _readRequiredList<Map<String, dynamic>>(
-      json,
-      'libraries',
-    )) {
-      addLibrary(LibraryMetadata.fromJson(l));
-    }
-  }
-
-  Map<String, dynamic> toJson() {
-    return {
-      'version': version,
-      'name': name,
-      'closureName': closureName,
-      'sourceMapUri': sourceMapUri,
-      'moduleUri': moduleUri,
-      'libraries': [for (final lib in libraries.values) lib.toJson()],
-    };
-  }
-}
-
-T _readRequiredField<T>(Map<String, dynamic> json, String field) {
-  if (!json.containsKey(field)) {
-    throw FormatException('Required field $field is not set in $json');
-  }
-  return json[field]! as T;
-}
-
-T? _readOptionalField<T>(Map<String, dynamic> json, String field) =>
-    json[field] as T?;
-
-List<T> _readRequiredList<T>(Map<String, dynamic> json, String field) {
-  final list = _readRequiredField<List<dynamic>>(json, field);
-  return List.castFrom<dynamic, T>(list);
-}
-
-List<T>? _readOptionalList<T>(Map<String, dynamic> json, String field) {
-  final list = _readOptionalField<List<dynamic>>(json, field);
-  return list == null ? null : List.castFrom<dynamic, T>(list);
-}
diff --git a/dwds/lib/src/debugging/metadata/provider.dart b/dwds/lib/src/debugging/metadata/provider.dart
deleted file mode 100644
index 0f63940..0000000
--- a/dwds/lib/src/debugging/metadata/provider.dart
+++ /dev/null
@@ -1,349 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-
-import 'package:async/async.dart';
-import 'package:dwds/src/debugging/metadata/module_metadata.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-
-/// A provider of metadata in which data is collected through DDC outputs.
-class MetadataProvider {
-  final AssetReader _assetReader;
-  final _logger = Logger('MetadataProvider');
-  final String entrypoint;
-  final Set<String> _libraries = {};
-  final Map<String, String> _scriptToModule = {};
-  final Map<String, String> _moduleToSourceMap = {};
-  final Map<String, String> _modulePathToModule = {};
-  final Map<String, String> _moduleToModulePath = {};
-  final Map<String, Set<String>> _moduleToLibraries = {};
-  final Map<String, List<String>> _scripts = {};
-  final _metadataMemoizer = AsyncMemoizer<void>();
-
-  /// Implicitly imported libraries in any DDC component.
-  ///
-  /// Currently dart_sdk module does not come with the metadata.
-  /// To allow evaluation of expressions that use libraries and
-  /// types from the SDK (such as a dart Type object), add the
-  /// metadata for dart_sdk manually.
-  ///
-  /// TODO: Generate sdk module metadata to be consumed by debugger.
-  /// Issue: https://github.com/dart-lang/sdk/issues/45477
-  List<String> get sdkLibraries => const [
-    'dart:_runtime',
-    'dart:_debugger',
-    'dart:_foreign_helper',
-    'dart:_interceptors',
-    'dart:_internal',
-    'dart:_isolate_helper',
-    'dart:_js_helper',
-    'dart:_js_primitives',
-    'dart:_metadata',
-    'dart:_native_typed_data',
-    'dart:_rti',
-    'dart:async',
-    'dart:collection',
-    'dart:convert',
-    'dart:core',
-    'dart:developer',
-    'dart:io',
-    'dart:isolate',
-    'dart:js',
-    'dart:js_util',
-    'dart:math',
-    'dart:typed_data',
-    'dart:indexed_db',
-    'dart:html',
-    'dart:html_common',
-    'dart:svg',
-    'dart:web_audio',
-    'dart:web_gl',
-    'dart:ui',
-  ];
-
-  MetadataProvider(this.entrypoint, this._assetReader);
-
-  /// A list of all libraries in the Dart application.
-  ///
-  /// Example:
-  ///
-  ///  [
-  ///     dart:web_gl,
-  ///     dart:math,
-  ///     org-dartlang-app:///web/main.dart
-  ///  ]
-  ///
-  Future<List<String>> get libraries async {
-    await _initialize();
-    return _libraries.toList();
-  }
-
-  /// A map of library uri to dart scripts.
-  ///
-  /// Example:
-  ///
-  /// {
-  ///   org-dartlang-app:///web/main.dart :
-  ///   { web/main.dart  }
-  /// }
-  ///
-  Future<Map<String, List<String>>> get scripts async {
-    await _initialize();
-    return _scripts;
-  }
-
-  /// A map of script to containing module.
-  ///
-  /// Example:
-  ///
-  /// {
-  ///   org-dartlang-app:///web/main.dart :
-  ///   web/main
-  /// }
-  Future<Map<String, String>> get scriptToModule async {
-    await _initialize();
-    return _scriptToModule;
-  }
-
-  /// A map of module name to source map path.
-  ///
-  /// Example:
-  ///
-  /// {
-  ///   org-dartlang-app:///web/main.dart :
-  ///   web/main.ddc.js.map
-  /// }
-  Future<Map<String, String>> get moduleToSourceMap async {
-    await _initialize();
-    return _moduleToSourceMap;
-  }
-
-  /// A map of module path to module name.
-  ///
-  /// Example:
-  ///
-  /// {
-  ///   web/main.ddc.js :
-  ///   web/main
-  /// }
-  Future<Map<String, String>> get modulePathToModule async {
-    await _initialize();
-    return _modulePathToModule;
-  }
-
-  /// A map of module to module path.
-  ///
-  /// Example:
-  ///
-  /// {
-  ///   web/main
-  ///   web/main.ddc.js :
-  /// }
-  Future<Map<String, String>> get moduleToModulePath async {
-    await _initialize();
-    return _moduleToModulePath;
-  }
-
-  /// A list of module ids.
-  ///
-  /// Example:
-  ///
-  /// [
-  ///   web/main,
-  ///   web/foo/bar
-  /// ]
-  Future<List<String>> get modules async {
-    await _initialize();
-    return _moduleToModulePath.keys.toList();
-  }
-
-  /// Compute metadata information after reading the metadata contents and
-  /// return a map from module names to their [ModuleMetadata].
-  Future<Map<String, ModuleMetadata>> _processMetadata() async {
-    final modules = <String, ModuleMetadata>{};
-    // The merged metadata resides next to the entrypoint.
-    // Assume that <name>.bootstrap.js has <name>.ddc_merged_metadata
-    if (entrypoint.endsWith('.bootstrap.js')) {
-      _logger.info('Loading debug metadata...');
-      final serverPath = entrypoint.replaceAll(
-        '.bootstrap.js',
-        '.ddc_merged_metadata',
-      );
-      final merged = await _assetReader.metadataContents(serverPath);
-      if (merged != null) {
-        for (final contents in merged.split('\n')) {
-          try {
-            if (contents.isEmpty ||
-                contents.startsWith('// intentionally empty:')) {
-              continue;
-            }
-            final moduleJson = json.decode(contents);
-            final metadata = ModuleMetadata.fromJson(
-              moduleJson as Map<String, dynamic>,
-            );
-            final moduleName = metadata.name;
-            modules[moduleName] = metadata;
-            _logger.fine('Loaded debug metadata for module: $moduleName');
-          } catch (e) {
-            _logger.warning('Failed to read metadata: $e');
-            rethrow;
-          }
-        }
-      }
-    }
-    return modules;
-  }
-
-  /// Process all metadata, including SDK metadata, and compute caches once.
-  Future<void> _initialize() async {
-    await _metadataMemoizer.runOnce(() async {
-      final metadata = await _processMetadata();
-      _addSdkMetadata();
-      metadata.values.forEach(_addMetadata);
-    });
-  }
-
-  /// Given a map of hot reloaded modules mapped to their respective libraries,
-  /// determines deleted and invalidated libraries and modules, invalidates them
-  /// in any caches, and recomputes the necessary information.
-  ///
-  /// Returns a [ModifiedModuleReport] that can be used to invalidate other
-  /// caches after a hot reload.
-  Future<ModifiedModuleReport> reinitializeAfterHotReload(
-    Map<String, List> reloadedModulesToLibraries,
-  ) async {
-    final modules = await _processMetadata();
-    final invalidatedLibraries = <String>{};
-    void invalidateLibrary(String libraryImportUri) {
-      invalidatedLibraries.add(libraryImportUri);
-      _libraries.remove(libraryImportUri);
-      _scriptToModule.remove(libraryImportUri);
-      _scripts[libraryImportUri]?.forEach(_scriptToModule.remove);
-      _scripts.remove(libraryImportUri);
-    }
-
-    final deletedModules = <String>{};
-    for (final module in _moduleToLibraries.keys) {
-      final deletedModule = !modules.containsKey(module);
-      final invalidatedModule = reloadedModulesToLibraries.containsKey(module);
-      assert(!(deletedModule && invalidatedModule));
-      // If the module was either deleted or reloaded, invalidate all previous
-      // information both about the module and its libraries.
-      if (deletedModule || invalidatedModule) {
-        _modulePathToModule.remove(module);
-        _moduleToLibraries[module]?.forEach(invalidateLibrary);
-        _moduleToModulePath.remove(module);
-        _moduleToSourceMap.remove(module);
-      }
-      if (deletedModule) deletedModules.add(module);
-    }
-    final reloadedModules = <String>{};
-    final reloadedLibraries = <String>{};
-    for (final module in reloadedModulesToLibraries.keys) {
-      reloadedModules.add(module);
-      reloadedLibraries.addAll(
-        reloadedModulesToLibraries[module]!.cast<String>(),
-      );
-      _addMetadata(modules[module]!);
-    }
-    // The libraries that are removed from the program are those that we
-    // invalidated but were never added again.
-    final deletedLibraries = invalidatedLibraries
-        .where((library) => !_libraries.contains(library))
-        .toSet();
-    return ModifiedModuleReport(
-      deletedModules: deletedModules,
-      deletedLibraries: deletedLibraries,
-      reloadedModules: reloadedModules,
-      reloadedLibraries: reloadedLibraries,
-    );
-  }
-
-  void _addMetadata(ModuleMetadata metadata) {
-    final modulePath = stripLeadingSlashes(metadata.moduleUri);
-    final sourceMapPath = stripLeadingSlashes(metadata.sourceMapUri);
-    final moduleName = metadata.name;
-
-    _moduleToSourceMap[moduleName] = sourceMapPath;
-    _modulePathToModule[modulePath] = moduleName;
-    _moduleToModulePath[moduleName] = modulePath;
-
-    final moduleLibraries = <String>{};
-    for (final library in metadata.libraries.values) {
-      if (library.importUri.startsWith('file:/')) {
-        throw AbsoluteImportUriException(library.importUri);
-      }
-      moduleLibraries.add(library.importUri);
-      _libraries.add(library.importUri);
-      _scripts[library.importUri] = [];
-
-      _scriptToModule[library.importUri] = moduleName;
-      for (final path in library.partUris) {
-        // Parts in metadata are relative to the library Uri directory.
-        final partPath = p.url.join(p.dirname(library.importUri), path);
-        _scripts[library.importUri]!.add(partPath);
-        _scriptToModule[partPath] = moduleName;
-      }
-    }
-    _moduleToLibraries[moduleName] = moduleLibraries;
-  }
-
-  void _addSdkMetadata() {
-    final moduleName = 'dart_sdk';
-
-    for (final lib in sdkLibraries) {
-      _libraries.add(lib);
-      _scripts[lib] = [];
-      // TODO(srujzs): It feels weird that we add this mapping to only this map
-      // and not any of the other module maps. We should maybe handle this
-      // differently. This will become relevant if we ever support hot reload
-      // for the Dart SDK.
-      _scriptToModule[lib] = moduleName;
-    }
-  }
-}
-
-class AbsoluteImportUriException implements Exception {
-  final String importUri;
-  AbsoluteImportUriException(this.importUri);
-
-  @override
-  String toString() => "AbsoluteImportUriError: '$importUri'";
-}
-
-/// Computed after a hot reload using
-/// [MetadataProvider.reinitializeAfterHotReload], represents the modules and
-/// libraries in the program that were deleted, reloaded, and therefore,
-/// modified.
-///
-/// Used to recompute caches throughout DWDS.
-class ModifiedModuleReport {
-  /// Module names that are no longer in the program.
-  final Set<String> deletedModules;
-
-  /// Library uris that are no longer in the program.
-  final Set<String> deletedLibraries;
-
-  /// Module names that were loaded during the hot reload.
-  final Set<String> reloadedModules;
-
-  /// Library uris that were loaded during the hot reload.
-  final Set<String> reloadedLibraries;
-
-  /// Module names that were either removed or modified, including additions.
-  final Set<String> modifiedModules;
-
-  /// Library uris that were either removed or modified, including additions.
-  final Set<String> modifiedLibraries;
-  ModifiedModuleReport({
-    required this.deletedModules,
-    required this.deletedLibraries,
-    required this.reloadedModules,
-    required this.reloadedLibraries,
-  }) : modifiedModules = deletedModules.union(reloadedModules),
-       modifiedLibraries = deletedLibraries.union(reloadedLibraries);
-}
diff --git a/dwds/lib/src/debugging/modules.dart b/dwds/lib/src/debugging/modules.dart
deleted file mode 100644
index d668039..0000000
--- a/dwds/lib/src/debugging/modules.dart
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:async/async.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:logging/logging.dart';
-
-/// Tracks modules for the compiled application.
-class Modules {
-  final _logger = Logger('Modules');
-  final String _root;
-
-  // The Dart server path to containing module.
-  final _sourceToModule = <String, String>{};
-
-  // Module to Dart server paths.
-  final _moduleToSources = <String, Set<String>>{};
-
-  // The Dart server path to library import uri
-  final _sourceToLibrary = <String, Uri>{};
-
-  // The Dart server path to library/part import uri
-  final _sourceToLibraryOrPart = <String, Uri>{};
-
-  // Library import uri to list of script (parts) dart server path for the
-  // library.
-  final _scriptsForLibrary = <Uri, List<String>>{};
-
-  var _moduleMemoizer = AsyncMemoizer<void>();
-
-  final Map<String, String> _libraryToModule = {};
-
-  late String _entrypoint;
-
-  Modules(this._root);
-
-  /// Initializes mappings after invalidating modified libraries/modules.
-  ///
-  /// Intended to be called multiple times throughout the development workflow,
-  /// e.g. after a hot-reload.
-  ///
-  /// If [modifiedModuleReport] is not null, removes and recalculates caches for
-  /// any modified modules and libraries.
-  Future<void> initialize(
-    String entrypoint, {
-    ModifiedModuleReport? modifiedModuleReport,
-  }) async {
-    if (modifiedModuleReport != null) {
-      assert(_entrypoint == entrypoint);
-      for (final library in modifiedModuleReport.modifiedLibraries) {
-        final libraryServerPath = _getLibraryServerPath(library);
-        final libraryUri = _sourceToLibrary.remove(libraryServerPath);
-        _sourceToLibraryOrPart.remove(libraryServerPath);
-        if (libraryUri != null) {
-          final scriptServerPaths = _scriptsForLibrary[libraryUri];
-          if (scriptServerPaths != null) {
-            for (final scriptServerPath in scriptServerPaths) {
-              _sourceToLibraryOrPart.remove(scriptServerPath);
-              _sourceToLibrary.remove(scriptServerPath);
-            }
-            _scriptsForLibrary.remove(libraryUri);
-          }
-        }
-        _sourceToModule.remove(libraryServerPath);
-        _libraryToModule.remove(library);
-      }
-      for (final module in modifiedModuleReport.modifiedModules) {
-        _moduleToSources.remove(module);
-      }
-      await _initializeMapping(modifiedModuleReport);
-      return;
-    }
-    _entrypoint = entrypoint;
-    _sourceToLibrary.clear();
-    _sourceToLibraryOrPart.clear();
-    _scriptsForLibrary.clear();
-    _sourceToModule.clear();
-    _libraryToModule.clear();
-    _moduleToSources.clear();
-    _moduleMemoizer = AsyncMemoizer();
-  }
-
-  /// Returns the containing module for the provided Dart server path.
-  Future<String?> moduleForSource(String serverPath) async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _sourceToModule[serverPath];
-  }
-
-  /// Returns the Dart server paths for the provided module.
-  Future<Set<String>?> sourcesForModule(String module) async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _moduleToSources[module];
-  }
-
-  /// Returns the containing library importUri for the provided Dart server
-  /// path.
-  Future<Uri?> libraryForSource(String serverPath) async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _sourceToLibrary[serverPath];
-  }
-
-  /// Returns the importUri of the library or part for the provided Dart server
-  /// path.
-  Future<Uri?> libraryOrPartForSource(String serverPath) async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _sourceToLibraryOrPart[serverPath];
-  }
-
-  Future<String?> moduleForLibrary(String libraryUri) async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _libraryToModule[libraryUri];
-  }
-
-  // Returns mapping from server paths to library paths
-  Future<Map<String, String>> modules() async {
-    await _moduleMemoizer.runOnce(_initializeMapping);
-    return _sourceToModule;
-  }
-
-  Future<String?> getRuntimeScriptIdForModule(
-    String entrypoint,
-    String module,
-  ) async {
-    final serverPath = await globalToolConfiguration.loadStrategy
-        .serverPathForModule(entrypoint, module);
-    return chromePathToRuntimeScriptId[serverPath];
-  }
-
-  String _getLibraryServerPath(String library) => library.startsWith('dart:')
-      ? library
-      : DartUri(library, _root).serverPath;
-
-  /// Initializes [_sourceToModule], [_moduleToSources], [_sourceToLibrary] and
-  /// [_sourceToLibraryOrPart].
-  ///
-  /// If [modifiedModuleReport] is not null, only updates the maps for the
-  /// modified libraries in the report.
-  Future<void> _initializeMapping([
-    ModifiedModuleReport? modifiedModuleReport,
-  ]) async {
-    final provider = globalToolConfiguration.loadStrategy.metadataProviderFor(
-      _entrypoint,
-    );
-
-    final libraryToScripts = await provider.scripts;
-    final scriptToModule = await provider.scriptToModule;
-
-    for (final library in libraryToScripts.keys) {
-      if (modifiedModuleReport?.modifiedLibraries.contains(library) == false) {
-        // Note that every module will have at least one library associated with
-        // it, so it's okay to only process the modified libraries.
-        continue;
-      }
-      final libraryUri = Uri.parse(library);
-      final scripts = libraryToScripts[library]!;
-      final libraryServerPath = _getLibraryServerPath(library);
-
-      if (scriptToModule.containsKey(library)) {
-        final module = scriptToModule[library]!;
-
-        _sourceToModule[libraryServerPath] = module;
-        _moduleToSources.putIfAbsent(module, () => {}).add(libraryServerPath);
-        _sourceToLibrary[libraryServerPath] = libraryUri;
-        _sourceToLibraryOrPart[libraryServerPath] = libraryUri;
-        _libraryToModule[library] = module;
-
-        for (final script in scripts) {
-          final scriptServerPath = _getLibraryServerPath(script);
-          _sourceToModule[scriptServerPath] = module;
-          _moduleToSources[module]!.add(scriptServerPath);
-          _sourceToLibrary[scriptServerPath] = libraryUri;
-          _sourceToLibraryOrPart[scriptServerPath] = Uri.parse(script);
-          (_scriptsForLibrary[libraryUri] ??= []).add(scriptServerPath);
-        }
-      } else {
-        _logger.warning('No module found for library $library');
-      }
-    }
-  }
-}
diff --git a/dwds/lib/src/debugging/remote_debugger.dart b/dwds/lib/src/debugging/remote_debugger.dart
deleted file mode 100644
index a1c783c..0000000
--- a/dwds/lib/src/debugging/remote_debugger.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-class TargetCrashedEvent extends WipEvent {
-  TargetCrashedEvent(super.json);
-}
-
-/// A generic debugger used in remote debugging.
-abstract class RemoteDebugger {
-  /// An optional callback that's invoked in the case where the debugger
-  /// connection needs to be reinitialized.
-  Future<void> Function()? onReconnect;
-
-  Stream<ConsoleAPIEvent> get onConsoleAPICalled;
-
-  Stream<ExceptionThrownEvent> get onExceptionThrown;
-
-  Stream<GlobalObjectClearedEvent> get onGlobalObjectCleared;
-
-  Stream<DebuggerPausedEvent> get onPaused;
-
-  Stream<DebuggerResumedEvent> get onResumed;
-
-  Stream<ScriptParsedEvent> get onScriptParsed;
-
-  Stream<TargetCrashedEvent> get onTargetCrashed;
-
-  Map<String, WipScript> get scripts;
-
-  Stream<void> get onClose;
-
-  Future<WipResponse> sendCommand(
-    String command, {
-    Map<String, dynamic>? params,
-  });
-
-  Future<void> disable();
-
-  Future<void> enable();
-
-  Future<String> getScriptSource(String scriptId);
-
-  Future<WipResponse> pause();
-
-  Future<WipResponse> resume();
-
-  Future<WipResponse> setPauseOnExceptions(PauseState state);
-
-  Future<WipResponse> removeBreakpoint(String breakpointId);
-
-  Future<WipResponse> stepInto({Map<String, dynamic>? params});
-
-  Future<WipResponse> stepOut();
-
-  Future<WipResponse> stepOver({Map<String, dynamic>? params});
-
-  Future<WipResponse> enablePage();
-
-  Future<WipResponse> pageReload();
-
-  Future<RemoteObject> evaluate(
-    String expression, {
-    bool? returnByValue,
-    int? contextId,
-  });
-
-  Future<RemoteObject> evaluateOnCallFrame(
-    String callFrameId,
-    String expression,
-  );
-
-  Future<List<WipBreakLocation>> getPossibleBreakpoints(WipLocation start);
-
-  Stream<T> eventStream<T>(String method, WipEventTransformer<T> transformer);
-
-  Future<void> close();
-}
diff --git a/dwds/lib/src/debugging/skip_list.dart b/dwds/lib/src/debugging/skip_list.dart
deleted file mode 100644
index 6256f82..0000000
--- a/dwds/lib/src/debugging/skip_list.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-
-const maxValue = 2147483647;
-
-class SkipLists {
-  // Map of script ID to scriptList.
-  final _idToList = <String, List<Map<String, dynamic>>>{};
-  // Map of url to script ID.
-  final _urlToId = <String, String>{};
-  final String _root;
-
-  SkipLists(this._root);
-
-  /// Initialize any caches.
-  ///
-  /// If [modifiedModuleReport] is not null, only invalidates the caches for the
-  /// modified modules instead.
-  Future<void> initialize(
-    String entrypoint, {
-    ModifiedModuleReport? modifiedModuleReport,
-  }) async {
-    if (modifiedModuleReport != null) {
-      for (final url in _urlToId.keys) {
-        final dartUri = DartUri(url, _root);
-        final serverPath = dartUri.serverPath;
-        final module = await globalToolConfiguration.loadStrategy
-            .moduleForServerPath(entrypoint, serverPath);
-        if (modifiedModuleReport.modifiedModules.contains(module)) {
-          _idToList.remove(_urlToId[url]!);
-          _urlToId.remove(url);
-        }
-      }
-      return;
-    }
-    _idToList.clear();
-    _urlToId.clear();
-  }
-
-  /// Returns a skipList as defined by the Chrome DevTools Protocol.
-  ///
-  /// A `skipList` is an array of `LocationRange`s see:
-  /// https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#method-stepInto
-  ///
-  /// Can return a cached value.
-  List<Map<String, dynamic>> compute(
-    String scriptId,
-    String url,
-    Set<Location> locations,
-  ) {
-    if (_idToList.containsKey(scriptId)) return _idToList[scriptId]!;
-
-    final sortedLocations = locations.toList()
-      ..sort((a, b) => a.jsLocation.compareTo(b.jsLocation));
-
-    final ranges = <Map<String, dynamic>>[];
-    var startLine = 0;
-    var startColumn = 0;
-    for (final location in sortedLocations) {
-      var endLine = location.jsLocation.line;
-      var endColumn = location.jsLocation.column;
-      // Stop before the known location.
-      endColumn -= 1;
-      if (endColumn < 0) {
-        endLine -= 1;
-        endColumn = maxValue;
-      }
-      if (endLine > startLine || endColumn > startColumn) {
-        if (endLine >= startLine) {
-          ranges.add(
-            _rangeFor(scriptId, startLine, startColumn, endLine, endColumn),
-          );
-        }
-        startLine = location.jsLocation.line;
-        startColumn = location.jsLocation.column + 1;
-      }
-    }
-    ranges.add(_rangeFor(scriptId, startLine, startColumn, maxValue, maxValue));
-
-    if (url.isNotEmpty) {
-      _idToList[scriptId] = ranges;
-      _urlToId[url] = scriptId;
-    }
-    return ranges;
-  }
-
-  Map<String, dynamic> _rangeFor(
-    String scriptId,
-    int startLine,
-    int startColumn,
-    int endLine,
-    int endColumn,
-  ) => {
-    'scriptId': scriptId,
-    'start': {'lineNumber': startLine, 'columnNumber': startColumn},
-    'end': {'lineNumber': endLine, 'columnNumber': endColumn},
-  };
-}
diff --git a/dwds/lib/src/debugging/web_socket_inspector.dart b/dwds/lib/src/debugging/web_socket_inspector.dart
deleted file mode 100644
index 5b5a6f0..0000000
--- a/dwds/lib/src/debugging/web_socket_inspector.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/debugging/libraries.dart';
-import 'package:dwds/src/services/web_socket/web_socket_proxy_service.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:vm_service/vm_service.dart';
-
-/// Provides information about the currently loaded program.
-class WebSocketAppInspector extends AppInspector {
-  WebSocketAppInspector._(
-    super.appConnection,
-    super.isolate,
-    super.root,
-    this._service,
-  );
-
-  static Future<WebSocketAppInspector> create(
-    WebSocketProxyService service,
-    AppConnection appConnection,
-    String root,
-  ) async {
-    final id = createId();
-    final time = DateTime.now().millisecondsSinceEpoch;
-    final name = 'main()';
-    final isolate = Isolate(
-      id: id,
-      number: id,
-      name: name,
-      startTime: time,
-      runnable: true,
-      pauseOnExit: false,
-      livePorts: 0,
-      libraries: [],
-      breakpoints: [],
-      isSystemIsolate: false,
-      isolateFlags: [],
-      extensionRPCs: [],
-    );
-    final inspector = WebSocketAppInspector._(
-      appConnection,
-      isolate,
-      root,
-      service,
-    );
-
-    await inspector.initialize();
-    return inspector;
-  }
-
-  @override
-  late final libraryHelper = LibraryHelper(this);
-
-  final WebSocketProxyService _service;
-
-  /// Invokes the `getExtensionRpcs` service extension, which returns the list
-  /// of registered extensions.
-  ///
-  /// Combines this with the RPCs registered in the [isolate]. Use this over
-  /// [Isolate.extensionRPCs] as this computes a live set.
-  ///
-  /// Updates [Isolate.extensionRPCs] to this set.
-  @override
-  Future<Set<String>> getExtensionRpcs() async {
-    final response = await _service.callServiceExtension('getExtensionRpcs');
-    final extensionRpcs = (response.json!['rpcs'] as List)
-        .cast<String>()
-        .toSet();
-    isolate.extensionRPCs = List.of(extensionRpcs);
-    return extensionRpcs;
-  }
-}
diff --git a/dwds/lib/src/debugging/webkit_debugger.dart b/dwds/lib/src/debugging/webkit_debugger.dart
deleted file mode 100644
index 9ed545a..0000000
--- a/dwds/lib/src/debugging/webkit_debugger.dart
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-typedef _EventStreamState = ({
-  StreamController controller,
-  WipEventTransformer transformer,
-});
-
-/// A remote debugger with a Webkit Inspection Protocol connection.
-class WebkitDebugger implements RemoteDebugger {
-  WipDebugger _wipDebugger;
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  // We need to forward the events from the [WipDebugger] instance rather than
-  // directly expose its streams as it may need to be recreated due to an
-  // unexpected loss in connection to the debugger.
-  final _onClosedController = StreamController<WipConnection>.broadcast();
-  final _onConsoleAPICalledController =
-      StreamController<ConsoleAPIEvent>.broadcast();
-  final _onExceptionThrownController =
-      StreamController<ExceptionThrownEvent>.broadcast();
-  final _onGlobalObjectClearedController =
-      StreamController<GlobalObjectClearedEvent>.broadcast();
-  final _onPausedController = StreamController<DebuggerPausedEvent>.broadcast();
-  final _onResumedController =
-      StreamController<DebuggerResumedEvent>.broadcast();
-  final _onScriptParsedController =
-      StreamController<ScriptParsedEvent>.broadcast();
-  final _onTargetCrashedController =
-      StreamController<TargetCrashedEvent>.broadcast();
-
-  /// Tracks and manages all subscriptions to streams created with
-  /// `eventStream`.
-  final _eventStreams = <String, _EventStreamState>{};
-
-  late final _controllers = <StreamController>[
-    _onClosedController,
-    _onConsoleAPICalledController,
-    _onExceptionThrownController,
-    _onGlobalObjectClearedController,
-    _onPausedController,
-    _onResumedController,
-    _onScriptParsedController,
-    _onTargetCrashedController,
-  ];
-
-  final _streamSubscriptions = <StreamSubscription>[];
-
-  @override
-  Future<void> Function()? onReconnect;
-
-  WebkitDebugger(this._wipDebugger) {
-    _initialize();
-  }
-
-  void _initialize() {
-    late StreamSubscription sub;
-    sub = _wipDebugger.connection.onClose.listen((connection) async {
-      await sub.cancel();
-      if (_closed != null) {
-        // The connection closing is expected.
-        await _shutdown(connection);
-        return;
-      }
-      var retry = false;
-      var retryCount = 0;
-      const maxAttempts = 5;
-      do {
-        retry = false;
-        try {
-          _wipDebugger = WipDebugger(
-            await WipConnection.connect(connection.url),
-          );
-          await onReconnect?.call();
-        } on Exception {
-          await Future<void>.delayed(Duration(milliseconds: 25 << retryCount));
-          retry = true;
-          retryCount++;
-        }
-      } while (retry && retryCount <= maxAttempts);
-      if (retryCount > maxAttempts) {
-        await _shutdown(connection);
-      } else {
-        _initialize();
-      }
-    });
-
-    final runtime = _wipDebugger.connection.runtime;
-    _streamSubscriptions
-      ..forEach((e) => e.cancel())
-      ..clear()
-      ..addAll([
-        runtime.onConsoleAPICalled.listen(_onConsoleAPICalledController.add),
-        runtime.onExceptionThrown.listen(_onExceptionThrownController.add),
-        _wipDebugger.onGlobalObjectCleared.listen(
-          _onGlobalObjectClearedController.add,
-        ),
-        _wipDebugger.onPaused.listen(_onPausedController.add),
-        _wipDebugger.onResumed.listen(_onResumedController.add),
-        _wipDebugger.onScriptParsed.listen(_onScriptParsedController.add),
-        _wipDebugger
-            .eventStream(
-              'Inspector.targetCrashed',
-              (WipEvent event) => TargetCrashedEvent(event.json),
-            )
-            .listen(_onTargetCrashedController.add),
-
-        for (final MapEntry(:key, value: (:controller, :transformer))
-            in _eventStreams.entries)
-          _wipDebugger
-              .eventStream(key, transformer)
-              .listen(controller.add, onError: controller.addError),
-      ]);
-  }
-
-  Future<void> _shutdown(WipConnection connection) async {
-    _onClosedController.add(connection);
-    await Future.wait([
-      for (final controller in _controllers) controller.close(),
-      for (final MapEntry(value: (:controller, transformer: _))
-          in _eventStreams.entries)
-        controller.close(),
-    ]);
-  }
-
-  @override
-  Stream<ConsoleAPIEvent> get onConsoleAPICalled =>
-      _onConsoleAPICalledController.stream;
-
-  @override
-  Stream<ExceptionThrownEvent> get onExceptionThrown =>
-      _onExceptionThrownController.stream;
-
-  @override
-  Future<WipResponse> sendCommand(
-    String command, {
-    Map<String, dynamic>? params,
-  }) => _wipDebugger.sendCommand(command, params: params);
-
-  @override
-  Future<void> close() => _closed ??= () async {
-    await _wipDebugger.connection.close();
-    await Future.wait([for (final sub in _streamSubscriptions) sub.cancel()]);
-  }();
-
-  @override
-  Future<void> disable() => _wipDebugger.disable();
-
-  @override
-  Future<void> enable() async {
-    // TODO(markzipan): Handle race conditions more gracefully.
-    // Try to enable the debugger multiple times.
-    var attempts = 3;
-    while (true) {
-      try {
-        await _wipDebugger.enable().timeout(const Duration(seconds: 5));
-        return;
-      } on TimeoutException {
-        if (attempts-- == 0) rethrow;
-      }
-    }
-  }
-
-  @override
-  Future<String> getScriptSource(String scriptId) =>
-      _wipDebugger.getScriptSource(scriptId);
-
-  @override
-  Future<WipResponse> pause() => _wipDebugger.pause();
-
-  @override
-  Future<WipResponse> resume() => _wipDebugger.resume();
-
-  @override
-  Future<WipResponse> setPauseOnExceptions(PauseState state) =>
-      _wipDebugger.setPauseOnExceptions(state);
-
-  @override
-  Future<WipResponse> removeBreakpoint(String breakpointId) =>
-      _wipDebugger.removeBreakpoint(breakpointId);
-
-  @override
-  Future<WipResponse> stepInto({Map<String, dynamic>? params}) =>
-      _wipDebugger.stepInto(params: params);
-
-  @override
-  Future<WipResponse> stepOut() => _wipDebugger.stepOut();
-
-  @override
-  Future<WipResponse> stepOver({Map<String, dynamic>? params}) =>
-      _wipDebugger.stepOver(params: params);
-
-  @override
-  Future<WipResponse> enablePage() => _wipDebugger.connection.page.enable();
-
-  @override
-  Future<WipResponse> pageReload() => _wipDebugger.connection.page.reload();
-
-  @override
-  Future<RemoteObject> evaluate(
-    String expression, {
-    bool? returnByValue,
-    int? contextId,
-  }) {
-    return _wipDebugger.connection.runtime.evaluate(
-      expression,
-      returnByValue: returnByValue,
-    );
-  }
-
-  @override
-  Future<RemoteObject> evaluateOnCallFrame(
-    String callFrameId,
-    String expression,
-  ) {
-    return _wipDebugger.connection.debugger.evaluateOnCallFrame(
-      callFrameId,
-      expression,
-    );
-  }
-
-  @override
-  Future<List<WipBreakLocation>> getPossibleBreakpoints(WipLocation start) {
-    return _wipDebugger.connection.debugger.getPossibleBreakpoints(start);
-  }
-
-  @override
-  Stream<T> eventStream<T>(String method, WipEventTransformer<T> transformer) {
-    return _eventStreams
-        .putIfAbsent(method, () {
-          final controller = StreamController<T>();
-          final stream = _wipDebugger.eventStream(method, transformer);
-          stream.listen(controller.add, onError: controller.addError);
-          return (controller: controller, transformer: transformer);
-        })
-        .controller
-        .stream
-        .cast<T>();
-  }
-
-  @override
-  Stream<GlobalObjectClearedEvent> get onGlobalObjectCleared =>
-      _onGlobalObjectClearedController.stream;
-
-  @override
-  Stream<DebuggerPausedEvent> get onPaused => _onPausedController.stream;
-
-  @override
-  Stream<DebuggerResumedEvent> get onResumed => _onResumedController.stream;
-
-  @override
-  Stream<ScriptParsedEvent> get onScriptParsed =>
-      _onScriptParsedController.stream;
-
-  @override
-  Stream<TargetCrashedEvent> get onTargetCrashed =>
-      _onTargetCrashedController.stream;
-
-  @override
-  Map<String, WipScript> get scripts => _wipDebugger.scripts;
-
-  @override
-  Stream<WipConnection> get onClose => _onClosedController.stream;
-}
diff --git a/dwds/lib/src/dwds_vm_client.dart b/dwds/lib/src/dwds_vm_client.dart
deleted file mode 100644
index cce7e00..0000000
--- a/dwds/lib/src/dwds_vm_client.dart
+++ /dev/null
@@ -1,709 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_service.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds/src/services/debug_service.dart';
-import 'package:dwds/src/services/proxy_service.dart';
-import 'package:dwds/src/services/web_socket/web_socket_debug_service.dart';
-import 'package:dwds/src/services/web_socket/web_socket_proxy_service.dart';
-import 'package:dwds/src/utilities/synchronized.dart';
-import 'package:dwds/src/utilities/uuid.dart';
-import 'package:logging/logging.dart';
-import 'package:meta/meta.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service/vm_service_io.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Type of requests added to the request controller.
-typedef VmRequest = Map<String, Object>;
-
-/// Type of responses added to the response controller.
-typedef VmResponse = Map<String, Object?>;
-
-enum _NamespacedServiceExtension {
-  extDwdsEmitEvent(method: 'ext.dwds.emitEvent'),
-  extDwdsReload(method: 'ext.dwds.reload'),
-  extDwdsRestart(method: 'ext.dwds.restart'),
-  extDwdsScreenshot(method: 'ext.dwds.screenshot'),
-  extDwdsSendEvent(method: 'ext.dwds.sendEvent'),
-  flutterListViews(method: '_flutter.listViews');
-
-  const _NamespacedServiceExtension({required this.method});
-
-  final String method;
-}
-
-/// Common interface for DWDS VM clients.
-abstract base class DwdsVmClient<
-  T extends ProxyService,
-  U extends DebugService<T>
-> {
-  late final VmService client;
-  final _requestController = StreamController<VmRequest>();
-  final _responseController = StreamController<VmResponse>();
-  late final _responseSink = _responseController.sink;
-  late final _responseStream = _responseController.stream.asBroadcastStream();
-  late final _requestSink = _requestController.sink;
-  late final _requestStream = _requestController.stream;
-
-  Logger get logger;
-
-  DwdsVmClient({required this.debugService});
-
-  final U debugService;
-
-  Future<void>? _closed;
-
-  /// Closes the VM client and releases resources.
-  Future<void> close() => _closed ??= () async {
-    await _requestController.close();
-    await _responseController.close();
-    await client.dispose();
-  }();
-
-  @mustCallSuper
-  Future<void> initialize({required Uri? ddsUri}) async {
-    setUpVmServerConnection(
-      proxyService: debugService.proxyService,
-      debugService: debugService,
-      responseStream: _responseStream,
-      responseSink: _responseSink,
-      requestStream: _requestStream,
-      requestSink: _requestSink,
-    );
-
-    client = ddsUri == null
-        ? _setUpVmClient()
-        : await _setUpDdsClient(ddsUri: ddsUri);
-
-    await registerServiceExtensions(
-      client: client,
-      proxyService: debugService.proxyService,
-    );
-  }
-
-  /// Establishes a VM service client that is connected via DDS and registers
-  /// the service extensions on that client.
-  Future<VmService> _setUpDdsClient({required Uri ddsUri}) async {
-    final client = await vmServiceConnectUri(ddsUri.toString());
-    return client;
-  }
-
-  /// Establishes a VM service client that bypasses DDS and registers service
-  /// extensions on that client.
-  ///
-  /// Note: This is only used in the rare cases where DDS is disabled.
-  VmService _setUpVmClient() {
-    final client = VmService(_responseStream.map(jsonEncode), (request) {
-      if (_requestController.isClosed) {
-        logger.warning(
-          'Attempted to send a request but the connection is closed:\n\n'
-          '$request',
-        );
-        return;
-      }
-      _requestSink.add(Map<String, Object>.from(jsonDecode(request) as Map));
-    });
-    return client;
-  }
-
-  /// Establishes a direct connection with the VM Server.
-  ///
-  /// This is used to register the [_NamespacedServiceExtension]s. Because
-  /// namespaced service extensions are supposed to be registered by the engine,
-  /// we need to register them on the VM server connection instead of via DDS.
-  ///
-  /// TODO(https://github.com/dart-lang/webdev/issues/1315): Ideally the engine
-  /// should register all Flutter service extensions. However, to do so we will
-  /// need to implement the missing isolate-related dart:developer APIs so that
-  /// the engine has access to this information.
-  void setUpVmServerConnection({
-    required T proxyService,
-    required DebugService<T> debugService,
-    required Stream<VmResponse> responseStream,
-    required StreamSink<VmResponse> responseSink,
-    required Stream<VmRequest> requestStream,
-    required StreamSink<VmRequest> requestSink,
-    DwdsStats? dwdsStats,
-  }) {
-    responseStream.listen((request) async {
-      final response = await _maybeHandleServiceExtensionRequest(
-        request,
-        proxyService: proxyService,
-        dwdsStats: dwdsStats,
-      );
-      if (response != null) {
-        requestSink.add(response);
-      }
-    });
-
-    final vmServerConnection = VmServerConnection(
-      requestStream,
-      responseSink,
-      debugService.serviceExtensionRegistry,
-      proxyService,
-    );
-
-    // Register service extensions
-    for (final extension in _NamespacedServiceExtension.values) {
-      logger.finest('Registering service extension: ${extension.method}');
-      debugService.serviceExtensionRegistry.registerExtension(
-        extension.method,
-        vmServerConnection,
-      );
-    }
-  }
-
-  Future<VmRequest?> _maybeHandleServiceExtensionRequest(
-    VmResponse request, {
-    required T proxyService,
-    required DwdsStats? dwdsStats,
-  }) async {
-    final response = await maybeHandleServiceExtensionRequestImpl(
-      request,
-      proxyService: proxyService,
-      dwdsStats: dwdsStats,
-    );
-    if (response != null) {
-      response['id'] = request['id'] as String;
-      // This is necessary even though DWDS doesn't use package:json_rpc_2.
-      // Without it, the response will be treated as invalid:
-      // https://github.com/dart-lang/json_rpc_2/blob/639857be892050159f5164c749d7947694976a4a/lib/src/server.dart#L252
-      response['jsonrpc'] = '2.0';
-    }
-    return response;
-  }
-
-  @mustBeOverridden
-  Future<VmRequest?> maybeHandleServiceExtensionRequestImpl(
-    VmResponse request, {
-    required T proxyService,
-    DwdsStats? dwdsStats,
-  });
-
-  @mustBeOverridden
-  Future<void> registerServiceExtensions({
-    required VmService client,
-    required T proxyService,
-  });
-
-  /// Shared handler for DWDS send event service extension.
-  Future<Map<String, Object>> extDwdsSendEventHandler(
-    VmResponse request,
-    DwdsStats? dwdsStats,
-    Logger logger,
-  ) async {
-    logger.fine('SendEvent: $request');
-    if (dwdsStats != null) {
-      _processSendEvent(request, dwdsStats);
-    }
-    return {'result': Success().toJson()};
-  }
-
-  void _processSendEvent(Map<String, dynamic> request, DwdsStats dwdsStats) {
-    final event = request['params'] as Map<String, dynamic>?;
-    if (event == null) return;
-    final type = event['type'] as String?;
-    final payload = event['payload'] as Map<String, dynamic>?;
-    switch (type) {
-      case 'DevtoolsEvent':
-        {
-          logger.finest('Received DevTools event: $event');
-          final action = payload?['action'] as String?;
-          final screen = payload?['screen'] as String?;
-          if (screen != null && action == 'pageReady') {
-            _recordDwdsStats(dwdsStats, screen);
-          } else {
-            logger.finest('Ignoring unknown event: $event');
-          }
-        }
-    }
-  }
-
-  void _recordDwdsStats(DwdsStats dwdsStats, String screen) {
-    if (dwdsStats.isFirstDebuggerReady) {
-      final devToolsStart = dwdsStats.devToolsStart;
-      final debuggerStart = dwdsStats.debuggerStart;
-      if (devToolsStart != null) {
-        final devToolLoadTime = DateTime.now()
-            .difference(devToolsStart)
-            .inMilliseconds;
-        emitEvent(DwdsEvent.devToolsLoad(devToolLoadTime, screen));
-        logger.fine('DevTools load time: $devToolLoadTime ms');
-      }
-      if (debuggerStart != null) {
-        final debuggerReadyTime = DateTime.now()
-            .difference(debuggerStart)
-            .inMilliseconds;
-        emitEvent(DwdsEvent.debuggerReady(debuggerReadyTime, screen));
-        logger.fine('Debugger ready time: $debuggerReadyTime ms');
-      }
-    } else {
-      logger.finest('Debugger and DevTools stats are already recorded.');
-    }
-  }
-
-  /// Shared handler for DWDS emit event service extension.
-  Map<String, Object> extDwdsEmitEventHandler(
-    VmResponse request,
-    Logger logger,
-  ) {
-    final event = request['params'] as Map<String, dynamic>?;
-    if (event != null) {
-      final type = event['type'] as String?;
-      final payload = event['payload'] as Map<String, dynamic>?;
-      if (type != null && payload != null) {
-        logger.fine('EmitEvent: $type $payload');
-        emitEvent(DwdsEvent(type, payload));
-      }
-    }
-    return {'result': Success().toJson()};
-  }
-
-  /// Shared handler for Flutter list views service extension.
-  Future<Map<String, Object>> flutterListViewsHandler(
-    ProxyService proxyService,
-  ) async {
-    final vm = await proxyService.getVM();
-    final isolates = vm.isolates;
-    return <String, Object>{
-      'result': <String, Object>{
-        'views': <Object>[
-          for (final IsolateRef isolate in isolates ?? [])
-            <String, Object>{'id': isolate.id!, 'isolate': isolate.toJson()},
-        ],
-      },
-    };
-  }
-}
-
-// A client of the vm service that registers some custom extensions like
-// hotRestart.
-final class ChromeDwdsVmClient
-    extends DwdsVmClient<ChromeProxyService, ChromeDebugService> {
-  /// Synchronizes hot restarts to avoid races.
-  final _hotRestartQueue = AtomicQueue();
-
-  final _clientCompleter = Completer<VmService>();
-
-  @override
-  final logger = Logger('DwdsVmClient');
-
-  ChromeDwdsVmClient({required super.debugService});
-
-  static Future<ChromeDwdsVmClient> create(
-    ChromeDebugService debugService,
-    Uri? ddsUri,
-  ) async {
-    final dwdsVmClient = ChromeDwdsVmClient(debugService: debugService);
-    await dwdsVmClient.initialize(ddsUri: ddsUri);
-    return dwdsVmClient;
-  }
-
-  @override
-  Future<void> initialize({required Uri? ddsUri}) async {
-    await super.initialize(ddsUri: ddsUri);
-    if (!_clientCompleter.isCompleted) {
-      _clientCompleter.complete(client);
-    }
-  }
-
-  @override
-  Future<void> registerServiceExtensions({
-    required VmService client,
-    required ChromeProxyService proxyService,
-  }) async {
-    client.registerServiceCallback(
-      'hotRestart',
-      (request) => captureElapsedTime(
-        () => hotRestart(proxyService, client),
-        (_) => DwdsEvent.hotRestart(),
-      ),
-    );
-    await client.registerService('hotRestart', 'DWDS');
-
-    client.registerServiceCallback(
-      'fullReload',
-      (request) => captureElapsedTime(
-        () => _fullReload(proxyService),
-        (_) => DwdsEvent.fullReload(),
-      ),
-    );
-    await client.registerService('fullReload', 'DWDS');
-  }
-
-  @override
-  Future<VmRequest?> maybeHandleServiceExtensionRequestImpl(
-    VmResponse request, {
-    required ChromeProxyService proxyService,
-    DwdsStats? dwdsStats,
-  }) async {
-    VmRequest? response;
-    final method = request['method'];
-    if (method == _NamespacedServiceExtension.flutterListViews.method) {
-      response = await flutterListViewsHandler(proxyService);
-    } else if (method == _NamespacedServiceExtension.extDwdsEmitEvent.method) {
-      response = extDwdsEmitEventHandler(request, logger);
-    } else if (method == _NamespacedServiceExtension.extDwdsReload.method) {
-      response = await _extDwdsReloadHandler(proxyService);
-    } else if (method == _NamespacedServiceExtension.extDwdsRestart.method) {
-      response = await _extDwdsRestartHandler(proxyService, client);
-    } else if (method == _NamespacedServiceExtension.extDwdsSendEvent.method) {
-      response = await extDwdsSendEventHandler(request, dwdsStats, logger);
-    } else if (method == _NamespacedServiceExtension.extDwdsScreenshot.method) {
-      response = await _extDwdsScreenshotHandler(proxyService);
-    }
-    return response;
-  }
-
-  static Future<Map<String, Object>> _extDwdsScreenshotHandler(
-    ChromeProxyService chromeProxyService,
-  ) async {
-    await chromeProxyService.remoteDebugger.enablePage();
-    final response = await chromeProxyService.remoteDebugger.sendCommand(
-      'Page.captureScreenshot',
-    );
-    return {'result': response.result as Object};
-  }
-
-  Future<Map<String, Object>> _extDwdsReloadHandler(
-    ChromeProxyService chromeProxyService,
-  ) async {
-    await _fullReload(chromeProxyService);
-    return {'result': Success().toJson()};
-  }
-
-  Future<Map<String, Object>> _extDwdsRestartHandler(
-    ChromeProxyService chromeProxyService,
-    VmService client,
-  ) async {
-    await _hotRestart(chromeProxyService, client);
-    return {'result': Success().toJson()};
-  }
-
-  Future<Map<String, dynamic>> hotRestart(
-    ChromeProxyService chromeProxyService,
-    VmService client,
-  ) {
-    return _hotRestartQueue.run(() => _hotRestart(chromeProxyService, client));
-  }
-
-  Future<int> tryGetContextId(
-    ChromeProxyService chromeProxyService, {
-    int retries = 3,
-  }) async {
-    const waitInMs = 50;
-    for (var retry = 0; retry < retries; retry++) {
-      final tryId = await chromeProxyService.executionContext.id;
-      if (tryId != null) return tryId;
-      await Future<void>.delayed(const Duration(milliseconds: waitInMs));
-    }
-    throw StateError('No context with the running Dart application.');
-  }
-
-  Future<Map<String, dynamic>> _hotRestart(
-    ChromeProxyService chromeProxyService,
-    VmService client,
-  ) async {
-    logger.info('Attempting a hot restart');
-
-    chromeProxyService.terminatingIsolates = true;
-    await _disableBreakpointsAndResume(client, chromeProxyService);
-    try {
-      logger.info('Attempting to get execution context ID.');
-      await tryGetContextId(chromeProxyService);
-      logger.info('Got execution context ID.');
-      // ignore: avoid_catching_errors
-    } on StateError catch (e) {
-      // We couldn't find the execution context. `hotRestart` may have been
-      // triggered in the middle of a full reload.
-      return {
-        'error': {
-          'code': RPCErrorKind.kInternalError.code,
-          'message': e.message,
-        },
-      };
-    }
-    // Start listening for isolate create events before issuing a hot
-    // restart. Only return success after the isolate has fully started.
-    final stream = chromeProxyService.onEvent('Isolate');
-    final waitForIsolateStarted = stream.firstWhere(
-      (event) => event.kind == EventKind.kIsolateStart,
-    );
-    try {
-      if (globalToolConfiguration.loadStrategy.id == 'ddc-library-bundle') {
-        await _libraryBundleHotRestart(
-          chromeProxyService,
-          waitForIsolateStarted,
-        );
-      } else {
-        await _legacyHotRestart(chromeProxyService, waitForIsolateStarted);
-      }
-    } on WipError catch (exception) {
-      final code = exception.error?['code'];
-      final message = exception.error?['message'];
-      // This corresponds to `Execution context was destroyed` which can
-      // occur during a hot restart that must fall back to a full reload.
-      if (code != RPCErrorKind.kServerError.code) {
-        return {
-          'error': {'code': code, 'message': message, 'data': exception},
-        };
-      }
-    } on ChromeDebugException catch (exception) {
-      // Exceptions thrown by the injected client during hot restart.
-      return {
-        'error': {
-          'code': RPCErrorKind.kInternalError.code,
-          'message': '$exception',
-        },
-      };
-    }
-    logger.info('Successful hot restart');
-    return {'result': Success().toJson()};
-  }
-
-  Future<void> _libraryBundleHotRestart(
-    ChromeProxyService chromeProxyService,
-    Future<Event> waitForIsolateStarted,
-  ) async {
-    final pauseIsolatesOnStart = chromeProxyService.pauseIsolatesOnStart;
-    if (pauseIsolatesOnStart) {
-      // When pausing isolates on start, a resume event will signal when it is
-      // safe to finish the hot restart.
-      _waitForResumeEventToEndHotRestart(chromeProxyService);
-    }
-    // Generate run id to hot restart all apps loaded into the tab.
-    final runId = const Uuid().v4();
-
-    // When using the DDC library bundle format, we determine the sources
-    // that were reloaded during a hot restart to then wait until all the
-    // sources are parsed before finishing hot restart. This is necessary
-    // before we can recompute any source location metadata in the
-    // `ChromeProxyService`.
-    // TODO(srujzs): We don't do this for the AMD module format, should we? It
-    // would require adding an extra parameter in the AMD strategy. As we're
-    // planning to deprecate it, for now, do nothing.
-    final computedReloadedSrcs = Completer<void>();
-    final reloadedSrcs = <String>{};
-    // Injected client should send a request to recreate the isolate after
-    // the hot restart. The creation of the isolate should in turn wait
-    // until all scripts are parsed.
-    chromeProxyService.allowedToCreateIsolate = Completer<void>();
-    final debugger = await chromeProxyService.debuggerFuture;
-    final parsedScriptsSubscription = debugger.parsedScriptsController.stream
-        .listen((url) {
-          computedReloadedSrcs.future.then((_) async {
-            reloadedSrcs.remove(Uri.parse(url).normalizePath().path);
-            if (reloadedSrcs.isEmpty &&
-                !chromeProxyService.allowedToCreateIsolate.isCompleted) {
-              chromeProxyService.allowedToCreateIsolate.complete();
-            }
-          });
-        });
-    logger.info('Issuing \$dartHotRestartBeginDwds request.');
-    final remoteObject = await chromeProxyService.inspector.jsEvaluate(
-      '\$dartHotRestartBeginDwds(\'$runId\', $pauseIsolatesOnStart);',
-      awaitPromise: true,
-      returnByValue: true,
-    );
-    logger.info('\$dartHotRestartBeginDwds request complete.');
-    final reloadedSrcModuleLibraries = (remoteObject.value as List).cast<Map>();
-    for (final srcModuleLibrary in reloadedSrcModuleLibraries) {
-      final srcModuleLibraryCast = srcModuleLibrary.cast<String, Object>();
-      reloadedSrcs.add(
-        Uri.parse(srcModuleLibraryCast['src'] as String).normalizePath().path,
-      );
-    }
-    if (reloadedSrcs.isEmpty) {
-      chromeProxyService.allowedToCreateIsolate.complete();
-    }
-    computedReloadedSrcs.complete();
-    await chromeProxyService.allowedToCreateIsolate.future;
-    await parsedScriptsSubscription.cancel();
-    logger.info('Waiting for Isolate Start event.');
-    await waitForIsolateStarted;
-    chromeProxyService.terminatingIsolates = false;
-    if (!pauseIsolatesOnStart) {
-      // When there will be no resume event coming, just finish the hot restart
-      // immediately.
-      await _requestHotRestartEnd(chromeProxyService);
-    }
-  }
-
-  Future<void> _legacyHotRestart(
-    ChromeProxyService chromeProxyService,
-    Future<Event> waitForIsolateStarted,
-  ) async {
-    // If we should pause isolates on start, then only run main once we get a
-    // resume event.
-    final pauseIsolatesOnStart = chromeProxyService.pauseIsolatesOnStart;
-    if (pauseIsolatesOnStart) {
-      _waitForResumeEventToRunMain(chromeProxyService);
-    }
-    // Generate run id to hot restart all apps loaded into the tab.
-    final runId = const Uuid().v4();
-
-    logger.info('Issuing \$dartHotRestartDwds request.');
-    final remoteObject = await chromeProxyService.inspector.jsEvaluate(
-      '\$dartHotRestartDwds(\'$runId\', $pauseIsolatesOnStart);',
-      awaitPromise: true,
-      returnByValue: true,
-    );
-    assert(remoteObject.value == null);
-    logger.info('\$dartHotRestartDwds request complete.');
-    logger.info('Waiting for Isolate Start event.');
-    await waitForIsolateStarted;
-    chromeProxyService.terminatingIsolates = false;
-  }
-
-  void _waitForResumeEventToRunMain(ChromeProxyService chromeProxyService) {
-    StreamSubscription<String>? resumeEventsSubscription;
-    resumeEventsSubscription = chromeProxyService.resumeAfterRestartEventsStream
-        .listen((_) async {
-          await resumeEventsSubscription!.cancel();
-          await chromeProxyService.inspector.jsEvaluate(
-            '\$dartReadyToRunMain();',
-          );
-        });
-  }
-
-  /// Waits for the isolate to start after a hot restart and then issues the
-  /// request to finish the hot restart operation.
-  void _waitForResumeEventToEndHotRestart(
-    ChromeProxyService chromeProxyService,
-  ) {
-    StreamSubscription<String>? resumeEventsSubscription;
-    resumeEventsSubscription = chromeProxyService.resumeAfterRestartEventsStream
-        .listen((_) async {
-          logger.info('Received resume event.');
-          await resumeEventsSubscription!.cancel();
-          await _requestHotRestartEnd(chromeProxyService);
-        });
-  }
-
-  Future<void> _requestHotRestartEnd(
-    ChromeProxyService chromeProxyService,
-  ) async {
-    logger.info('Issuing \$dartHotRestartEndDwds request.');
-    await chromeProxyService.inspector.jsEvaluate('\$dartHotRestartEndDwds();');
-    logger.info('\$dartHotRestartEndDwds request complete.');
-  }
-
-  Future<Map<String, dynamic>> _fullReload(
-    ChromeProxyService chromeProxyService,
-  ) async {
-    logger.info('Attempting a full reload');
-    await chromeProxyService.remoteDebugger.enablePage();
-    await chromeProxyService.remoteDebugger.pageReload();
-    logger.info('Successful full reload');
-    return {'result': Success().toJson()};
-  }
-
-  Future<void> _disableBreakpointsAndResume(
-    VmService client,
-    ChromeProxyService chromeProxyService,
-  ) async {
-    logger.info('Attempting to disable breakpoints and resume the isolate');
-    final vm = await client.getVM();
-    final isolates = vm.isolates;
-    if (isolates == null || isolates.isEmpty) {
-      throw StateError('No active isolate to resume.');
-    }
-    final isolateId = isolates.first.id;
-    if (isolateId == null) {
-      throw StateError('No active isolate to resume.');
-    }
-    await chromeProxyService.disableBreakpoints();
-    try {
-      // Any checks for paused status result in race conditions or hangs
-      // at this point:
-      //
-      // - `getIsolate()` and check for status:
-      //    the app might still pause on existing breakpoint.
-      //
-      // - `pause()` and wait for `Debug.paused` event:
-      //   chrome does not send the `Debug.Paused `notification
-      //   without shifting focus to chrome.
-      //
-      // Instead, just try resuming and
-      // ignore failures indicating that the app is already running:
-      //
-      // WipError -32000 Can only perform operation while paused.
-      await client.resume(isolateId);
-    } on RPCError catch (e, s) {
-      if (!e.message.contains('Can only perform operation while paused')) {
-        logger.severe('Hot restart failed to resume exiting isolate', e, s);
-        rethrow;
-      }
-    }
-    logger.info('Successfully disabled breakpoints and resumed the isolate');
-  }
-}
-
-/// WebSocket-based DWDS VM client.
-final class WebSocketDwdsVmClient
-    extends DwdsVmClient<WebSocketProxyService, WebSocketDebugService> {
-  @override
-  final logger = Logger('WebSocketDwdsVmClient');
-
-  static Future<WebSocketDwdsVmClient> create(
-    WebSocketDebugService debugService,
-    Uri? ddsUri,
-  ) async {
-    final dwdsVmClient = WebSocketDwdsVmClient(debugService: debugService);
-    dwdsVmClient.logger.fine('Creating WebSocket DWDS VM client');
-    await dwdsVmClient.initialize(ddsUri: ddsUri);
-    return dwdsVmClient;
-  }
-
-  WebSocketDwdsVmClient({required super.debugService});
-
-  @override
-  Future<void> registerServiceExtensions({
-    required VmService client,
-    required WebSocketProxyService proxyService,
-  }) async {
-    client.registerServiceCallback(
-      'hotRestart',
-      (request) => captureElapsedTime(
-        () => proxyService.hotRestart(),
-        (_) => DwdsEvent.hotRestart(),
-      ),
-    );
-    await client.registerService('hotRestart', 'DWDS');
-  }
-
-  @override
-  Future<VmRequest?> maybeHandleServiceExtensionRequestImpl(
-    VmResponse request, {
-    required WebSocketProxyService proxyService,
-    DwdsStats? dwdsStats,
-  }) async {
-    VmRequest? response;
-    final method = request['method'];
-
-    logger.finest('Processing service extension method: $method');
-
-    if (method == _NamespacedServiceExtension.flutterListViews.method) {
-      response = await flutterListViewsHandler(proxyService);
-    } else if (method == _NamespacedServiceExtension.extDwdsEmitEvent.method) {
-      response = extDwdsEmitEventHandler(request, logger);
-    } else if (method == _NamespacedServiceExtension.extDwdsReload.method) {
-      response = {'result': 'Reload not implemented'};
-    } else if (method == _NamespacedServiceExtension.extDwdsSendEvent.method) {
-      response = await extDwdsSendEventHandler(request, null, logger);
-    } else if (method == _NamespacedServiceExtension.extDwdsScreenshot.method) {
-      response = {'result': 'Screenshot not implemented'};
-    }
-    return response;
-  }
-}
diff --git a/dwds/lib/src/events.dart b/dwds/lib/src/events.dart
deleted file mode 100644
index 3498791..0000000
--- a/dwds/lib/src/events.dart
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:vm_service/vm_service.dart';
-
-class DwdsStats {
-  /// The time when the user starts the debugger.
-  DateTime? _debuggerStart;
-  DateTime? get debuggerStart => _debuggerStart;
-
-  /// The time when dwds launches DevTools.
-  DateTime? _devToolsStart;
-  DateTime? get devToolsStart => _devToolsStart;
-
-  /// Records and returns whether the debugger is ready.
-  bool _isFirstDebuggerReady = true;
-  bool get isFirstDebuggerReady {
-    final wasReady = _isFirstDebuggerReady;
-    _isFirstDebuggerReady = false;
-    return wasReady;
-  }
-
-  void updateLoadTime({
-    required DateTime debuggerStart,
-    required DateTime devToolsStart,
-  }) {
-    _debuggerStart = debuggerStart;
-    _devToolsStart = devToolsStart;
-  }
-
-  DwdsStats();
-}
-
-class DwdsEventKind {
-  static const String compilerUpdateDependencies =
-      'COMPILER_UPDATE_DEPENDENCIES';
-  static const String devtoolsLaunch = 'DEVTOOLS_LAUNCH';
-  static const String devToolsLoad = 'DEVTOOLS_LOAD';
-  static const String debuggerReady = 'DEBUGGER_READY';
-  static const String dwdsAttach = 'DWDS_ATTACH';
-  static const String dwdsLaunch = 'DWDS_LAUNCH';
-  static const String evaluate = 'EVALUATE';
-  static const String evaluateInFrame = 'EVALUATE_IN_FRAME';
-  static const String fullReload = 'FULL_RELOAD';
-  static const String getIsolate = 'GET_ISOLATE';
-  static const String getScripts = 'GET_SCRIPTS';
-  static const String getSourceReport = 'GET_SOURCE_REPORT';
-  static const String getVM = 'GET_VM';
-  static const String hotRestart = 'HOT_RESTART';
-  static const String httpRequestException = 'HTTP_REQUEST_EXCEPTION';
-  static const String resume = 'RESUME';
-
-  DwdsEventKind._();
-}
-
-class DwdsEvent {
-  final String type;
-  final Map<String, dynamic> payload;
-
-  DwdsEvent(this.type, this.payload);
-
-  DwdsEvent.dwdsLaunch({required String codeRunner, bool? isFlutterApp})
-    : this(DwdsEventKind.dwdsLaunch, {
-        'codeRunner': codeRunner,
-        'isFlutterApp': isFlutterApp ?? false,
-      });
-
-  DwdsEvent.dwdsAttach({required String client, bool? isFlutterApp})
-    : this(DwdsEventKind.dwdsAttach, {
-        'client': client,
-        'isFlutterApp': isFlutterApp ?? false,
-      });
-
-  DwdsEvent.compilerUpdateDependencies(String entrypoint)
-    : this(DwdsEventKind.compilerUpdateDependencies, {
-        'entrypoint': entrypoint,
-      });
-
-  DwdsEvent.devtoolsLaunch() : this(DwdsEventKind.devtoolsLaunch, {});
-
-  DwdsEvent.evaluate(String expression, Response? result)
-    : this(DwdsEventKind.evaluate, {
-        'expression': expression,
-        'success': result != null && result is InstanceRef,
-        if (result != null && result is ErrorRef) 'error': result,
-      });
-
-  DwdsEvent.evaluateInFrame(String expression, Response? result)
-    : this(DwdsEventKind.evaluateInFrame, {
-        'expression': expression,
-        'success': result != null && result is InstanceRef,
-        if (result != null && result is ErrorRef) 'error': result,
-      });
-
-  DwdsEvent.getIsolate() : this(DwdsEventKind.getIsolate, {});
-
-  DwdsEvent.getScripts() : this(DwdsEventKind.getScripts, {});
-
-  DwdsEvent.getVM() : this(DwdsEventKind.getVM, {});
-
-  DwdsEvent.resume(String? step) : this(DwdsEventKind.resume, {'step': ?step});
-
-  DwdsEvent.getSourceReport() : this(DwdsEventKind.getSourceReport, {});
-
-  DwdsEvent.hotRestart() : this(DwdsEventKind.hotRestart, {});
-
-  DwdsEvent.fullReload() : this(DwdsEventKind.fullReload, {});
-
-  DwdsEvent.debuggerReady(int elapsedMilliseconds, String screen)
-    : this(DwdsEventKind.debuggerReady, {
-        'elapsedMilliseconds': elapsedMilliseconds,
-        'screen': screen,
-      });
-
-  DwdsEvent.devToolsLoad(int elapsedMilliseconds, String screen)
-    : this(DwdsEventKind.devToolsLoad, {
-        'elapsedMilliseconds': elapsedMilliseconds,
-        'screen': screen,
-      });
-
-  DwdsEvent.httpRequestException(String server, String exception)
-    : this(DwdsEventKind.httpRequestException, {
-        'server': server,
-        'exception': exception,
-      });
-
-  void addException(dynamic exception) {
-    payload['exception'] = exception;
-  }
-
-  void addElapsedTime(int elapsedMilliseconds) {
-    payload['elapsedMilliseconds'] = elapsedMilliseconds;
-  }
-
-  @override
-  String toString() {
-    return 'TYPE: $type Payload: $payload';
-  }
-}
-
-final _eventController = StreamController<DwdsEvent>.broadcast();
-
-/// Adds an event to the global [eventStream];
-void emitEvent(DwdsEvent event) => _eventController.sink.add(event);
-
-/// A global stream of [DwdsEvent]s.
-Stream<DwdsEvent> get eventStream => _eventController.stream;
-
-/// Call [function] and record its execution time.
-///
-/// Calls [event] to create the event to be recorded,
-/// and appends time and exception details to it if
-/// available.
-Future<T> captureElapsedTime<T>(
-  Future<T> Function() function,
-  DwdsEvent Function(T? result) event,
-) async {
-  final stopwatch = Stopwatch()..start();
-  T? result;
-  try {
-    return result = await function();
-  } catch (e) {
-    emitEvent(
-      event(null)
-        ..addException(e)
-        ..addElapsedTime(stopwatch.elapsedMilliseconds),
-    );
-    rethrow;
-  } finally {
-    emitEvent(event(result)..addElapsedTime(stopwatch.elapsedMilliseconds));
-  }
-}
diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart
deleted file mode 100644
index a42343b..0000000
--- a/dwds/lib/src/handlers/dev_handler.dart
+++ /dev/null
@@ -1,1223 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:collection/collection.dart';
-import 'package:dds/dds_launcher.dart';
-import 'package:dwds/data/build_result.dart';
-import 'package:dwds/data/connect_request.dart';
-import 'package:dwds/data/debug_event.dart';
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/error_response.dart';
-import 'package:dwds/data/hot_reload_request.dart';
-import 'package:dwds/data/hot_reload_response.dart';
-import 'package:dwds/data/hot_restart_request.dart';
-import 'package:dwds/data/hot_restart_response.dart';
-import 'package:dwds/data/isolate_events.dart';
-import 'package:dwds/data/ping_request.dart';
-import 'package:dwds/data/register_event.dart';
-import 'package:dwds/data/run_request.dart';
-import 'package:dwds/data/service_extension_request.dart';
-import 'package:dwds/data/service_extension_response.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/connections/debug_connection.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/debugging/webkit_debugger.dart';
-import 'package:dwds/src/dwds_vm_client.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/handlers/injector.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/servers/devtools.dart';
-import 'package:dwds/src/servers/extension_backend.dart';
-import 'package:dwds/src/servers/extension_debugger.dart';
-import 'package:dwds/src/services/app_debug_services.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_service.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/web_socket/web_socket_debug_service.dart';
-import 'package:dwds/src/services/web_socket/web_socket_proxy_service.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-import 'package:sse/server/sse_handler.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// When enabled, this logs VM service protocol and Chrome debug protocol
-/// traffic to disk.
-///
-/// Note: this should not be checked in enabled.
-const _enableLogging = false;
-
-final _logger = Logger('DevHandler');
-
-/// SSE handler to enable development features like hot reload and
-/// opening DevTools.
-class DevHandler {
-  final _subs = <StreamSubscription>[];
-  final _sseHandlers = <String, SocketHandler>{};
-  final _injectedConnections = <SocketConnection>{};
-  final DevTools? _devTools;
-  final AssetReader _assetReader;
-  final String _hostname;
-  final _connectedApps = StreamController<AppConnection>.broadcast();
-  final _servicesByAppId = <String, AppDebugServices>{};
-  final _appConnectionByAppId = <String, AppConnection>{};
-  final Stream<BuildResult> buildResults;
-  final Future<ChromeConnection> Function() _chromeConnection;
-  final ExtensionBackend? _extensionBackend;
-  final StreamController<DebugConnection> extensionDebugConnections =
-      StreamController<DebugConnection>();
-  final UrlEncoder? _urlEncoder;
-  final bool _useSseForDebugProxy;
-  final bool _useSseForInjectedClient;
-  final DartDevelopmentServiceConfiguration _ddsConfig;
-  final bool _launchDevToolsInNewWindow;
-  final ExpressionCompiler? _expressionCompiler;
-  final DwdsInjector _injected;
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  Stream<AppConnection> get connectedApps => _connectedApps.stream;
-
-  final bool useWebSocketConnection;
-
-  final Duration? sseIgnoreDisconnect;
-
-  DevHandler(
-    this._chromeConnection,
-    this.buildResults,
-    this._devTools,
-    this._assetReader,
-    this._hostname,
-    this._extensionBackend,
-    this._urlEncoder,
-    this._useSseForDebugProxy,
-    this._useSseForInjectedClient,
-    this._expressionCompiler,
-    this._injected,
-
-    this._ddsConfig,
-    this._launchDevToolsInNewWindow, {
-    this.useWebSocketConnection = false,
-    this.sseIgnoreDisconnect,
-  }) {
-    _subs.add(buildResults.listen(_emitBuildResults));
-    _listen();
-    if (_extensionBackend != null) {
-      _listenForDebugExtension();
-    }
-  }
-
-  Handler get handler => (request) async {
-    final path = request.requestedUri.path;
-    final sseHandler = _sseHandlers[path];
-    if (sseHandler != null) {
-      return sseHandler.handler(request);
-    }
-    return Response.notFound('');
-  };
-
-  Future<void> close() => _closed ??= () async {
-    await Future.wait([for (final sub in _subs) sub.cancel()]);
-    for (final handler in _sseHandlers.values) {
-      handler.shutdown();
-    }
-    await Future.wait(
-      _servicesByAppId.values.map((service) => service.close()),
-    );
-    _servicesByAppId.clear();
-  }();
-
-  void _emitBuildResults(BuildResult result) {
-    if (result.status != BuildStatus.succeeded) return;
-    for (final injectedConnection in _injectedConnections) {
-      injectedConnection.sink.add(jsonEncode(_serializeMessage(result)));
-    }
-  }
-
-  /// Serializes an outgoing request to the injected client.
-  /// For plain Dart types (converted away from built_value), emit the
-  /// wire format `[TypeName, json]`.
-  Object? _serializeMessage(Object request) {
-    return switch (request) {
-      ConnectRequest() => ['ConnectRequest', request.toJson()],
-      RunRequest() => ['RunRequest', request.toJson()],
-      HotReloadRequest() => ['HotReloadRequest', request.toJson()],
-      HotRestartRequest() => ['HotRestartRequest', request.toJson()],
-      ServiceExtensionRequest() => [
-        'ServiceExtensionRequest',
-        request.toJson(),
-      ],
-      BuildResult() => ['BuildResult', request.toJson()],
-      DebugEvent() => ['DebugEvent', request.toJson()],
-      BatchedDebugEvents() => ['BatchedDebugEvents', request.toJson()],
-      DevToolsResponse() => request,
-      IsolateStart() => ['IsolateStart', request.toJson()],
-      IsolateExit() => ['IsolateExit', request.toJson()],
-      ErrorResponse() => ['ErrorResponse', request.toJson()],
-      RegisterEvent() => ['RegisterEvent', request.toJson()],
-      PingRequest() => ['PingRequest', request.toJson()],
-      Map() => request,
-      _ => throw UnsupportedError('Unknown request type: $request'),
-    };
-  }
-
-  /// Deserializes a message from JSON, handling custom fromJson()
-  /// implementations.
-  Object? _deserializeMessage(dynamic decoded) {
-    if (decoded case [final String typeName, ...]) {
-      // For Map-based RPC data types, the second element is the JSON map.
-      final jsonData = switch (decoded) {
-        [_, final Map<String, dynamic> map] => map,
-        _ => const <String, dynamic>{},
-      };
-
-      return switch (typeName) {
-        // List-based RPC data types:
-        'DevToolsRequest' => DevToolsRequest.fromJson(decoded),
-        // Map-based RPC data types:
-        'ConnectRequest' => ConnectRequest.fromJson(jsonData),
-        'RunRequest' => RunRequest.fromJson(jsonData),
-        'HotRestartRequest' => HotRestartRequest.fromJson(jsonData),
-        'HotReloadResponse' => HotReloadResponse.fromJson(jsonData),
-        'HotRestartResponse' => HotRestartResponse.fromJson(jsonData),
-        'ServiceExtensionResponse' => ServiceExtensionResponse.fromJson(
-          jsonData,
-        ),
-        'ErrorResponse' => ErrorResponse.fromJson(jsonData),
-        'DebugEvent' => DebugEvent.fromJson(jsonData),
-        'BatchedDebugEvents' => BatchedDebugEvents.fromJson(jsonData),
-        'IsolateStart' => IsolateStart.fromJson(jsonData),
-        'IsolateExit' => IsolateExit.fromJson(jsonData),
-        'RegisterEvent' => RegisterEvent.fromJson(jsonData),
-
-        _ => throw FormatException('Unrecognized event type: $typeName'),
-      };
-    }
-    throw FormatException('Unrecognized event type: $decoded');
-  }
-
-  /// Sends the provided [request] to all connected injected clients.
-  /// Returns the number of clients the request was successfully sent to.
-  int _sendRequestToClients(Object request) {
-    _logger.finest('Sending request to injected clients: $request');
-    var successfulSends = 0;
-    for (final injectedConnection in _injectedConnections) {
-      try {
-        injectedConnection.sink.add(jsonEncode(_serializeMessage(request)));
-        successfulSends++;
-        // ignore: avoid_catching_errors
-      } on StateError catch (e) {
-        // The sink has already closed (app is disconnected), or another
-        // StateError occurred.
-        _logger.warning(
-          'Failed to send request to client, connection likely closed. '
-          'Error: $e',
-        );
-      } catch (e, s) {
-        // Catch any other potential errors during sending.
-        _logger.severe('Error sending request to client: $e', e, s);
-      }
-    }
-    _logger.fine(
-      'Sent request to $successfulSends clients out of '
-      '${_injectedConnections.length} total connections',
-    );
-    return successfulSends;
-  }
-
-  /// Starts a [ChromeDebugService] for local debugging.
-  Future<ChromeDebugService> _startLocalDebugService(
-    ChromeConnection chromeConnection,
-    AppConnection appConnection,
-  ) async {
-    ChromeTab? appTab;
-    ExecutionContext? executionContext;
-    WipConnection? connection;
-    late final debugger = WebkitDebugger(WipDebugger(connection!));
-    final appInstanceId = appConnection.request.instanceId;
-    for (final tab in await chromeConnection.getTabs()) {
-      if (tab.isChromeExtension || tab.isBackgroundPage) continue;
-
-      connection = await tab.connect();
-      if (_enableLogging) {
-        connection.onSend.listen((message) {
-          _log('  wip', '==> $message');
-        });
-        connection.onReceive.listen((message) {
-          _log('  wip', '<== $message');
-        });
-        connection.onNotification.listen((message) {
-          _log('  wip', '<== $message');
-        });
-      }
-      final contextIds = connection.runtime.onExecutionContextCreated
-          .map((context) => context.id)
-          // There is no way to calculate the number of existing execution
-          // contexts so keep receiving them until there is a 50ms gap after
-          // receiving the last one.
-          .takeUntilGap(const Duration(milliseconds: 50));
-      // We enqueue this work as we need to begin listening (`.hasNext`)
-      // before events are received.
-      safeUnawaited(Future.microtask(connection.runtime.enable));
-
-      await for (final contextId in contextIds) {
-        final result = await connection.sendCommand('Runtime.evaluate', {
-          'expression': r'window["$dartAppInstanceId"];',
-          'contextId': contextId,
-        });
-        final evaluatedAppId =
-            (result.result?['result'] as Map<String, dynamic>?)?['value'];
-        if (evaluatedAppId == appInstanceId) {
-          appTab = tab;
-          executionContext = RemoteDebuggerExecutionContext(
-            contextId,
-            debugger,
-          );
-          break;
-        }
-      }
-      if (appTab != null) break;
-      safeUnawaited(connection.close());
-    }
-    if (appTab == null || connection == null || executionContext == null) {
-      throw AppConnectionException(
-        'Could not connect to application with appInstanceId: '
-        '$appInstanceId',
-      );
-    }
-
-    return ChromeDebugService.start(
-      // We assume the user will connect to the debug service on the same
-      // machine. This allows consumers of DWDS to provide a `hostname` for
-      // debugging through the Dart Debug Extension without impacting the local
-      // debug workflow.
-      hostname: 'localhost',
-      remoteDebugger: debugger,
-      executionContext: executionContext,
-      assetReader: _assetReader,
-      appConnection: appConnection,
-      urlEncoder: _urlEncoder,
-      onResponse: (response) {
-        if (response['error'] == null) return;
-        _logger.finest('VmService proxy responded with an error:\n$response');
-        if (_enableLogging) {
-          _log('vm', '<== ${response.toString().replaceAll('\n', ' ')}');
-        }
-      },
-      onRequest: (request) {
-        if (_enableLogging) {
-          _log('vm', '==> ${request.toString().replaceAll('\n', ' ')}');
-        }
-      },
-      // This will provide a websocket based service.
-      useSse: false,
-      expressionCompiler: _expressionCompiler,
-      ddsConfig: _ddsConfig,
-    );
-  }
-
-  void _log(String type, String message) {
-    final logFile = File('${Platform.environment['HOME']}/dwds_log.txt');
-    final time = (DateTime.now().millisecondsSinceEpoch % 1000000) / 1000.0;
-    logFile.writeAsStringSync(
-      '[${time.toStringAsFixed(3).padLeft(7)}s] $type $message\n',
-      mode: FileMode.append,
-    );
-  }
-
-  Future<AppDebugServices> loadAppServices(AppConnection appConnection) async {
-    final appId = appConnection.request.appId;
-    var appServices = _servicesByAppId[appId];
-    if (appServices == null) {
-      if (useWebSocketConnection) {
-        appServices = await _createWebSocketAppServices(appConnection);
-      } else {
-        appServices = await _createChromeAppServices(appConnection);
-        _setupChromeServiceCleanup(appServices, appConnection);
-      }
-      _servicesByAppId[appId] = appServices;
-    }
-
-    return appServices;
-  }
-
-  /// Creates WebSocket-based app services for hot reload functionality.
-  Future<AppDebugServices> _createWebSocketAppServices(
-    AppConnection appConnection,
-  ) async {
-    final webSocketDebugService = await WebSocketDebugService.start(
-      hostname: 'localhost',
-      appConnection: appConnection,
-      assetReader: _assetReader,
-      sendClientRequest: _sendRequestToClients,
-      ddsConfig: _ddsConfig,
-    );
-    return _createAppDebugServicesWebSocketMode(
-      webSocketDebugService,
-      appConnection,
-    );
-  }
-
-  /// Creates Chrome-based app services for full debugging capabilities.
-  Future<AppDebugServices> _createChromeAppServices(
-    AppConnection appConnection,
-  ) async {
-    final debugService = await _startLocalDebugService(
-      await _chromeConnection(),
-      appConnection,
-    );
-    return _createAppDebugServices(debugService);
-  }
-
-  /// Sets up cleanup handling for Chrome-based services.
-  void _setupChromeServiceCleanup(
-    AppDebugServices appServices,
-    AppConnection appConnection,
-  ) {
-    final chromeProxy = appServices.proxyService;
-    if (chromeProxy is ChromeProxyService) {
-      safeUnawaited(
-        chromeProxy.remoteDebugger.onClose.first.whenComplete(() async {
-          await appServices.close();
-          _servicesByAppId.remove(appConnection.request.appId);
-          _logger.info(
-            'Stopped debug service on '
-            'ws://${appServices.debugService.hostname}:${appServices.debugService.port}\n',
-          );
-        }),
-      );
-    }
-  }
-
-  void _handleConnection(SocketConnection injectedConnection) {
-    _injectedConnections.add(injectedConnection);
-    AppConnection? appConnection;
-    injectedConnection.stream.listen((data) async {
-      try {
-        final message = _deserializeMessage(jsonDecode(data));
-        if (message is ConnectRequest) {
-          if (appConnection != null) {
-            throw StateError(
-              'Duplicate connection request from the same app. '
-              'Please file an issue at '
-              'https://github.com/dart-lang/webdev/issues/new.',
-            );
-          }
-          appConnection = useWebSocketConnection
-              ? await _handleWebSocketConnectRequest(
-                  message,
-                  injectedConnection,
-                )
-              : await _handleConnectRequest(message, injectedConnection);
-        } else {
-          final connection = appConnection;
-          if (connection == null) {
-            throw StateError('Not connected to an application.');
-          }
-          if (message is DevToolsRequest) {
-            await _handleDebugRequest(connection, injectedConnection);
-          } else {
-            // Handle messages for both WebSocket and Chrome proxy services
-            await _handleMessage(connection, message);
-          }
-        }
-      } catch (e, s) {
-        // Most likely the app disconnected in the middle of us responding,
-        // but we will try and send an error response back to the page just in
-        // case it is still running.
-        try {
-          injectedConnection.sink.add(
-            jsonEncode(
-              _serializeMessage(ErrorResponse(error: '$e', stackTrace: '$s')),
-            ),
-          );
-          // ignore: avoid_catching_errors
-        } on StateError catch (_) {
-          // The sink has already closed (app is disconnected), swallow the
-          // error.
-        }
-      }
-    });
-
-    safeUnawaited(
-      injectedConnection.sink.done.then((_) {
-        _injectedConnections.remove(injectedConnection);
-        final connection = appConnection;
-        if (connection != null) {
-          final appId = connection.request.appId;
-          final services = _servicesByAppId[appId];
-          // WebSocket mode doesn't need this because WebSocketProxyService
-          // handles connection tracking and cleanup
-          if (!useWebSocketConnection) {
-            _appConnectionByAppId.remove(appId);
-          }
-          if (services != null) {
-            if (services.connectedInstanceId == null ||
-                services.connectedInstanceId == connection.request.instanceId) {
-              services.connectedInstanceId = null;
-              _handleIsolateExit(connection);
-            }
-          }
-        }
-      }),
-    );
-  }
-
-  /// Handles messages for both WebSocket and Chrome proxy services.
-  Future<void> _handleMessage(AppConnection connection, Object? message) async {
-    if (message == null) return;
-
-    final appId = connection.request.appId;
-    final proxyService = _servicesByAppId[appId]?.proxyService;
-
-    if (proxyService == null) {
-      if (message is HotRestartRequest) {
-        _logger.finest('No debugger, let the app handle the restart itself.');
-        connection.hotRestart(message);
-        return;
-      }
-      _logger.warning(
-        'No proxy service found for appId: $appId to process $message',
-      );
-      return;
-    }
-
-    // Handle messages that are specific to certain proxy service types
-    if (message is HotReloadResponse) {
-      proxyService.completeHotReload(message);
-    } else if (message is HotRestartResponse) {
-      proxyService.completeHotRestart(message);
-    } else if (message is ServiceExtensionResponse) {
-      proxyService.completeServiceExtension(message);
-    } else if (message is IsolateExit) {
-      _handleIsolateExit(connection);
-    } else if (message is IsolateStart) {
-      await _handleIsolateStart(connection);
-    } else if (message is BatchedDebugEvents) {
-      proxyService.parseBatchedDebugEvents(message);
-    } else if (message is DebugEvent) {
-      proxyService.parseDebugEvent(message);
-    } else if (message is RegisterEvent) {
-      proxyService.parseRegisterEvent(message);
-    } else if (message is HotRestartRequest) {
-      final services = _servicesByAppId[appId]!;
-      if (services.dwdsVmClient is! ChromeDwdsVmClient ||
-          services.proxyService is! ChromeProxyService) {
-        throw UnsupportedError(
-          'In-app restart requests are only supported by '
-          'ChromeDwdsVmClient and ChromeProxyService',
-        );
-      }
-      final chromeClient = services.dwdsVmClient as ChromeDwdsVmClient;
-      final chromeProxyService = services.proxyService as ChromeProxyService;
-      unawaited(
-        chromeClient.hotRestart(chromeProxyService, chromeClient.client),
-      );
-    } else {
-      final serviceType = proxyService is WebSocketProxyService
-          ? 'WebSocket'
-          : 'Chrome';
-      throw UnsupportedError(
-        'Message type ${message.runtimeType} is not supported in $serviceType '
-        'mode',
-      );
-    }
-  }
-
-  Future<void> _handleDebugRequest(
-    AppConnection appConnection,
-    SocketConnection sseConnection,
-  ) async {
-    if (_devTools == null && !_ddsConfig.serveDevTools) {
-      sseConnection.sink.add(
-        jsonEncode(
-          _serializeMessage(
-            DevToolsResponse(
-              success: false,
-              promptExtension: false,
-              error:
-                  'Debugging is not enabled.\n\n'
-                  'If you are using webdev please pass the --debug flag.\n'
-                  'Otherwise check the docs for the tool you are using.',
-            ),
-          ),
-        ),
-      );
-      return;
-    }
-    final debuggerStart = DateTime.now();
-    AppDebugServices appServices;
-    try {
-      appServices = await loadAppServices(appConnection);
-    } catch (_) {
-      final error =
-          'Unable to connect debug services to your '
-          'application. Most likely this means you are trying to '
-          'load in a different Chrome window than was launched by '
-          'your development tool.';
-      var response = DevToolsResponse(
-        success: false,
-        promptExtension: false,
-        error: error,
-      );
-      if (_extensionBackend != null) {
-        response = DevToolsResponse(
-          success: false,
-          promptExtension: true,
-          error:
-              '$error\n\n'
-              'Your workflow alternatively supports debugging through the '
-              'Dart Debug Extension.\n\n'
-              'Would you like to install the extension?',
-        );
-      }
-      sseConnection.sink.add(jsonEncode(_serializeMessage(response)));
-      return;
-    }
-
-    // Check if we are already running debug services for a different
-    // instance of this app.
-    if (appServices.connectedInstanceId != null &&
-        appServices.connectedInstanceId != appConnection.request.instanceId) {
-      sseConnection.sink.add(
-        jsonEncode(
-          _serializeMessage(
-            DevToolsResponse(
-              success: false,
-              promptExtension: false,
-              error:
-                  'This app is already being debugged in a different tab. '
-                  'Please close that tab or switch to it.',
-            ),
-          ),
-        ),
-      );
-      return;
-    }
-
-    sseConnection.sink.add(
-      jsonEncode(
-        _serializeMessage(
-          DevToolsResponse(success: true, promptExtension: false),
-        ),
-      ),
-    );
-
-    appServices.connectedInstanceId = appConnection.request.instanceId;
-    appServices.dwdsStats!.updateLoadTime(
-      debuggerStart: debuggerStart,
-      devToolsStart: DateTime.now(),
-    );
-    final chromeProxy = appServices.proxyService;
-    if (chromeProxy is ChromeProxyService) {
-      await _launchDevTools(
-        chromeProxy.remoteDebugger,
-        _constructDevToolsUri(
-          appServices,
-          appServices.debugService.uri,
-          ideQueryParam: 'Dwds',
-        ),
-      );
-    }
-  }
-
-  /// Creates a debug connection for WebSocket mode.
-  Future<DebugConnection> createDebugConnectionForWebSocket(
-    AppConnection appConnection,
-  ) async {
-    final appDebugServices = await loadAppServices(appConnection);
-
-    // Initialize WebSocket proxy service
-    try {
-      final proxyService = appDebugServices.proxyService;
-      if (proxyService is! WebSocketProxyService) {
-        throw StateError(
-          'Expected WebSocketProxyService but got ${proxyService.runtimeType}.',
-        );
-      }
-      await proxyService.isInitialized;
-      _logger.fine('WebSocket proxy service initialized successfully');
-    } catch (e) {
-      _logger.severe('Failed to initialize WebSocket proxy service: $e');
-      rethrow;
-    }
-
-    return DebugConnection(appDebugServices);
-  }
-
-  /// Creates a debug connection for Chrome mode.
-  Future<DebugConnection> createDebugConnectionForChrome(
-    AppConnection appConnection,
-  ) async {
-    final appDebugServices = await loadAppServices(appConnection);
-
-    // Initialize Chrome proxy service
-    try {
-      final proxyService = appDebugServices.proxyService;
-      if (proxyService is! ChromeProxyService) {
-        throw StateError(
-          'Expected ChromeProxyService but got ${proxyService.runtimeType}. ',
-        );
-      }
-      await proxyService.isInitialized;
-      _logger.fine('Chrome proxy service initialized successfully');
-    } catch (e) {
-      _logger.severe('Failed to initialize Chrome proxy service: $e');
-      rethrow;
-    }
-
-    return DebugConnection(appDebugServices);
-  }
-
-  Future<AppConnection> _handleConnectRequest(
-    ConnectRequest message,
-    SocketConnection sseConnection,
-  ) async {
-    // After a page refresh, reconnect to the same app services if they
-    // were previously launched and create the new isolate.
-    final services = _servicesByAppId[message.appId];
-    final existingConnection = _appConnectionByAppId[message.appId];
-    // Completer to indicate when the app's main() method is ready to be run.
-    // Its future is passed to the AppConnection so that it can be awaited on
-    // before running the app's main() method:
-    final readyToRunMainCompleter = Completer<void>();
-    final connection = AppConnection(
-      message,
-      sseConnection,
-      readyToRunMainCompleter.future,
-    );
-
-    if (_canReconnect(existingConnection, message)) {
-      // Disconnect any old connection (eg. those in the keep-alive waiting
-      // state when reloading the page).
-      existingConnection?.shutDown();
-      final chromeProxy = services!.proxyService;
-      if (chromeProxy is ChromeProxyService) {
-        chromeProxy.destroyIsolate();
-      }
-
-      // Reconnect to existing service.
-      services.connectedInstanceId = message.instanceId;
-
-      final chromeService = services.proxyService;
-      if (chromeService is ChromeProxyService) {
-        if (chromeService.pauseIsolatesOnStart) {
-          // If the pause-isolates-on-start flag is set, we need to wait for
-          // the resume event to run the app's main() method.
-          _waitForResumeEventToRunMain(
-            chromeService.resumeAfterRestartEventsStream,
-            readyToRunMainCompleter,
-          );
-        } else {
-          // Otherwise, we can run the app's main() method immediately.
-          readyToRunMainCompleter.complete();
-        }
-
-        await chromeService.createIsolate(connection);
-      }
-    } else {
-      // If this is the initial app connection, we can run the app's main()
-      // method immediately.
-      readyToRunMainCompleter.complete();
-    }
-    _appConnectionByAppId[message.appId] = connection;
-    _connectedApps.add(connection);
-    return connection;
-  }
-
-  /// Handles WebSocket mode connection requests with multi-window support.
-  Future<AppConnection> _handleWebSocketConnectRequest(
-    ConnectRequest message,
-    SocketConnection sseConnection,
-  ) async {
-    // After a page refresh, reconnect to the same app services if they
-    // were previously launched and create the new isolate.
-    final services = _servicesByAppId[message.appId];
-    final existingConnection = _appConnectionByAppId[message.appId];
-    // Completer to indicate when the app's main() method is ready to be run.
-    // Its future is passed to the AppConnection so that it can be awaited on
-    // before running the app's main() method:
-    final readyToRunMainCompleter = Completer<void>();
-    final connection = AppConnection(
-      message,
-      sseConnection,
-      readyToRunMainCompleter.future,
-    );
-
-    if (_canReconnect(existingConnection, message)) {
-      // Reconnect to existing service.
-      await _reconnectToService(
-        services!,
-        existingConnection,
-        connection,
-        message,
-        readyToRunMainCompleter,
-      );
-    } else {
-      // New browser window or initial connection: run main() immediately
-      readyToRunMainCompleter.complete();
-
-      // For WebSocket mode, we need to proactively create and emit a debug
-      // connection
-      try {
-        if (services != null) {
-          // If we are reconnecting to an existing app but not the same
-          // instance, ensure the isolate is started for the new connection
-          // before creating the debug connection, otherwise it will hang
-          // waiting for initialization.
-          await _handleIsolateStart(connection);
-        }
-
-        // Initialize the WebSocket service and create debug connection
-        final debugConnection = await createDebugConnectionForWebSocket(
-          connection,
-        );
-
-        // Emit the debug connection through the extension stream
-        extensionDebugConnections.add(debugConnection);
-      } catch (e, s) {
-        _logger.warning('Failed to create WebSocket debug connection: $e\n$s');
-      }
-    }
-    _appConnectionByAppId[message.appId] = connection;
-    _connectedApps.add(connection);
-    _logger.fine('App connection established for: ${message.appId}');
-    return connection;
-  }
-
-  /// Allow connection reuse for page refreshes and same instance reconnections
-  bool _canReconnect(
-    AppConnection? existingConnection,
-    ConnectRequest message,
-  ) {
-    final services = _servicesByAppId[message.appId];
-
-    if (services == null) {
-      return false;
-    }
-
-    if (existingConnection?.request.instanceId == message.instanceId) {
-      return true;
-    }
-
-    final isKeepAliveReconnect =
-        existingConnection?.isInKeepAlivePeriod == true;
-    final hasNoActiveConnection = services.connectedInstanceId == null;
-    final noExistingConnection = existingConnection == null;
-
-    return (isKeepAliveReconnect && hasNoActiveConnection) ||
-        (noExistingConnection && hasNoActiveConnection);
-  }
-
-  /// Handles reconnection to existing services for web-socket mode.
-  Future<void> _reconnectToService(
-    AppDebugServices services,
-    AppConnection? existingConnection,
-    AppConnection newConnection,
-    ConnectRequest message,
-    Completer<void> readyToRunMainCompleter,
-  ) async {
-    // Disconnect old connection
-    existingConnection?.shutDown();
-    services.connectedInstanceId = message.instanceId;
-
-    _logger.finest('WebSocket service reconnected for app: ${message.appId}');
-
-    final wsService = services.proxyService;
-    if (wsService is WebSocketProxyService) {
-      _setupMainExecution(
-        wsService.pauseIsolatesOnStart,
-        wsService.resumeAfterRestartEventsStream,
-        readyToRunMainCompleter,
-      );
-    } else {
-      readyToRunMainCompleter.complete();
-    }
-
-    await _handleIsolateStart(newConnection);
-  }
-
-  /// Sets up main() execution timing based on pause settings.
-  void _setupMainExecution(
-    bool pauseIsolatesOnStart,
-    Stream<String>? resumeEventsStream,
-    Completer<void> readyToRunMainCompleter,
-  ) {
-    if (pauseIsolatesOnStart && resumeEventsStream != null) {
-      _waitForResumeEventToRunMain(resumeEventsStream, readyToRunMainCompleter);
-    } else {
-      readyToRunMainCompleter.complete();
-    }
-  }
-
-  /// Waits for a resume event to trigger the app's main() method.
-  ///
-  /// The [readyToRunMainCompleter]'s future will be passed to the
-  /// [AppConnection] so that it can be awaited on before running the app's
-  /// main() method.
-  void _waitForResumeEventToRunMain(
-    Stream<String> resumeEventsStream,
-    Completer<void> readyToRunMainCompleter,
-  ) {
-    StreamSubscription<String>? resumeEventsSubscription;
-    resumeEventsSubscription = resumeEventsStream.listen((_) async {
-      await resumeEventsSubscription!.cancel();
-      readyToRunMainCompleter.complete();
-    });
-  }
-
-  /// Handles isolate exit events for both WebSocket and Chrome-based debugging.
-  void _handleIsolateExit(AppConnection appConnection) {
-    final appId = appConnection.request.appId;
-
-    if (useWebSocketConnection) {
-      _logger.fine(
-        'Isolate exit handled by WebSocket proxy service for app: $appId',
-      );
-    } else {
-      final proxyService = _servicesByAppId[appId]?.proxyService;
-      if (proxyService is ChromeProxyService) {
-        proxyService.destroyIsolate();
-      }
-    }
-  }
-
-  /// Handles isolate start events for both WebSocket and Chrome-based
-  /// debugging.
-  Future<void> _handleIsolateStart(AppConnection appConnection) async {
-    final appId = appConnection.request.appId;
-
-    if (useWebSocketConnection) {
-      final proxyService = _servicesByAppId[appId]?.proxyService;
-      if (proxyService is WebSocketProxyService) {
-        await proxyService.createIsolate(appConnection);
-      }
-    } else {
-      final proxyService = _servicesByAppId[appId]?.proxyService;
-      if (proxyService is ChromeProxyService) {
-        await proxyService.createIsolate(appConnection);
-      }
-    }
-  }
-
-  void _listen() {
-    _subs.add(
-      _injected.devHandlerPaths.listen((devHandlerPath) async {
-        final uri = Uri.parse(devHandlerPath);
-        if (!_sseHandlers.containsKey(uri.path)) {
-          final handler = _useSseForInjectedClient
-              ? SseSocketHandler(
-                  // We provide an essentially indefinite keep alive duration
-                  // because the underlying connection could be lost while the
-                  // application is paused. The connection will get
-                  // re-established after a resume or cleaned up on a full
-                  // page refresh.
-                  SseHandler(
-                    uri,
-                    keepAlive: const Duration(days: 3000),
-                    ignoreDisconnect: sseIgnoreDisconnect,
-                  ),
-                )
-              : WebSocketSocketHandler();
-          _sseHandlers[uri.path] = handler;
-          final injectedConnections = handler.connections;
-          while (await injectedConnections.hasNext) {
-            _handleConnection(await injectedConnections.next);
-          }
-        }
-      }),
-    );
-  }
-
-  Future<AppDebugServices> _createAppDebugServices(
-    ChromeDebugService debugService,
-  ) async {
-    final dwdsStats = DwdsStats();
-    DartDevelopmentServiceLauncher? dds;
-    if (_ddsConfig.enable) {
-      dds = await debugService.startDartDevelopmentService();
-    }
-    final vmClient = await ChromeDwdsVmClient.create(debugService, dds?.wsUri);
-    final appDebugService = AppDebugServices(
-      debugService: debugService,
-      dwdsVmClient: vmClient,
-      dwdsStats: dwdsStats,
-      dds: dds,
-    );
-    final encodedUri = await debugService.encodedUri;
-    _logger.info('Debug service listening on $encodedUri\n');
-    final chromeProxy = appDebugService.proxyService;
-    if (chromeProxy is ChromeProxyService) {
-      await chromeProxy.remoteDebugger.sendCommand(
-        'Runtime.evaluate',
-        params: {
-          'expression':
-              'console.log('
-              '"This app is linked to the debug service: $encodedUri"'
-              ');',
-        },
-      );
-    }
-
-    // Notify that DWDS has been launched and a debug connection has been made:
-    _maybeEmitDwdsLaunchEvent();
-
-    return appDebugService;
-  }
-
-  Future<AppDebugServices> _createAppDebugServicesWebSocketMode(
-    WebSocketDebugService webSocketDebugService,
-    AppConnection appConnection,
-  ) async {
-    DartDevelopmentServiceLauncher? dds;
-    if (_ddsConfig.enable) {
-      dds = await webSocketDebugService.startDartDevelopmentService();
-    }
-    final wsVmClient = await WebSocketDwdsVmClient.create(
-      webSocketDebugService,
-      dds?.wsUri,
-    );
-    final wsAppDebugService = AppDebugServices(
-      debugService: webSocketDebugService,
-      dwdsVmClient: wsVmClient,
-      dds: dds,
-    );
-
-    safeUnawaited(_handleIsolateStart(appConnection));
-    final debugServiceUri = webSocketDebugService.uri;
-    _logger.info('Debug service listening on $debugServiceUri\n');
-
-    // Notify that DWDS has been launched and a debug connection has been made:
-    _maybeEmitDwdsLaunchEvent();
-
-    return wsAppDebugService;
-  }
-
-  Future<void> _listenForDebugExtension() async {
-    final extensionBackend = _extensionBackend;
-    if (extensionBackend == null) {
-      _logger.severe('No debug extension backend. Debugging will not work.');
-      return;
-    }
-
-    while (await extensionBackend.connections.hasNext) {
-      final extensionDebugger = await extensionBackend.extensionDebugger;
-      _startExtensionDebugService(extensionDebugger);
-    }
-  }
-
-  /// Starts a [ChromeProxyService] for Dart Debug Extension.
-  void _startExtensionDebugService(ExtensionDebugger extensionDebugger) {
-    // Waits for a `DevToolsRequest` to be sent from the extension background
-    // when the extension is clicked.
-    extensionDebugger.devToolsRequestStream.listen((devToolsRequest) async {
-      try {
-        await _handleDevToolsRequest(extensionDebugger, devToolsRequest);
-        _logger.finest('DevTools request processed successfully');
-      } catch (error) {
-        _logger.severe('Encountered error handling DevTools request.');
-        extensionDebugger.closeWithError(error);
-      }
-    });
-  }
-
-  Future<void> _handleDevToolsRequest(
-    ExtensionDebugger extensionDebugger,
-    DevToolsRequest devToolsRequest,
-  ) async {
-    // TODO(grouma) - Ideally we surface those warnings to the extension so
-    // that it can be displayed to the user through an alert.
-    final tabUrl = devToolsRequest.tabUrl;
-    final appId = devToolsRequest.appId;
-    if (tabUrl == null) {
-      throw StateError(
-        'Failed to start extension debug service. '
-        'Missing tab url in DevTools request for app with id: $appId',
-      );
-    }
-    final connection = _appConnectionByAppId[appId];
-    if (connection == null) {
-      throw StateError(
-        'Failed to start extension debug service. '
-        'Not connected to an app with id: $appId',
-      );
-    }
-    final executionContext = extensionDebugger.executionContext;
-    if (executionContext == null) {
-      throw StateError(
-        'Failed to start extension debug service. '
-        'No execution context for app with id: $appId',
-      );
-    }
-
-    final debuggerStart = DateTime.now();
-    var appServices = _servicesByAppId[appId];
-    if (appServices == null) {
-      final debugService = await ChromeDebugService.start(
-        hostname: _hostname,
-        remoteDebugger: extensionDebugger,
-        executionContext: executionContext,
-        assetReader: _assetReader,
-        appConnection: connection,
-        urlEncoder: _urlEncoder,
-        onResponse: (response) {
-          if (response['error'] == null) return;
-          _logger.finest('VmService proxy responded with an error:\n$response');
-        },
-        useSse: _useSseForDebugProxy,
-        expressionCompiler: _expressionCompiler,
-        ddsConfig: _ddsConfig,
-      );
-      appServices = await _createAppDebugServices(debugService);
-      extensionDebugger.sendEvent('dwds.debugUri', debugService.uri);
-      final encodedUri = await debugService.encodedUri;
-      extensionDebugger.sendEvent('dwds.encodedUri', encodedUri);
-      final chromeProxy = appServices.proxyService;
-      if (chromeProxy is ChromeProxyService) {
-        safeUnawaited(
-          chromeProxy.remoteDebugger.onClose.first.whenComplete(() async {
-            chromeProxy.destroyIsolate();
-            await appServices?.close();
-            _servicesByAppId.remove(devToolsRequest.appId);
-            _logger.info(
-              'Stopped debug service on '
-              '${await appServices?.debugService.encodedUri}\n',
-            );
-          }),
-        );
-      }
-      extensionDebugConnections.add(DebugConnection(appServices));
-      _servicesByAppId[appId] = appServices;
-    }
-
-    _maybeEmitDwdsAttachEvent(devToolsRequest);
-
-    // If we don't have a DevTools instance, then are connecting to an IDE.
-    // Therefore return early instead of opening DevTools:
-    if (_devTools == null) return;
-
-    final encodedUri = await appServices.debugService.encodedUri;
-
-    appServices.dwdsStats!.updateLoadTime(
-      debuggerStart: debuggerStart,
-      devToolsStart: DateTime.now(),
-    );
-
-    emitEvent(DwdsEvent.devtoolsLaunch());
-    // Send the DevTools URI to the Dart Debug Extension so that it can open it:
-    final devToolsUri = _constructDevToolsUri(
-      appServices,
-      encodedUri,
-      ideQueryParam: 'ChromeDevTools',
-    );
-    return extensionDebugger.sendEvent('dwds.devtoolsUri', devToolsUri);
-  }
-
-  Future<void> _launchDevTools(
-    RemoteDebugger remoteDebugger,
-    String devToolsUri,
-  ) async {
-    // TODO(grouma) - We may want to log the debugServiceUri if we don't launch
-    // DevTools so that users can manually connect.
-    emitEvent(DwdsEvent.devtoolsLaunch());
-    await remoteDebugger.sendCommand(
-      'Target.createTarget',
-      params: {'newWindow': _launchDevToolsInNewWindow, 'url': devToolsUri},
-    );
-  }
-
-  String _constructDevToolsUri(
-    AppDebugServices appDebugServices,
-    String serviceUri, {
-    String ideQueryParam = '',
-  }) {
-    final devToolsUri = _devTools?.uri ?? appDebugServices.devToolsUri;
-    if (devToolsUri == null) {
-      throw StateError('DevHandler: DevTools is not available');
-    }
-    return devToolsUri
-        .replace(
-          pathSegments: [
-            // Strips any trailing slashes from the original path
-            ...devToolsUri.pathSegments.whereNot((e) => e.isEmpty),
-            'debugger',
-          ],
-          queryParameters: {
-            ...devToolsUri.queryParameters,
-            'uri': serviceUri,
-            if (ideQueryParam.isNotEmpty) 'ide': ideQueryParam,
-          },
-        )
-        .toString();
-  }
-
-  static void _maybeEmitDwdsAttachEvent(DevToolsRequest request) {
-    if (request.client != null) {
-      emitEvent(
-        DwdsEvent.dwdsAttach(
-          client: request.client!,
-          isFlutterApp:
-              globalToolConfiguration.loadStrategy.buildSettings.isFlutterApp,
-        ),
-      );
-    }
-  }
-
-  static void _maybeEmitDwdsLaunchEvent() {
-    if (globalToolConfiguration.appMetadata.codeRunner != null) {
-      emitEvent(
-        DwdsEvent.dwdsLaunch(
-          codeRunner: globalToolConfiguration.appMetadata.codeRunner!,
-          isFlutterApp:
-              globalToolConfiguration.loadStrategy.buildSettings.isFlutterApp,
-        ),
-      );
-    }
-  }
-}
-
-class AppConnectionException implements Exception {
-  final String details;
-
-  AppConnectionException(this.details);
-}
-
-extension<T> on Stream<T> {
-  /// Forwards events from the original stream until a period of at least [gap]
-  /// occurs in between events, in which case the returned stream will end.
-  Stream<T> takeUntilGap(Duration gap) {
-    final controller = isBroadcast
-        ? StreamController<T>.broadcast(sync: true)
-        : StreamController<T>(sync: true);
-
-    late StreamSubscription<T> subscription;
-    Timer? gapTimer;
-    controller.onListen = () {
-      subscription = listen(
-        (e) {
-          controller.add(e);
-          gapTimer?.cancel();
-          gapTimer = Timer(gap, () {
-            subscription.cancel();
-            controller.close();
-          });
-        },
-        onError: controller.addError,
-        onDone: controller.close,
-      );
-    };
-    // Not handling pause/resume
-    return controller.stream;
-  }
-}
diff --git a/dwds/lib/src/handlers/injected_client_js.dart b/dwds/lib/src/handlers/injected_client_js.dart
deleted file mode 100644
index 701db01..0000000
--- a/dwds/lib/src/handlers/injected_client_js.dart
+++ /dev/null
@@ -1,22606 +0,0 @@
-// Generated code. Do not modify.
-// Emits the transpiled client.js directly into a statically embeddable string.
-// dart format off
-
-const injectedClientJs = "// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.14.0-edge.50515e8099940d7fe8afd133cef476f2461060ae.\n"
-"// The code supports the following hooks:\n"
-"// dartPrint(message):\n"
-"//    if this function is defined it is called instead of the Dart [print]\n"
-"//    method.\n"
-"//\n"
-"// dartMainRunner(main, args):\n"
-"//    if this function is defined, the Dart [main] method will not be invoked\n"
-"//    directly. Instead, a closure that will invoke [main], and its arguments\n"
-"//    [args] is passed to [dartMainRunner].\n"
-"//\n"
-"// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId, loadPriority):\n"
-"//    if this function is defined, it will be called when a deferred library\n"
-"//    is loaded. It should load and eval the javascript of `uri`, and call\n"
-"//    successCallback. If it fails to do so, it should call errorCallback with\n"
-"//    an error. The loadId argument is the deferred import that resulted in\n"
-"//    this uri being loaded. The loadPriority argument is an arbitrary argument\n"
-"//    string forwarded from the 'dart2js:load-priority' pragma option.\n"
-"// dartDeferredLibraryMultiLoader(uris, successCallback, errorCallback, loadId, loadPriority):\n"
-"//    if this function is defined, it will be called when a deferred library\n"
-"//    is loaded. It should load and eval the javascript of every URI in `uris`,\n"
-"//    and call successCallback. If it fails to do so, it should call\n"
-"//    errorCallback with an error. The loadId argument is the deferred import\n"
-"//    that resulted in this uri being loaded. The loadPriority argument is an\n"
-"//    arbitrary argument string forwarded from the 'dart2js:load-priority'\n"
-"//    pragma option.\n"
-"//\n"
-"// dartCallInstrumentation(id, qualifiedName):\n"
-"//    if this function is defined, it will be called at each entry of a\n"
-"//    method or constructor. Used only when compiling programs with\n"
-"//    --experiment-call-instrumentation.\n"
-"(function dartProgram() {\n"
-"  function copyProperties(from, to) {\n"
-"    var keys = Object.keys(from);\n"
-"    for (var i = 0; i < keys.length; i++) {\n"
-"      var key = keys[i];\n"
-"      to[key] = from[key];\n"
-"    }\n"
-"  }\n"
-"  function mixinPropertiesHard(from, to) {\n"
-"    var keys = Object.keys(from);\n"
-"    for (var i = 0; i < keys.length; i++) {\n"
-"      var key = keys[i];\n"
-"      if (!to.hasOwnProperty(key)) {\n"
-"        to[key] = from[key];\n"
-"      }\n"
-"    }\n"
-"  }\n"
-"  function mixinPropertiesEasy(from, to) {\n"
-"    Object.assign(to, from);\n"
-"  }\n"
-"  var supportsDirectProtoAccess = function() {\n"
-"    var cls = function() {\n"
-"    };\n"
-"    cls.prototype = {p: {}};\n"
-"    var object = new cls();\n"
-"    if (!(Object.getPrototypeOf(object) && Object.getPrototypeOf(object).p === cls.prototype.p))\n"
-"      return false;\n"
-"    try {\n"
-"      if (typeof navigator != \"undefined\" && typeof navigator.userAgent == \"string\" && navigator.userAgent.indexOf(\"Chrome/\") >= 0)\n"
-"        return true;\n"
-"      if (typeof version == \"function\" && version.length == 0) {\n"
-"        var v = version();\n"
-"        if (/^\\d+\\.\\d+\\.\\d+\\.\\d+\$/.test(v))\n"
-"          return true;\n"
-"      }\n"
-"    } catch (_) {\n"
-"    }\n"
-"    return false;\n"
-"  }();\n"
-"  function inherit(cls, sup) {\n"
-"    cls.prototype.constructor = cls;\n"
-"    cls.prototype[\"\$is\" + cls.name] = cls;\n"
-"    if (sup != null) {\n"
-"      if (supportsDirectProtoAccess) {\n"
-"        Object.setPrototypeOf(cls.prototype, sup.prototype);\n"
-"        return;\n"
-"      }\n"
-"      var clsPrototype = Object.create(sup.prototype);\n"
-"      copyProperties(cls.prototype, clsPrototype);\n"
-"      cls.prototype = clsPrototype;\n"
-"    }\n"
-"  }\n"
-"  function inheritMany(sup, classes) {\n"
-"    for (var i = 0; i < classes.length; i++) {\n"
-"      inherit(classes[i], sup);\n"
-"    }\n"
-"  }\n"
-"  function mixinEasy(cls, mixin) {\n"
-"    mixinPropertiesEasy(mixin.prototype, cls.prototype);\n"
-"    cls.prototype.constructor = cls;\n"
-"  }\n"
-"  function mixinHard(cls, mixin) {\n"
-"    mixinPropertiesHard(mixin.prototype, cls.prototype);\n"
-"    cls.prototype.constructor = cls;\n"
-"  }\n"
-"  function lazy(holder, name, getterName, initializer) {\n"
-"    var uninitializedSentinel = holder;\n"
-"    holder[name] = uninitializedSentinel;\n"
-"    holder[getterName] = function() {\n"
-"      if (holder[name] === uninitializedSentinel) {\n"
-"        holder[name] = initializer();\n"
-"      }\n"
-"      holder[getterName] = function() {\n"
-"        return this[name];\n"
-"      };\n"
-"      return holder[name];\n"
-"    };\n"
-"  }\n"
-"  function lazyFinal(holder, name, getterName, initializer) {\n"
-"    var uninitializedSentinel = holder;\n"
-"    holder[name] = uninitializedSentinel;\n"
-"    holder[getterName] = function() {\n"
-"      if (holder[name] === uninitializedSentinel) {\n"
-"        var value = initializer();\n"
-"        if (holder[name] !== uninitializedSentinel) {\n"
-"          A.throwLateFieldADI(name);\n"
-"        }\n"
-"        holder[name] = value;\n"
-"      }\n"
-"      var finalValue = holder[name];\n"
-"      holder[getterName] = function() {\n"
-"        return finalValue;\n"
-"      };\n"
-"      return finalValue;\n"
-"    };\n"
-"  }\n"
-"  function makeConstList(list, rti) {\n"
-"    if (rti != null)\n"
-"      A._setArrayType(list, rti);\n"
-"    list.\$flags = 7;\n"
-"    return list;\n"
-"  }\n"
-"  function convertToFastObject(properties) {\n"
-"    function t() {\n"
-"    }\n"
-"    t.prototype = properties;\n"
-"    new t();\n"
-"    return properties;\n"
-"  }\n"
-"  function convertAllToFastObject(arrayOfObjects) {\n"
-"    for (var i = 0; i < arrayOfObjects.length; ++i) {\n"
-"      convertToFastObject(arrayOfObjects[i]);\n"
-"    }\n"
-"  }\n"
-"  var functionCounter = 0;\n"
-"  function instanceTearOffGetter(isIntercepted, parameters) {\n"
-"    var cache = null;\n"
-"    return isIntercepted ? function(receiver) {\n"
-"      if (cache === null)\n"
-"        cache = A.closureFromTearOff(parameters);\n"
-"      return new cache(receiver, this);\n"
-"    } : function() {\n"
-"      if (cache === null)\n"
-"        cache = A.closureFromTearOff(parameters);\n"
-"      return new cache(this, null);\n"
-"    };\n"
-"  }\n"
-"  function staticTearOffGetter(parameters) {\n"
-"    var cache = null;\n"
-"    return function() {\n"
-"      if (cache === null)\n"
-"        cache = A.closureFromTearOff(parameters).prototype;\n"
-"      return cache;\n"
-"    };\n"
-"  }\n"
-"  var typesOffset = 0;\n"
-"  function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {\n"
-"    if (typeof funType == \"number\") {\n"
-"      funType += typesOffset;\n"
-"    }\n"
-"    return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess};\n"
-"  }\n"
-"  function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {\n"
-"    var parameters = tearOffParameters(holder, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, false);\n"
-"    var getterFunction = staticTearOffGetter(parameters);\n"
-"    holder[getterName] = getterFunction;\n"
-"  }\n"
-"  function installInstanceTearOff(prototype, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {\n"
-"    isIntercepted = !!isIntercepted;\n"
-"    var parameters = tearOffParameters(prototype, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, !!needsDirectAccess);\n"
-"    var getterFunction = instanceTearOffGetter(isIntercepted, parameters);\n"
-"    prototype[getterName] = getterFunction;\n"
-"  }\n"
-"  function setOrUpdateInterceptorsByTag(newTags) {\n"
-"    var tags = init.interceptorsByTag;\n"
-"    if (!tags) {\n"
-"      init.interceptorsByTag = newTags;\n"
-"      return;\n"
-"    }\n"
-"    copyProperties(newTags, tags);\n"
-"  }\n"
-"  function setOrUpdateLeafTags(newTags) {\n"
-"    var tags = init.leafTags;\n"
-"    if (!tags) {\n"
-"      init.leafTags = newTags;\n"
-"      return;\n"
-"    }\n"
-"    copyProperties(newTags, tags);\n"
-"  }\n"
-"  function updateTypes(newTypes) {\n"
-"    var types = init.types;\n"
-"    var length = types.length;\n"
-"    types.push.apply(types, newTypes);\n"
-"    return length;\n"
-"  }\n"
-"  function updateHolder(holder, newHolder) {\n"
-"    copyProperties(newHolder, holder);\n"
-"    return holder;\n"
-"  }\n"
-"  var hunkHelpers = function() {\n"
-"    var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {\n"
-"        return function(container, getterName, name, funType) {\n"
-"          return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex, false);\n"
-"        };\n"
-"      },\n"
-"      mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {\n"
-"        return function(container, getterName, name, funType) {\n"
-"          return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);\n"
-"        };\n"
-"      };\n"
-"    return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, [\"call\$0\"], 0), _instance_1u: mkInstance(0, 1, null, [\"call\$1\"], 0), _instance_2u: mkInstance(0, 2, null, [\"call\$2\"], 0), _instance_0i: mkInstance(1, 0, null, [\"call\$0\"], 0), _instance_1i: mkInstance(1, 1, null, [\"call\$1\"], 0), _instance_2i: mkInstance(1, 2, null, [\"call\$2\"], 0), _static_0: mkStatic(0, null, [\"call\$0\"], 0), _static_1: mkStatic(1, null, [\"call\$1\"], 0), _static_2: mkStatic(2, null, [\"call\$2\"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};\n"
-"  }();\n"
-"  function initializeDeferredHunk(hunk) {\n"
-"    typesOffset = init.types.length;\n"
-"    hunk(hunkHelpers, init, holders, \$);\n"
-"  }\n"
-"  var J = {\n"
-"    makeDispatchRecord(interceptor, proto, extension, indexability) {\n"
-"      return {i: interceptor, p: proto, e: extension, x: indexability};\n"
-"    },\n"
-"    getNativeInterceptor(object) {\n"
-"      var proto, objectProto, \$constructor, interceptor, t1,\n"
-"        _s9_ = \"_\$dart_js\",\n"
-"        record = object[init.dispatchPropertyName];\n"
-"      if (record == null)\n"
-"        if (\$.initNativeDispatchFlag == null) {\n"
-"          A.initNativeDispatch();\n"
-"          record = object[init.dispatchPropertyName];\n"
-"        }\n"
-"      if (record != null) {\n"
-"        proto = record.p;\n"
-"        if (false === proto)\n"
-"          return record.i;\n"
-"        if (true === proto)\n"
-"          return object;\n"
-"        objectProto = Object.getPrototypeOf(object);\n"
-"        if (proto === objectProto)\n"
-"          return record.i;\n"
-"        if (record.e === objectProto)\n"
-"          throw A.wrapException(A.UnimplementedError\$(\"Return interceptor for \" + A.S(proto(object, record))));\n"
-"      }\n"
-"      \$constructor = object.constructor;\n"
-"      if (\$constructor == null)\n"
-"        interceptor = null;\n"
-"      else {\n"
-"        t1 = \$._JS_INTEROP_INTERCEPTOR_TAG;\n"
-"        if (t1 == null)\n"
-"          t1 = \$._JS_INTEROP_INTERCEPTOR_TAG = A.getIsolateAffinityTag(_s9_);\n"
-"        interceptor = \$constructor[t1];\n"
-"      }\n"
-"      if (interceptor != null)\n"
-"        return interceptor;\n"
-"      interceptor = A.lookupAndCacheInterceptor(object);\n"
-"      if (interceptor != null)\n"
-"        return interceptor;\n"
-"      if (typeof object == \"function\")\n"
-"        return B.JavaScriptFunction_methods;\n"
-"      proto = Object.getPrototypeOf(object);\n"
-"      if (proto == null)\n"
-"        return B.PlainJavaScriptObject_methods;\n"
-"      if (proto === Object.prototype)\n"
-"        return B.PlainJavaScriptObject_methods;\n"
-"      if (typeof \$constructor == \"function\") {\n"
-"        t1 = \$._JS_INTEROP_INTERCEPTOR_TAG;\n"
-"        if (t1 == null)\n"
-"          t1 = \$._JS_INTEROP_INTERCEPTOR_TAG = A.getIsolateAffinityTag(_s9_);\n"
-"        Object.defineProperty(\$constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});\n"
-"        return B.UnknownJavaScriptObject_methods;\n"
-"      }\n"
-"      return B.UnknownJavaScriptObject_methods;\n"
-"    },\n"
-"    JSArray_JSArray\$fixed(\$length, \$E) {\n"
-"      if (\$length < 0 || \$length > 4294967295)\n"
-"        throw A.wrapException(A.RangeError\$range(\$length, 0, 4294967295, \"length\", null));\n"
-"      return J.JSArray_JSArray\$markFixed(new Array(\$length), \$E);\n"
-"    },\n"
-"    JSArray_JSArray\$growable(\$length, \$E) {\n"
-"      if (\$length < 0)\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Length must be a non-negative integer: \" + \$length, null));\n"
-"      return A._setArrayType(new Array(\$length), \$E._eval\$1(\"JSArray<0>\"));\n"
-"    },\n"
-"    JSArray_JSArray\$allocateGrowable(\$length, \$E) {\n"
-"      if (\$length < 0)\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Length must be a non-negative integer: \" + \$length, null));\n"
-"      return A._setArrayType(new Array(\$length), \$E._eval\$1(\"JSArray<0>\"));\n"
-"    },\n"
-"    JSArray_JSArray\$markFixed(allocation, \$E) {\n"
-"      var t1 = A._setArrayType(allocation, \$E._eval\$1(\"JSArray<0>\"));\n"
-"      t1.\$flags = 1;\n"
-"      return t1;\n"
-"    },\n"
-"    JSArray__compareAny(a, b) {\n"
-"      var t1 = type\$.Comparable_dynamic;\n"
-"      return J.compareTo\$1\$ns(t1._as(a), t1._as(b));\n"
-"    },\n"
-"    getInterceptor\$(receiver) {\n"
-"      if (typeof receiver == \"number\") {\n"
-"        if (Math.floor(receiver) == receiver)\n"
-"          return J.JSInt.prototype;\n"
-"        return J.JSNumNotInt.prototype;\n"
-"      }\n"
-"      if (typeof receiver == \"string\")\n"
-"        return J.JSString.prototype;\n"
-"      if (receiver == null)\n"
-"        return J.JSNull.prototype;\n"
-"      if (typeof receiver == \"boolean\")\n"
-"        return J.JSBool.prototype;\n"
-"      if (Array.isArray(receiver))\n"
-"        return J.JSArray.prototype;\n"
-"      if (typeof receiver != \"object\") {\n"
-"        if (typeof receiver == \"function\")\n"
-"          return J.JavaScriptFunction.prototype;\n"
-"        if (typeof receiver == \"symbol\")\n"
-"          return J.JavaScriptSymbol.prototype;\n"
-"        if (typeof receiver == \"bigint\")\n"
-"          return J.JavaScriptBigInt.prototype;\n"
-"        return receiver;\n"
-"      }\n"
-"      if (receiver instanceof A.Object)\n"
-"        return receiver;\n"
-"      return J.getNativeInterceptor(receiver);\n"
-"    },\n"
-"    getInterceptor\$asx(receiver) {\n"
-"      if (typeof receiver == \"string\")\n"
-"        return J.JSString.prototype;\n"
-"      if (receiver == null)\n"
-"        return receiver;\n"
-"      if (Array.isArray(receiver))\n"
-"        return J.JSArray.prototype;\n"
-"      if (typeof receiver != \"object\") {\n"
-"        if (typeof receiver == \"function\")\n"
-"          return J.JavaScriptFunction.prototype;\n"
-"        if (typeof receiver == \"symbol\")\n"
-"          return J.JavaScriptSymbol.prototype;\n"
-"        if (typeof receiver == \"bigint\")\n"
-"          return J.JavaScriptBigInt.prototype;\n"
-"        return receiver;\n"
-"      }\n"
-"      if (receiver instanceof A.Object)\n"
-"        return receiver;\n"
-"      return J.getNativeInterceptor(receiver);\n"
-"    },\n"
-"    getInterceptor\$ax(receiver) {\n"
-"      if (receiver == null)\n"
-"        return receiver;\n"
-"      if (Array.isArray(receiver))\n"
-"        return J.JSArray.prototype;\n"
-"      if (typeof receiver != \"object\") {\n"
-"        if (typeof receiver == \"function\")\n"
-"          return J.JavaScriptFunction.prototype;\n"
-"        if (typeof receiver == \"symbol\")\n"
-"          return J.JavaScriptSymbol.prototype;\n"
-"        if (typeof receiver == \"bigint\")\n"
-"          return J.JavaScriptBigInt.prototype;\n"
-"        return receiver;\n"
-"      }\n"
-"      if (receiver instanceof A.Object)\n"
-"        return receiver;\n"
-"      return J.getNativeInterceptor(receiver);\n"
-"    },\n"
-"    getInterceptor\$ns(receiver) {\n"
-"      if (typeof receiver == \"number\")\n"
-"        return J.JSNumber.prototype;\n"
-"      if (typeof receiver == \"string\")\n"
-"        return J.JSString.prototype;\n"
-"      if (receiver == null)\n"
-"        return receiver;\n"
-"      if (!(receiver instanceof A.Object))\n"
-"        return J.UnknownJavaScriptObject.prototype;\n"
-"      return receiver;\n"
-"    },\n"
-"    getInterceptor\$s(receiver) {\n"
-"      if (typeof receiver == \"string\")\n"
-"        return J.JSString.prototype;\n"
-"      if (receiver == null)\n"
-"        return receiver;\n"
-"      if (!(receiver instanceof A.Object))\n"
-"        return J.UnknownJavaScriptObject.prototype;\n"
-"      return receiver;\n"
-"    },\n"
-"    getInterceptor\$x(receiver) {\n"
-"      if (receiver == null)\n"
-"        return receiver;\n"
-"      if (typeof receiver != \"object\") {\n"
-"        if (typeof receiver == \"function\")\n"
-"          return J.JavaScriptFunction.prototype;\n"
-"        if (typeof receiver == \"symbol\")\n"
-"          return J.JavaScriptSymbol.prototype;\n"
-"        if (typeof receiver == \"bigint\")\n"
-"          return J.JavaScriptBigInt.prototype;\n"
-"        return receiver;\n"
-"      }\n"
-"      if (receiver instanceof A.Object)\n"
-"        return receiver;\n"
-"      return J.getNativeInterceptor(receiver);\n"
-"    },\n"
-"    set\$length\$asx(receiver, value) {\n"
-"      return J.getInterceptor\$asx(receiver).set\$length(receiver, value);\n"
-"    },\n"
-"    get\$first\$ax(receiver) {\n"
-"      return J.getInterceptor\$ax(receiver).get\$first(receiver);\n"
-"    },\n"
-"    get\$hashCode\$(receiver) {\n"
-"      return J.getInterceptor\$(receiver).get\$hashCode(receiver);\n"
-"    },\n"
-"    get\$isEmpty\$asx(receiver) {\n"
-"      return J.getInterceptor\$asx(receiver).get\$isEmpty(receiver);\n"
-"    },\n"
-"    get\$isNotEmpty\$asx(receiver) {\n"
-"      return J.getInterceptor\$asx(receiver).get\$isNotEmpty(receiver);\n"
-"    },\n"
-"    get\$iterator\$ax(receiver) {\n"
-"      return J.getInterceptor\$ax(receiver).get\$iterator(receiver);\n"
-"    },\n"
-"    get\$length\$asx(receiver) {\n"
-"      return J.getInterceptor\$asx(receiver).get\$length(receiver);\n"
-"    },\n"
-"    get\$runtimeType\$(receiver) {\n"
-"      return J.getInterceptor\$(receiver).get\$runtimeType(receiver);\n"
-"    },\n"
-"    \$eq\$(receiver, a0) {\n"
-"      if (receiver == null)\n"
-"        return a0 == null;\n"
-"      if (typeof receiver != \"object\")\n"
-"        return a0 != null && receiver === a0;\n"
-"      return J.getInterceptor\$(receiver).\$eq(receiver, a0);\n"
-"    },\n"
-"    \$index\$asx(receiver, a0) {\n"
-"      if (typeof a0 === \"number\")\n"
-"        if (Array.isArray(receiver) || typeof receiver == \"string\" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))\n"
-"          if (a0 >>> 0 === a0 && a0 < receiver.length)\n"
-"            return receiver[a0];\n"
-"      return J.getInterceptor\$asx(receiver).\$index(receiver, a0);\n"
-"    },\n"
-"    \$indexSet\$ax(receiver, a0, a1) {\n"
-"      return J.getInterceptor\$ax(receiver).\$indexSet(receiver, a0, a1);\n"
-"    },\n"
-"    add\$1\$ax(receiver, a0) {\n"
-"      return J.getInterceptor\$ax(receiver).add\$1(receiver, a0);\n"
-"    },\n"
-"    allMatches\$1\$s(receiver, a0) {\n"
-"      return J.getInterceptor\$s(receiver).allMatches\$1(receiver, a0);\n"
-"    },\n"
-"    allMatches\$2\$s(receiver, a0, a1) {\n"
-"      return J.getInterceptor\$s(receiver).allMatches\$2(receiver, a0, a1);\n"
-"    },\n"
-"    asUint8List\$2\$x(receiver, a0, a1) {\n"
-"      return J.getInterceptor\$x(receiver).asUint8List\$2(receiver, a0, a1);\n"
-"    },\n"
-"    cast\$1\$0\$ax(receiver, \$T1) {\n"
-"      return J.getInterceptor\$ax(receiver).cast\$1\$0(receiver, \$T1);\n"
-"    },\n"
-"    compareTo\$1\$ns(receiver, a0) {\n"
-"      return J.getInterceptor\$ns(receiver).compareTo\$1(receiver, a0);\n"
-"    },\n"
-"    contains\$1\$asx(receiver, a0) {\n"
-"      return J.getInterceptor\$asx(receiver).contains\$1(receiver, a0);\n"
-"    },\n"
-"    elementAt\$1\$ax(receiver, a0) {\n"
-"      return J.getInterceptor\$ax(receiver).elementAt\$1(receiver, a0);\n"
-"    },\n"
-"    fillRange\$3\$ax(receiver, a0, a1, a2) {\n"
-"      return J.getInterceptor\$ax(receiver).fillRange\$3(receiver, a0, a1, a2);\n"
-"    },\n"
-"    map\$1\$1\$ax(receiver, a0, \$T1) {\n"
-"      return J.getInterceptor\$ax(receiver).map\$1\$1(receiver, a0, \$T1);\n"
-"    },\n"
-"    matchAsPrefix\$2\$s(receiver, a0, a1) {\n"
-"      return J.getInterceptor\$s(receiver).matchAsPrefix\$2(receiver, a0, a1);\n"
-"    },\n"
-"    skip\$1\$ax(receiver, a0) {\n"
-"      return J.getInterceptor\$ax(receiver).skip\$1(receiver, a0);\n"
-"    },\n"
-"    sort\$1\$ax(receiver, a0) {\n"
-"      return J.getInterceptor\$ax(receiver).sort\$1(receiver, a0);\n"
-"    },\n"
-"    take\$1\$ax(receiver, a0) {\n"
-"      return J.getInterceptor\$ax(receiver).take\$1(receiver, a0);\n"
-"    },\n"
-"    toList\$0\$ax(receiver) {\n"
-"      return J.getInterceptor\$ax(receiver).toList\$0(receiver);\n"
-"    },\n"
-"    toString\$0\$(receiver) {\n"
-"      return J.getInterceptor\$(receiver).toString\$0(receiver);\n"
-"    },\n"
-"    Interceptor: function Interceptor() {\n"
-"    },\n"
-"    JSBool: function JSBool() {\n"
-"    },\n"
-"    JSNull: function JSNull() {\n"
-"    },\n"
-"    JavaScriptObject: function JavaScriptObject() {\n"
-"    },\n"
-"    LegacyJavaScriptObject: function LegacyJavaScriptObject() {\n"
-"    },\n"
-"    PlainJavaScriptObject: function PlainJavaScriptObject() {\n"
-"    },\n"
-"    UnknownJavaScriptObject: function UnknownJavaScriptObject() {\n"
-"    },\n"
-"    JavaScriptFunction: function JavaScriptFunction() {\n"
-"    },\n"
-"    JavaScriptBigInt: function JavaScriptBigInt() {\n"
-"    },\n"
-"    JavaScriptSymbol: function JavaScriptSymbol() {\n"
-"    },\n"
-"    JSArray: function JSArray(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    JSArraySafeToStringHook: function JSArraySafeToStringHook() {\n"
-"    },\n"
-"    JSUnmodifiableArray: function JSUnmodifiableArray(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    ArrayIterator: function ArrayIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._iterable = t0;\n"
-"      _._length = t1;\n"
-"      _._index = 0;\n"
-"      _._current = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    JSNumber: function JSNumber() {\n"
-"    },\n"
-"    JSInt: function JSInt() {\n"
-"    },\n"
-"    JSNumNotInt: function JSNumNotInt() {\n"
-"    },\n"
-"    JSString: function JSString() {\n"
-"    }\n"
-"  },\n"
-"  A = {JS_CONST: function JS_CONST() {\n"
-"    },\n"
-"    CastIterable_CastIterable(source, \$S, \$T) {\n"
-"      if (type\$.EfficientLengthIterable_dynamic._is(source))\n"
-"        return new A._EfficientLengthCastIterable(source, \$S._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"_EfficientLengthCastIterable<1,2>\"));\n"
-"      return new A.CastIterable(source, \$S._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"CastIterable<1,2>\"));\n"
-"    },\n"
-"    LateError\$fieldADI(fieldName) {\n"
-"      return new A.LateError(\"Field '\" + fieldName + \"' has been assigned during initialization.\");\n"
-"    },\n"
-"    LateError\$fieldNI(fieldName) {\n"
-"      return new A.LateError(\"Field '\" + fieldName + \"' has not been initialized.\");\n"
-"    },\n"
-"    hexDigitValue(char) {\n"
-"      var letter,\n"
-"        digit = char ^ 48;\n"
-"      if (digit <= 9)\n"
-"        return digit;\n"
-"      letter = char | 32;\n"
-"      if (97 <= letter && letter <= 102)\n"
-"        return letter - 87;\n"
-"      return -1;\n"
-"    },\n"
-"    SystemHash_combine(hash, value) {\n"
-"      hash = hash + value & 536870911;\n"
-"      hash = hash + ((hash & 524287) << 10) & 536870911;\n"
-"      return hash ^ hash >>> 6;\n"
-"    },\n"
-"    SystemHash_finish(hash) {\n"
-"      hash = hash + ((hash & 67108863) << 3) & 536870911;\n"
-"      hash ^= hash >>> 11;\n"
-"      return hash + ((hash & 16383) << 15) & 536870911;\n"
-"    },\n"
-"    checkNotNullable(value, \$name, \$T) {\n"
-"      return value;\n"
-"    },\n"
-"    isToStringVisiting(object) {\n"
-"      var t1, i;\n"
-"      for (t1 = \$._toStringVisiting.length, i = 0; i < t1; ++i)\n"
-"        if (object === \$._toStringVisiting[i])\n"
-"          return true;\n"
-"      return false;\n"
-"    },\n"
-"    SubListIterable\$(_iterable, _start, _endOrLength, \$E) {\n"
-"      A.RangeError_checkNotNegative(_start, \"start\");\n"
-"      if (_endOrLength != null) {\n"
-"        A.RangeError_checkNotNegative(_endOrLength, \"end\");\n"
-"        if (_start > _endOrLength)\n"
-"          A.throwExpression(A.RangeError\$range(_start, 0, _endOrLength, \"start\", null));\n"
-"      }\n"
-"      return new A.SubListIterable(_iterable, _start, _endOrLength, \$E._eval\$1(\"SubListIterable<0>\"));\n"
-"    },\n"
-"    MappedIterable_MappedIterable(iterable, \$function, \$S, \$T) {\n"
-"      if (type\$.EfficientLengthIterable_dynamic._is(iterable))\n"
-"        return new A.EfficientLengthMappedIterable(iterable, \$function, \$S._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"EfficientLengthMappedIterable<1,2>\"));\n"
-"      return new A.MappedIterable(iterable, \$function, \$S._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"MappedIterable<1,2>\"));\n"
-"    },\n"
-"    TakeIterable_TakeIterable(iterable, takeCount, \$E) {\n"
-"      var _s9_ = \"takeCount\";\n"
-"      A.ArgumentError_checkNotNull(takeCount, _s9_, type\$.int);\n"
-"      A.RangeError_checkNotNegative(takeCount, _s9_);\n"
-"      if (type\$.EfficientLengthIterable_dynamic._is(iterable))\n"
-"        return new A.EfficientLengthTakeIterable(iterable, takeCount, \$E._eval\$1(\"EfficientLengthTakeIterable<0>\"));\n"
-"      return new A.TakeIterable(iterable, takeCount, \$E._eval\$1(\"TakeIterable<0>\"));\n"
-"    },\n"
-"    SkipIterable_SkipIterable(iterable, count, \$E) {\n"
-"      var _s5_ = \"count\";\n"
-"      if (type\$.EfficientLengthIterable_dynamic._is(iterable)) {\n"
-"        A.ArgumentError_checkNotNull(count, _s5_, type\$.int);\n"
-"        A.RangeError_checkNotNegative(count, _s5_);\n"
-"        return new A.EfficientLengthSkipIterable(iterable, count, \$E._eval\$1(\"EfficientLengthSkipIterable<0>\"));\n"
-"      }\n"
-"      A.ArgumentError_checkNotNull(count, _s5_, type\$.int);\n"
-"      A.RangeError_checkNotNegative(count, _s5_);\n"
-"      return new A.SkipIterable(iterable, count, \$E._eval\$1(\"SkipIterable<0>\"));\n"
-"    },\n"
-"    IterableElementError_noElement() {\n"
-"      return new A.StateError(\"No element\");\n"
-"    },\n"
-"    IterableElementError_tooFew() {\n"
-"      return new A.StateError(\"Too few elements\");\n"
-"    },\n"
-"    Sort__doSort(a, left, right, compare, \$E) {\n"
-"      if (right - left <= 32)\n"
-"        A.Sort__insertionSort(a, left, right, compare, \$E);\n"
-"      else\n"
-"        A.Sort__dualPivotQuicksort(a, left, right, compare, \$E);\n"
-"    },\n"
-"    Sort__insertionSort(a, left, right, compare, \$E) {\n"
-"      var i, t1, el, j, t2, j0;\n"
-"      for (i = left + 1, t1 = J.getInterceptor\$asx(a); i <= right; ++i) {\n"
-"        el = t1.\$index(a, i);\n"
-"        j = i;\n"
-"        for (;;) {\n"
-"          if (j > left) {\n"
-"            t2 = compare.call\$2(t1.\$index(a, j - 1), el);\n"
-"            if (typeof t2 !== \"number\")\n"
-"              return t2.\$gt();\n"
-"            t2 = t2 > 0;\n"
-"          } else\n"
-"            t2 = false;\n"
-"          if (!t2)\n"
-"            break;\n"
-"          j0 = j - 1;\n"
-"          t1.\$indexSet(a, j, t1.\$index(a, j0));\n"
-"          j = j0;\n"
-"        }\n"
-"        t1.\$indexSet(a, j, el);\n"
-"      }\n"
-"    },\n"
-"    Sort__dualPivotQuicksort(a, left, right, compare, \$E) {\n"
-"      var t0, less, great, pivots_are_equal, k, ak, comp, great0, less0,\n"
-"        sixth = B.JSInt_methods._tdivFast\$1(right - left + 1, 6),\n"
-"        index1 = left + sixth,\n"
-"        index5 = right - sixth,\n"
-"        index3 = B.JSInt_methods._tdivFast\$1(left + right, 2),\n"
-"        index2 = index3 - sixth,\n"
-"        index4 = index3 + sixth,\n"
-"        t1 = J.getInterceptor\$asx(a),\n"
-"        el1 = t1.\$index(a, index1),\n"
-"        el2 = t1.\$index(a, index2),\n"
-"        el3 = t1.\$index(a, index3),\n"
-"        el4 = t1.\$index(a, index4),\n"
-"        el5 = t1.\$index(a, index5),\n"
-"        t2 = compare.call\$2(el1, el2);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el2;\n"
-"        el2 = el1;\n"
-"        el1 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el4, el5);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el5;\n"
-"        el5 = el4;\n"
-"        el4 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el1, el3);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el3;\n"
-"        el3 = el1;\n"
-"        el1 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el2, el3);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el3;\n"
-"        el3 = el2;\n"
-"        el2 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el1, el4);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el4;\n"
-"        el4 = el1;\n"
-"        el1 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el3, el4);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el4;\n"
-"        el4 = el3;\n"
-"        el3 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el2, el5);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el5;\n"
-"        el5 = el2;\n"
-"        el2 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el2, el3);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el3;\n"
-"        el3 = el2;\n"
-"        el2 = t0;\n"
-"      }\n"
-"      t2 = compare.call\$2(el4, el5);\n"
-"      if (typeof t2 !== \"number\")\n"
-"        return t2.\$gt();\n"
-"      if (t2 > 0) {\n"
-"        t0 = el5;\n"
-"        el5 = el4;\n"
-"        el4 = t0;\n"
-"      }\n"
-"      t1.\$indexSet(a, index1, el1);\n"
-"      t1.\$indexSet(a, index3, el3);\n"
-"      t1.\$indexSet(a, index5, el5);\n"
-"      t1.\$indexSet(a, index2, t1.\$index(a, left));\n"
-"      t1.\$indexSet(a, index4, t1.\$index(a, right));\n"
-"      less = left + 1;\n"
-"      great = right - 1;\n"
-"      pivots_are_equal = J.\$eq\$(compare.call\$2(el2, el4), 0);\n"
-"      if (pivots_are_equal)\n"
-"        for (k = less; k <= great; ++k) {\n"
-"          ak = t1.\$index(a, k);\n"
-"          comp = compare.call\$2(ak, el2);\n"
-"          if (comp === 0)\n"
-"            continue;\n"
-"          if (comp < 0) {\n"
-"            if (k !== less) {\n"
-"              t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"              t1.\$indexSet(a, less, ak);\n"
-"            }\n"
-"            ++less;\n"
-"          } else\n"
-"            for (;;) {\n"
-"              comp = compare.call\$2(t1.\$index(a, great), el2);\n"
-"              if (comp > 0) {\n"
-"                --great;\n"
-"                continue;\n"
-"              } else {\n"
-"                great0 = great - 1;\n"
-"                if (comp < 0) {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"                  less0 = less + 1;\n"
-"                  t1.\$indexSet(a, less, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                  great = great0;\n"
-"                  less = less0;\n"
-"                  break;\n"
-"                } else {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                  great = great0;\n"
-"                  break;\n"
-"                }\n"
-"              }\n"
-"            }\n"
-"        }\n"
-"      else\n"
-"        for (k = less; k <= great; ++k) {\n"
-"          ak = t1.\$index(a, k);\n"
-"          if (compare.call\$2(ak, el2) < 0) {\n"
-"            if (k !== less) {\n"
-"              t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"              t1.\$indexSet(a, less, ak);\n"
-"            }\n"
-"            ++less;\n"
-"          } else if (compare.call\$2(ak, el4) > 0)\n"
-"            for (;;)\n"
-"              if (compare.call\$2(t1.\$index(a, great), el4) > 0) {\n"
-"                --great;\n"
-"                if (great < k)\n"
-"                  break;\n"
-"                continue;\n"
-"              } else {\n"
-"                great0 = great - 1;\n"
-"                if (compare.call\$2(t1.\$index(a, great), el2) < 0) {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"                  less0 = less + 1;\n"
-"                  t1.\$indexSet(a, less, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                  less = less0;\n"
-"                } else {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                }\n"
-"                great = great0;\n"
-"                break;\n"
-"              }\n"
-"        }\n"
-"      t2 = less - 1;\n"
-"      t1.\$indexSet(a, left, t1.\$index(a, t2));\n"
-"      t1.\$indexSet(a, t2, el2);\n"
-"      t2 = great + 1;\n"
-"      t1.\$indexSet(a, right, t1.\$index(a, t2));\n"
-"      t1.\$indexSet(a, t2, el4);\n"
-"      A.Sort__doSort(a, left, less - 2, compare, \$E);\n"
-"      A.Sort__doSort(a, great + 2, right, compare, \$E);\n"
-"      if (pivots_are_equal)\n"
-"        return;\n"
-"      if (less < index1 && great > index5) {\n"
-"        while (J.\$eq\$(compare.call\$2(t1.\$index(a, less), el2), 0))\n"
-"          ++less;\n"
-"        while (J.\$eq\$(compare.call\$2(t1.\$index(a, great), el4), 0))\n"
-"          --great;\n"
-"        for (k = less; k <= great; ++k) {\n"
-"          ak = t1.\$index(a, k);\n"
-"          if (compare.call\$2(ak, el2) === 0) {\n"
-"            if (k !== less) {\n"
-"              t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"              t1.\$indexSet(a, less, ak);\n"
-"            }\n"
-"            ++less;\n"
-"          } else if (compare.call\$2(ak, el4) === 0)\n"
-"            for (;;)\n"
-"              if (compare.call\$2(t1.\$index(a, great), el4) === 0) {\n"
-"                --great;\n"
-"                if (great < k)\n"
-"                  break;\n"
-"                continue;\n"
-"              } else {\n"
-"                great0 = great - 1;\n"
-"                if (compare.call\$2(t1.\$index(a, great), el2) < 0) {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, less));\n"
-"                  less0 = less + 1;\n"
-"                  t1.\$indexSet(a, less, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                  less = less0;\n"
-"                } else {\n"
-"                  t1.\$indexSet(a, k, t1.\$index(a, great));\n"
-"                  t1.\$indexSet(a, great, ak);\n"
-"                }\n"
-"                great = great0;\n"
-"                break;\n"
-"              }\n"
-"        }\n"
-"        A.Sort__doSort(a, less, great, compare, \$E);\n"
-"      } else\n"
-"        A.Sort__doSort(a, less, great, compare, \$E);\n"
-"    },\n"
-"    CastStream: function CastStream(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    CastStreamSubscription: function CastStreamSubscription(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _.__internal\$_source = t0;\n"
-"      _.__internal\$_zone = t1;\n"
-"      _.__internal\$_handleError = _.__internal\$_handleData = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    _CastIterableBase: function _CastIterableBase() {\n"
-"    },\n"
-"    CastIterator: function CastIterator(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    CastIterable: function CastIterable(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _EfficientLengthCastIterable: function _EfficientLengthCastIterable(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _CastListBase: function _CastListBase() {\n"
-"    },\n"
-"    _CastListBase_sort_closure: function _CastListBase_sort_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.compare = t1;\n"
-"    },\n"
-"    CastList: function CastList(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    CastMap: function CastMap(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    CastMap_forEach_closure: function CastMap_forEach_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.f = t1;\n"
-"    },\n"
-"    LateError: function LateError(t0) {\n"
-"      this._message = t0;\n"
-"    },\n"
-"    CodeUnits: function CodeUnits(t0) {\n"
-"      this.__internal\$_string = t0;\n"
-"    },\n"
-"    nullFuture_closure: function nullFuture_closure() {\n"
-"    },\n"
-"    SentinelValue: function SentinelValue() {\n"
-"    },\n"
-"    EfficientLengthIterable: function EfficientLengthIterable() {\n"
-"    },\n"
-"    ListIterable: function ListIterable() {\n"
-"    },\n"
-"    SubListIterable: function SubListIterable(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.__internal\$_iterable = t0;\n"
-"      _._start = t1;\n"
-"      _._endOrLength = t2;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    ListIterator: function ListIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _.__internal\$_iterable = t0;\n"
-"      _.__internal\$_length = t1;\n"
-"      _.__internal\$_index = 0;\n"
-"      _.__internal\$_current = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    MappedIterable: function MappedIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    EfficientLengthMappedIterable: function EfficientLengthMappedIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    MappedIterator: function MappedIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _.__internal\$_current = null;\n"
-"      _._iterator = t0;\n"
-"      _._f = t1;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    MappedListIterable: function MappedListIterable(t0, t1, t2) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    WhereIterable: function WhereIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    WhereIterator: function WhereIterator(t0, t1, t2) {\n"
-"      this._iterator = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    ExpandIterable: function ExpandIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._f = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    ExpandIterator: function ExpandIterator(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._iterator = t0;\n"
-"      _._f = t1;\n"
-"      _._currentExpansion = t2;\n"
-"      _.__internal\$_current = null;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    TakeIterable: function TakeIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._takeCount = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    EfficientLengthTakeIterable: function EfficientLengthTakeIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._takeCount = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    TakeIterator: function TakeIterator(t0, t1, t2) {\n"
-"      this._iterator = t0;\n"
-"      this._remaining = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    SkipIterable: function SkipIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._skipCount = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    EfficientLengthSkipIterable: function EfficientLengthSkipIterable(t0, t1, t2) {\n"
-"      this.__internal\$_iterable = t0;\n"
-"      this._skipCount = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    SkipIterator: function SkipIterator(t0, t1, t2) {\n"
-"      this._iterator = t0;\n"
-"      this._skipCount = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    EmptyIterable: function EmptyIterable(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    EmptyIterator: function EmptyIterator(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    WhereTypeIterable: function WhereTypeIterable(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    WhereTypeIterator: function WhereTypeIterator(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    FixedLengthListMixin: function FixedLengthListMixin() {\n"
-"    },\n"
-"    UnmodifiableListMixin: function UnmodifiableListMixin() {\n"
-"    },\n"
-"    UnmodifiableListBase: function UnmodifiableListBase() {\n"
-"    },\n"
-"    ReversedListIterable: function ReversedListIterable(t0, t1) {\n"
-"      this.__internal\$_source = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    __CastListBase__CastIterableBase_ListMixin: function __CastListBase__CastIterableBase_ListMixin() {\n"
-"    },\n"
-"    ConstantMap__throwUnmodifiable() {\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot modify unmodifiable Map\"));\n"
-"    },\n"
-"    unminifyOrTag(rawClassName) {\n"
-"      var preserved = A.unmangleGlobalNameIfPreservedAnyways(rawClassName);\n"
-"      if (preserved != null)\n"
-"        return preserved;\n"
-"      return rawClassName;\n"
-"    },\n"
-"    isJsIndexable(object, record) {\n"
-"      var result;\n"
-"      if (record != null) {\n"
-"        result = record.x;\n"
-"        if (result != null)\n"
-"          return result;\n"
-"      }\n"
-"      return type\$.JavaScriptIndexingBehavior_dynamic._is(object);\n"
-"    },\n"
-"    S(value) {\n"
-"      var result;\n"
-"      if (typeof value == \"string\")\n"
-"        return value;\n"
-"      if (typeof value == \"number\") {\n"
-"        if (value !== 0)\n"
-"          return \"\" + value;\n"
-"      } else if (true === value)\n"
-"        return \"true\";\n"
-"      else if (false === value)\n"
-"        return \"false\";\n"
-"      else if (value == null)\n"
-"        return \"null\";\n"
-"      result = J.toString\$0\$(value);\n"
-"      return result;\n"
-"    },\n"
-"    Primitives_objectHashCode(object) {\n"
-"      var hash,\n"
-"        property = \$.Primitives__identityHashCodeProperty;\n"
-"      if (property == null)\n"
-"        property = \$.Primitives__identityHashCodeProperty = Symbol(\"identityHashCode\");\n"
-"      hash = object[property];\n"
-"      if (hash == null) {\n"
-"        hash = Math.random() * 0x3fffffff | 0;\n"
-"        object[property] = hash;\n"
-"      }\n"
-"      return hash;\n"
-"    },\n"
-"    Primitives_parseInt(source, radix) {\n"
-"      var decimalMatch, maxCharCode, digitsPart, t1, i, _null = null,\n"
-"        match = /^\\s*[+-]?((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*\$/i.exec(source);\n"
-"      if (match == null)\n"
-"        return _null;\n"
-"      if (3 >= match.length)\n"
-"        return A.ioore(match, 3);\n"
-"      decimalMatch = match[3];\n"
-"      if (radix == null) {\n"
-"        if (decimalMatch != null)\n"
-"          return parseInt(source, 10);\n"
-"        if (match[2] != null)\n"
-"          return parseInt(source, 16);\n"
-"        return _null;\n"
-"      }\n"
-"      if (radix < 2 || radix > 36)\n"
-"        throw A.wrapException(A.RangeError\$range(radix, 2, 36, \"radix\", _null));\n"
-"      if (radix === 10 && decimalMatch != null)\n"
-"        return parseInt(source, 10);\n"
-"      if (radix < 10 || decimalMatch == null) {\n"
-"        maxCharCode = radix <= 10 ? 47 + radix : 86 + radix;\n"
-"        digitsPart = match[1];\n"
-"        for (t1 = digitsPart.length, i = 0; i < t1; ++i)\n"
-"          if ((digitsPart.charCodeAt(i) | 32) > maxCharCode)\n"
-"            return _null;\n"
-"      }\n"
-"      return parseInt(source, radix);\n"
-"    },\n"
-"    Primitives_objectTypeName(object) {\n"
-"      var interceptor, dispatchName, \$constructor, constructorName;\n"
-"      if (object instanceof A.Object)\n"
-"        return A._rtiToString(A.instanceType(object), null);\n"
-"      interceptor = J.getInterceptor\$(object);\n"
-"      if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type\$.UnknownJavaScriptObject._is(object)) {\n"
-"        dispatchName = B.C_JS_CONST(object);\n"
-"        if (dispatchName !== \"Object\" && dispatchName !== \"\")\n"
-"          return dispatchName;\n"
-"        \$constructor = object.constructor;\n"
-"        if (typeof \$constructor == \"function\") {\n"
-"          constructorName = \$constructor.name;\n"
-"          if (typeof constructorName == \"string\" && constructorName !== \"Object\" && constructorName !== \"\")\n"
-"            return constructorName;\n"
-"        }\n"
-"      }\n"
-"      return A._rtiToString(A.instanceType(object), null);\n"
-"    },\n"
-"    Primitives_safeToString(object) {\n"
-"      var hooks, i, hookResult;\n"
-"      if (object == null || typeof object == \"number\" || A._isBool(object))\n"
-"        return J.toString\$0\$(object);\n"
-"      if (typeof object == \"string\")\n"
-"        return JSON.stringify(object);\n"
-"      if (object instanceof A.Closure)\n"
-"        return object.toString\$0(0);\n"
-"      if (object instanceof A._Record)\n"
-"        return object._toString\$1(true);\n"
-"      hooks = \$.\$get\$_safeToStringHooks();\n"
-"      for (i = 0; i < 1; ++i) {\n"
-"        hookResult = hooks[i].tryFormat\$1(object);\n"
-"        if (hookResult != null)\n"
-"          return hookResult;\n"
-"      }\n"
-"      return \"Instance of '\" + A.Primitives_objectTypeName(object) + \"'\";\n"
-"    },\n"
-"    Primitives_currentUri() {\n"
-"      if (!!self.location)\n"
-"        return self.location.href;\n"
-"      return null;\n"
-"    },\n"
-"    Primitives__fromCharCodeApply(array) {\n"
-"      var result, i, i0, chunkEnd,\n"
-"        end = array.length;\n"
-"      if (end <= 500)\n"
-"        return String.fromCharCode.apply(null, array);\n"
-"      for (result = \"\", i = 0; i < end; i = i0) {\n"
-"        i0 = i + 500;\n"
-"        chunkEnd = i0 < end ? i0 : end;\n"
-"        result += String.fromCharCode.apply(null, array.slice(i, chunkEnd));\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    Primitives_stringFromCodePoints(codePoints) {\n"
-"      var t1, _i, i,\n"
-"        a = A._setArrayType([], type\$.JSArray_int);\n"
-"      for (t1 = codePoints.length, _i = 0; _i < codePoints.length; codePoints.length === t1 || (0, A.throwConcurrentModificationError)(codePoints), ++_i) {\n"
-"        i = codePoints[_i];\n"
-"        if (!A._isInt(i))\n"
-"          throw A.wrapException(A.argumentErrorValue(i));\n"
-"        if (i <= 65535)\n"
-"          B.JSArray_methods.add\$1(a, i);\n"
-"        else if (i <= 1114111) {\n"
-"          B.JSArray_methods.add\$1(a, 55296 + (B.JSInt_methods._shrOtherPositive\$1(i - 65536, 10) & 1023));\n"
-"          B.JSArray_methods.add\$1(a, 56320 + (i & 1023));\n"
-"        } else\n"
-"          throw A.wrapException(A.argumentErrorValue(i));\n"
-"      }\n"
-"      return A.Primitives__fromCharCodeApply(a);\n"
-"    },\n"
-"    Primitives_stringFromCharCodes(charCodes) {\n"
-"      var t1, _i, i;\n"
-"      for (t1 = charCodes.length, _i = 0; _i < t1; ++_i) {\n"
-"        i = charCodes[_i];\n"
-"        if (!A._isInt(i))\n"
-"          throw A.wrapException(A.argumentErrorValue(i));\n"
-"        if (i < 0)\n"
-"          throw A.wrapException(A.argumentErrorValue(i));\n"
-"        if (i > 65535)\n"
-"          return A.Primitives_stringFromCodePoints(charCodes);\n"
-"      }\n"
-"      return A.Primitives__fromCharCodeApply(charCodes);\n"
-"    },\n"
-"    Primitives_stringFromNativeUint8List(charCodes, start, end) {\n"
-"      var i, result, i0, chunkEnd;\n"
-"      if (end <= 500 && start === 0 && end === charCodes.length)\n"
-"        return String.fromCharCode.apply(null, charCodes);\n"
-"      for (i = start, result = \"\"; i < end; i = i0) {\n"
-"        i0 = i + 500;\n"
-"        chunkEnd = i0 < end ? i0 : end;\n"
-"        result += String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    Primitives_stringFromCharCode(charCode) {\n"
-"      var bits;\n"
-"      if (0 <= charCode) {\n"
-"        if (charCode <= 65535)\n"
-"          return String.fromCharCode(charCode);\n"
-"        if (charCode <= 1114111) {\n"
-"          bits = charCode - 65536;\n"
-"          return String.fromCharCode((B.JSInt_methods._shrOtherPositive\$1(bits, 10) | 55296) >>> 0, bits & 1023 | 56320);\n"
-"        }\n"
-"      }\n"
-"      throw A.wrapException(A.RangeError\$range(charCode, 0, 1114111, null, null));\n"
-"    },\n"
-"    Primitives_lazyAsJsDate(receiver) {\n"
-"      if (receiver.date === void 0)\n"
-"        receiver.date = new Date(receiver._value);\n"
-"      return receiver.date;\n"
-"    },\n"
-"    Primitives_getYear(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0 : A.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;\n"
-"    },\n"
-"    Primitives_getMonth(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1 : A.Primitives_lazyAsJsDate(receiver).getMonth() + 1;\n"
-"    },\n"
-"    Primitives_getDay(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0 : A.Primitives_lazyAsJsDate(receiver).getDate() + 0;\n"
-"    },\n"
-"    Primitives_getHours(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0 : A.Primitives_lazyAsJsDate(receiver).getHours() + 0;\n"
-"    },\n"
-"    Primitives_getMinutes(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0 : A.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;\n"
-"    },\n"
-"    Primitives_getSeconds(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;\n"
-"    },\n"
-"    Primitives_getMilliseconds(receiver) {\n"
-"      return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;\n"
-"    },\n"
-"    Primitives_extractStackTrace(error) {\n"
-"      var jsError = error.\$thrownJsError;\n"
-"      if (jsError == null)\n"
-"        return null;\n"
-"      return A.getTraceFromException(jsError);\n"
-"    },\n"
-"    Primitives_trySetStackTrace(error, stackTrace) {\n"
-"      var jsError;\n"
-"      if (error.\$thrownJsError == null) {\n"
-"        jsError = new Error();\n"
-"        A.initializeExceptionWrapper(error, jsError);\n"
-"        error.\$thrownJsError = jsError;\n"
-"        jsError.stack = stackTrace.toString\$0(0);\n"
-"      }\n"
-"    },\n"
-"    iae(argument) {\n"
-"      throw A.wrapException(A.argumentErrorValue(argument));\n"
-"    },\n"
-"    ioore(receiver, index) {\n"
-"      if (receiver == null)\n"
-"        J.get\$length\$asx(receiver);\n"
-"      throw A.wrapException(A.diagnoseIndexError(receiver, index));\n"
-"    },\n"
-"    diagnoseIndexError(indexable, index) {\n"
-"      var \$length, _s5_ = \"index\";\n"
-"      if (!A._isInt(index))\n"
-"        return new A.ArgumentError(true, index, _s5_, null);\n"
-"      \$length = A._asInt(J.get\$length\$asx(indexable));\n"
-"      if (index < 0 || index >= \$length)\n"
-"        return A.IndexError\$withLength(index, \$length, indexable, null, _s5_);\n"
-"      return A.RangeError\$value(index, _s5_);\n"
-"    },\n"
-"    diagnoseRangeError(start, end, \$length) {\n"
-"      if (start < 0 || start > \$length)\n"
-"        return A.RangeError\$range(start, 0, \$length, \"start\", null);\n"
-"      if (end != null)\n"
-"        if (end < start || end > \$length)\n"
-"          return A.RangeError\$range(end, start, \$length, \"end\", null);\n"
-"      return new A.ArgumentError(true, end, \"end\", null);\n"
-"    },\n"
-"    argumentErrorValue(object) {\n"
-"      return new A.ArgumentError(true, object, null, null);\n"
-"    },\n"
-"    wrapException(ex) {\n"
-"      return A.initializeExceptionWrapper(ex, new Error());\n"
-"    },\n"
-"    initializeExceptionWrapper(ex, wrapper) {\n"
-"      var t1;\n"
-"      if (ex == null)\n"
-"        ex = new A.TypeError();\n"
-"      wrapper.dartException = ex;\n"
-"      t1 = A.toStringWrapper;\n"
-"      if (\"defineProperty\" in Object) {\n"
-"        Object.defineProperty(wrapper, \"message\", {get: t1});\n"
-"        wrapper.name = \"\";\n"
-"      } else\n"
-"        wrapper.toString = t1;\n"
-"      return wrapper;\n"
-"    },\n"
-"    toStringWrapper() {\n"
-"      return J.toString\$0\$(this.dartException);\n"
-"    },\n"
-"    throwExpression(ex, wrapper) {\n"
-"      throw A.initializeExceptionWrapper(ex, wrapper == null ? new Error() : wrapper);\n"
-"    },\n"
-"    throwUnsupportedOperation(o, operation, verb) {\n"
-"      var wrapper;\n"
-"      if (operation == null)\n"
-"        operation = 0;\n"
-"      if (verb == null)\n"
-"        verb = 0;\n"
-"      wrapper = Error();\n"
-"      A.throwExpression(A._diagnoseUnsupportedOperation(o, operation, verb), wrapper);\n"
-"    },\n"
-"    _diagnoseUnsupportedOperation(o, encodedOperation, encodedVerb) {\n"
-"      var operation, table, tableLength, index, verb, object, flags, article, adjective;\n"
-"      if (typeof encodedOperation == \"string\")\n"
-"        operation = encodedOperation;\n"
-"      else {\n"
-"        table = \"[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64\".split(\";\");\n"
-"        tableLength = table.length;\n"
-"        index = encodedOperation;\n"
-"        if (index > tableLength) {\n"
-"          encodedVerb = index / tableLength | 0;\n"
-"          index %= tableLength;\n"
-"        }\n"
-"        operation = table[index];\n"
-"      }\n"
-"      verb = typeof encodedVerb == \"string\" ? encodedVerb : \"modify;remove from;add to\".split(\";\")[encodedVerb];\n"
-"      object = type\$.List_dynamic._is(o) ? \"list\" : \"ByteData\";\n"
-"      flags = o.\$flags | 0;\n"
-"      article = \"a \";\n"
-"      if ((flags & 4) !== 0)\n"
-"        adjective = \"constant \";\n"
-"      else if ((flags & 2) !== 0) {\n"
-"        adjective = \"unmodifiable \";\n"
-"        article = \"an \";\n"
-"      } else\n"
-"        adjective = (flags & 1) !== 0 ? \"fixed-length \" : \"\";\n"
-"      return new A.UnsupportedError(\"'\" + operation + \"': Cannot \" + verb + \" \" + article + adjective + object);\n"
-"    },\n"
-"    throwConcurrentModificationError(collection) {\n"
-"      throw A.wrapException(A.ConcurrentModificationError\$(collection));\n"
-"    },\n"
-"    TypeErrorDecoder_extractPattern(message) {\n"
-"      var match, \$arguments, argumentsExpr, expr, method, receiver;\n"
-"      message = A.quoteStringForRegExp(message.replace(String({}), \"\$receiver\$\"));\n"
-"      match = message.match(/\\\\\\\$[a-zA-Z]+\\\\\\\$/g);\n"
-"      if (match == null)\n"
-"        match = A._setArrayType([], type\$.JSArray_String);\n"
-"      \$arguments = match.indexOf(\"\\\\\$arguments\\\\\$\");\n"
-"      argumentsExpr = match.indexOf(\"\\\\\$argumentsExpr\\\\\$\");\n"
-"      expr = match.indexOf(\"\\\\\$expr\\\\\$\");\n"
-"      method = match.indexOf(\"\\\\\$method\\\\\$\");\n"
-"      receiver = match.indexOf(\"\\\\\$receiver\\\\\$\");\n"
-"      return new A.TypeErrorDecoder(message.replace(new RegExp(\"\\\\\\\\\\\\\$arguments\\\\\\\\\\\\\$\", \"g\"), \"((?:x|[^x])*)\").replace(new RegExp(\"\\\\\\\\\\\\\$argumentsExpr\\\\\\\\\\\\\$\", \"g\"), \"((?:x|[^x])*)\").replace(new RegExp(\"\\\\\\\\\\\\\$expr\\\\\\\\\\\\\$\", \"g\"), \"((?:x|[^x])*)\").replace(new RegExp(\"\\\\\\\\\\\\\$method\\\\\\\\\\\\\$\", \"g\"), \"((?:x|[^x])*)\").replace(new RegExp(\"\\\\\\\\\\\\\$receiver\\\\\\\\\\\\\$\", \"g\"), \"((?:x|[^x])*)\"), \$arguments, argumentsExpr, expr, method, receiver);\n"
-"    },\n"
-"    TypeErrorDecoder_provokeCallErrorOn(expression) {\n"
-"      return function(\$expr\$) {\n"
-"        var \$argumentsExpr\$ = \"\$arguments\$\";\n"
-"        try {\n"
-"          \$expr\$.\$method\$(\$argumentsExpr\$);\n"
-"        } catch (e) {\n"
-"          return e.message;\n"
-"        }\n"
-"      }(expression);\n"
-"    },\n"
-"    TypeErrorDecoder_provokePropertyErrorOn(expression) {\n"
-"      return function(\$expr\$) {\n"
-"        try {\n"
-"          \$expr\$.\$method\$;\n"
-"        } catch (e) {\n"
-"          return e.message;\n"
-"        }\n"
-"      }(expression);\n"
-"    },\n"
-"    JsNoSuchMethodError\$(_message, match) {\n"
-"      var t1 = match == null,\n"
-"        t2 = t1 ? null : match.method;\n"
-"      return new A.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);\n"
-"    },\n"
-"    unwrapException(ex) {\n"
-"      var t1;\n"
-"      if (ex == null)\n"
-"        return new A.NullThrownFromJavaScriptException(ex);\n"
-"      if (ex instanceof A.ExceptionAndStackTrace) {\n"
-"        t1 = ex.dartException;\n"
-"        return A.saveStackTrace(ex, t1 == null ? A._asObject(t1) : t1);\n"
-"      }\n"
-"      if (typeof ex !== \"object\")\n"
-"        return ex;\n"
-"      if (\"dartException\" in ex)\n"
-"        return A.saveStackTrace(ex, ex.dartException);\n"
-"      return A._unwrapNonDartException(ex);\n"
-"    },\n"
-"    saveStackTrace(ex, error) {\n"
-"      if (type\$.Error._is(error))\n"
-"        if (error.\$thrownJsError == null)\n"
-"          error.\$thrownJsError = ex;\n"
-"      return error;\n"
-"    },\n"
-"    _unwrapNonDartException(ex) {\n"
-"      var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match;\n"
-"      if (!(\"message\" in ex))\n"
-"        return ex;\n"
-"      message = ex.message;\n"
-"      if (\"number\" in ex && typeof ex.number == \"number\") {\n"
-"        number = ex.number;\n"
-"        ieErrorCode = number & 65535;\n"
-"        if ((B.JSInt_methods._shrOtherPositive\$1(number, 16) & 8191) === 10)\n"
-"          switch (ieErrorCode) {\n"
-"            case 438:\n"
-"              return A.saveStackTrace(ex, A.JsNoSuchMethodError\$(A.S(message) + \" (Error \" + ieErrorCode + \")\", null));\n"
-"            case 445:\n"
-"            case 5007:\n"
-"              A.S(message);\n"
-"              return A.saveStackTrace(ex, new A.NullError());\n"
-"          }\n"
-"      }\n"
-"      if (ex instanceof TypeError) {\n"
-"        nsme = \$.\$get\$TypeErrorDecoder_noSuchMethodPattern();\n"
-"        notClosure = \$.\$get\$TypeErrorDecoder_notClosurePattern();\n"
-"        nullCall = \$.\$get\$TypeErrorDecoder_nullCallPattern();\n"
-"        nullLiteralCall = \$.\$get\$TypeErrorDecoder_nullLiteralCallPattern();\n"
-"        undefCall = \$.\$get\$TypeErrorDecoder_undefinedCallPattern();\n"
-"        undefLiteralCall = \$.\$get\$TypeErrorDecoder_undefinedLiteralCallPattern();\n"
-"        nullProperty = \$.\$get\$TypeErrorDecoder_nullPropertyPattern();\n"
-"        \$.\$get\$TypeErrorDecoder_nullLiteralPropertyPattern();\n"
-"        undefProperty = \$.\$get\$TypeErrorDecoder_undefinedPropertyPattern();\n"
-"        undefLiteralProperty = \$.\$get\$TypeErrorDecoder_undefinedLiteralPropertyPattern();\n"
-"        match = nsme.matchTypeError\$1(message);\n"
-"        if (match != null)\n"
-"          return A.saveStackTrace(ex, A.JsNoSuchMethodError\$(A._asString(message), match));\n"
-"        else {\n"
-"          match = notClosure.matchTypeError\$1(message);\n"
-"          if (match != null) {\n"
-"            match.method = \"call\";\n"
-"            return A.saveStackTrace(ex, A.JsNoSuchMethodError\$(A._asString(message), match));\n"
-"          } else if (nullCall.matchTypeError\$1(message) != null || nullLiteralCall.matchTypeError\$1(message) != null || undefCall.matchTypeError\$1(message) != null || undefLiteralCall.matchTypeError\$1(message) != null || nullProperty.matchTypeError\$1(message) != null || nullLiteralCall.matchTypeError\$1(message) != null || undefProperty.matchTypeError\$1(message) != null || undefLiteralProperty.matchTypeError\$1(message) != null) {\n"
-"            A._asString(message);\n"
-"            return A.saveStackTrace(ex, new A.NullError());\n"
-"          }\n"
-"        }\n"
-"        return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == \"string\" ? message : \"\"));\n"
-"      }\n"
-"      if (ex instanceof RangeError) {\n"
-"        if (typeof message == \"string\" && message.indexOf(\"call stack\") !== -1)\n"
-"          return new A.StackOverflowError();\n"
-"        message = function(ex) {\n"
-"          try {\n"
-"            return String(ex);\n"
-"          } catch (e) {\n"
-"          }\n"
-"          return null;\n"
-"        }(ex);\n"
-"        return A.saveStackTrace(ex, new A.ArgumentError(false, null, null, typeof message == \"string\" ? message.replace(/^RangeError:\\s*/, \"\") : message));\n"
-"      }\n"
-"      if (typeof InternalError == \"function\" && ex instanceof InternalError)\n"
-"        if (typeof message == \"string\" && message === \"too much recursion\")\n"
-"          return new A.StackOverflowError();\n"
-"      return ex;\n"
-"    },\n"
-"    getTraceFromException(exception) {\n"
-"      var trace;\n"
-"      if (exception instanceof A.ExceptionAndStackTrace)\n"
-"        return exception.stackTrace;\n"
-"      if (exception == null)\n"
-"        return new A._StackTrace(exception);\n"
-"      trace = exception.\$cachedTrace;\n"
-"      if (trace != null)\n"
-"        return trace;\n"
-"      trace = new A._StackTrace(exception);\n"
-"      if (typeof exception === \"object\")\n"
-"        exception.\$cachedTrace = trace;\n"
-"      return trace;\n"
-"    },\n"
-"    objectHashCode(object) {\n"
-"      if (object == null)\n"
-"        return J.get\$hashCode\$(object);\n"
-"      if (typeof object == \"object\")\n"
-"        return A.Primitives_objectHashCode(object);\n"
-"      return J.get\$hashCode\$(object);\n"
-"    },\n"
-"    fillLiteralMap(keyValuePairs, result) {\n"
-"      var index, index0, index1,\n"
-"        \$length = keyValuePairs.length;\n"
-"      for (index = 0; index < \$length; index = index1) {\n"
-"        index0 = index + 1;\n"
-"        index1 = index0 + 1;\n"
-"        result.\$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    _invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) {\n"
-"      type\$.Function._as(closure);\n"
-"      switch (A._asInt(numberOfArguments)) {\n"
-"        case 0:\n"
-"          return closure.call\$0();\n"
-"        case 1:\n"
-"          return closure.call\$1(arg1);\n"
-"        case 2:\n"
-"          return closure.call\$2(arg1, arg2);\n"
-"        case 3:\n"
-"          return closure.call\$3(arg1, arg2, arg3);\n"
-"        case 4:\n"
-"          return closure.call\$4(arg1, arg2, arg3, arg4);\n"
-"      }\n"
-"      throw A.wrapException(new A._Exception(\"Unsupported number of arguments for wrapped closure\"));\n"
-"    },\n"
-"    convertDartClosureToJS(closure, arity) {\n"
-"      var \$function = closure.\$identity;\n"
-"      if (!!\$function)\n"
-"        return \$function;\n"
-"      \$function = A.convertDartClosureToJSUncached(closure, arity);\n"
-"      closure.\$identity = \$function;\n"
-"      return \$function;\n"
-"    },\n"
-"    convertDartClosureToJSUncached(closure, arity) {\n"
-"      var entry;\n"
-"      switch (arity) {\n"
-"        case 0:\n"
-"          entry = closure.call\$0;\n"
-"          break;\n"
-"        case 1:\n"
-"          entry = closure.call\$1;\n"
-"          break;\n"
-"        case 2:\n"
-"          entry = closure.call\$2;\n"
-"          break;\n"
-"        case 3:\n"
-"          entry = closure.call\$3;\n"
-"          break;\n"
-"        case 4:\n"
-"          entry = closure.call\$4;\n"
-"          break;\n"
-"        default:\n"
-"          entry = null;\n"
-"      }\n"
-"      if (entry != null)\n"
-"        return entry.bind(closure);\n"
-"      return function(closure, arity, invoke) {\n"
-"        return function(a1, a2, a3, a4) {\n"
-"          return invoke(closure, arity, a1, a2, a3, a4);\n"
-"        };\n"
-"      }(closure, arity, A._invokeClosure);\n"
-"    },\n"
-"    Closure_fromTearOff(parameters) {\n"
-"      var \$prototype, \$constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName,\n"
-"        container = parameters.co,\n"
-"        isStatic = parameters.iS,\n"
-"        isIntercepted = parameters.iI,\n"
-"        needsDirectAccess = parameters.nDA,\n"
-"        applyTrampolineIndex = parameters.aI,\n"
-"        funsOrNames = parameters.fs,\n"
-"        callNames = parameters.cs,\n"
-"        \$name = funsOrNames[0],\n"
-"        callName = callNames[0],\n"
-"        \$function = container[\$name],\n"
-"        t1 = parameters.fT;\n"
-"      t1.toString;\n"
-"      \$prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype);\n"
-"      \$prototype.\$initialize = \$prototype.constructor;\n"
-"      \$constructor = isStatic ? function static_tear_off() {\n"
-"        this.\$initialize();\n"
-"      } : function tear_off(a, b) {\n"
-"        this.\$initialize(a, b);\n"
-"      };\n"
-"      \$prototype.constructor = \$constructor;\n"
-"      \$constructor.prototype = \$prototype;\n"
-"      \$prototype.\$_name = \$name;\n"
-"      \$prototype.\$_target = \$function;\n"
-"      t2 = !isStatic;\n"
-"      if (t2)\n"
-"        trampoline = A.Closure_forwardCallTo(\$name, \$function, isIntercepted, needsDirectAccess);\n"
-"      else {\n"
-"        \$prototype.\$static_name = \$name;\n"
-"        trampoline = \$function;\n"
-"      }\n"
-"      \$prototype.\$signature = A.Closure__computeSignatureFunction(t1, isStatic, isIntercepted);\n"
-"      \$prototype[callName] = trampoline;\n"
-"      for (applyTrampoline = trampoline, i = 1; i < funsOrNames.length; ++i) {\n"
-"        stub = funsOrNames[i];\n"
-"        if (typeof stub == \"string\") {\n"
-"          stub0 = container[stub];\n"
-"          stubName = stub;\n"
-"          stub = stub0;\n"
-"        } else\n"
-"          stubName = \"\";\n"
-"        stubCallName = callNames[i];\n"
-"        if (stubCallName != null) {\n"
-"          if (t2)\n"
-"            stub = A.Closure_forwardCallTo(stubName, stub, isIntercepted, needsDirectAccess);\n"
-"          \$prototype[stubCallName] = stub;\n"
-"        }\n"
-"        if (i === applyTrampolineIndex)\n"
-"          applyTrampoline = stub;\n"
-"      }\n"
-"      \$prototype[\"call*\"] = applyTrampoline;\n"
-"      \$prototype.\$requiredArgCount = parameters.rC;\n"
-"      \$prototype.\$defaultValues = parameters.dV;\n"
-"      return \$constructor;\n"
-"    },\n"
-"    Closure__computeSignatureFunction(functionType, isStatic, isIntercepted) {\n"
-"      if (typeof functionType == \"number\")\n"
-"        return functionType;\n"
-"      if (typeof functionType == \"string\") {\n"
-"        if (isStatic)\n"
-"          throw A.wrapException(\"Cannot compute signature for static tearoff.\");\n"
-"        return function(recipe, evalOnReceiver) {\n"
-"          return function() {\n"
-"            return evalOnReceiver(this, recipe);\n"
-"          };\n"
-"        }(functionType, A.BoundClosure_evalRecipe);\n"
-"      }\n"
-"      throw A.wrapException(\"Error in functionType of tearoff\");\n"
-"    },\n"
-"    Closure_cspForwardCall(arity, needsDirectAccess, stubName, \$function) {\n"
-"      var getReceiver = A.BoundClosure_receiverOf;\n"
-"      switch (needsDirectAccess ? -1 : arity) {\n"
-"        case 0:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function() {\n"
-"              return receiverOf(this)[entry]();\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        case 1:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function(a) {\n"
-"              return receiverOf(this)[entry](a);\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        case 2:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function(a, b) {\n"
-"              return receiverOf(this)[entry](a, b);\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        case 3:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function(a, b, c) {\n"
-"              return receiverOf(this)[entry](a, b, c);\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        case 4:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function(a, b, c, d) {\n"
-"              return receiverOf(this)[entry](a, b, c, d);\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        case 5:\n"
-"          return function(entry, receiverOf) {\n"
-"            return function(a, b, c, d, e) {\n"
-"              return receiverOf(this)[entry](a, b, c, d, e);\n"
-"            };\n"
-"          }(stubName, getReceiver);\n"
-"        default:\n"
-"          return function(f, receiverOf) {\n"
-"            return function() {\n"
-"              return f.apply(receiverOf(this), arguments);\n"
-"            };\n"
-"          }(\$function, getReceiver);\n"
-"      }\n"
-"    },\n"
-"    Closure_forwardCallTo(stubName, \$function, isIntercepted, needsDirectAccess) {\n"
-"      if (isIntercepted)\n"
-"        return A.Closure_forwardInterceptedCallTo(stubName, \$function, needsDirectAccess);\n"
-"      return A.Closure_cspForwardCall(\$function.length, needsDirectAccess, stubName, \$function);\n"
-"    },\n"
-"    Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, \$function) {\n"
-"      var getReceiver = A.BoundClosure_receiverOf,\n"
-"        getInterceptor = A.BoundClosure_interceptorOf;\n"
-"      switch (needsDirectAccess ? -1 : arity) {\n"
-"        case 0:\n"
-"          throw A.wrapException(new A.RuntimeError(\"Intercepted function with no arguments.\"));\n"
-"        case 1:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function() {\n"
-"              return interceptorOf(this)[entry](receiverOf(this));\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        case 2:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function(a) {\n"
-"              return interceptorOf(this)[entry](receiverOf(this), a);\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        case 3:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function(a, b) {\n"
-"              return interceptorOf(this)[entry](receiverOf(this), a, b);\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        case 4:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function(a, b, c) {\n"
-"              return interceptorOf(this)[entry](receiverOf(this), a, b, c);\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        case 5:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function(a, b, c, d) {\n"
-"              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d);\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        case 6:\n"
-"          return function(entry, interceptorOf, receiverOf) {\n"
-"            return function(a, b, c, d, e) {\n"
-"              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d, e);\n"
-"            };\n"
-"          }(stubName, getInterceptor, getReceiver);\n"
-"        default:\n"
-"          return function(f, interceptorOf, receiverOf) {\n"
-"            return function() {\n"
-"              var a = [receiverOf(this)];\n"
-"              Array.prototype.push.apply(a, arguments);\n"
-"              return f.apply(interceptorOf(this), a);\n"
-"            };\n"
-"          }(\$function, getInterceptor, getReceiver);\n"
-"      }\n"
-"    },\n"
-"    Closure_forwardInterceptedCallTo(stubName, \$function, needsDirectAccess) {\n"
-"      var arity, t1;\n"
-"      if (\$.BoundClosure__interceptorFieldNameCache == null)\n"
-"        \$.BoundClosure__interceptorFieldNameCache = A.BoundClosure__computeFieldNamed(\"interceptor\");\n"
-"      if (\$.BoundClosure__receiverFieldNameCache == null)\n"
-"        \$.BoundClosure__receiverFieldNameCache = A.BoundClosure__computeFieldNamed(\"receiver\");\n"
-"      arity = \$function.length;\n"
-"      t1 = A.Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, \$function);\n"
-"      return t1;\n"
-"    },\n"
-"    closureFromTearOff(parameters) {\n"
-"      return A.Closure_fromTearOff(parameters);\n"
-"    },\n"
-"    BoundClosure_evalRecipe(closure, recipe) {\n"
-"      return A._Universe_evalInEnvironment(init.typeUniverse, A.instanceType(closure._receiver), recipe);\n"
-"    },\n"
-"    BoundClosure_receiverOf(closure) {\n"
-"      return closure._receiver;\n"
-"    },\n"
-"    BoundClosure_interceptorOf(closure) {\n"
-"      return closure._interceptor;\n"
-"    },\n"
-"    BoundClosure__computeFieldNamed(fieldName) {\n"
-"      var names, i, \$name,\n"
-"        template = new A.BoundClosure(\"receiver\", \"interceptor\"),\n"
-"        t1 = Object.getOwnPropertyNames(template);\n"
-"      t1.\$flags = 1;\n"
-"      names = t1;\n"
-"      for (t1 = names.length, i = 0; i < t1; ++i) {\n"
-"        \$name = names[i];\n"
-"        if (template[\$name] === fieldName)\n"
-"          return \$name;\n"
-"      }\n"
-"      throw A.wrapException(A.ArgumentError\$(\"Field name \" + fieldName + \" not found.\", null));\n"
-"    },\n"
-"    getIsolateAffinityTag(\$name) {\n"
-"      return init.getIsolateTag(\$name);\n"
-"    },\n"
-"    staticInteropGlobalContext() {\n"
-"      return init.G;\n"
-"    },\n"
-"    defineProperty(obj, property, value) {\n"
-"      Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});\n"
-"    },\n"
-"    lookupAndCacheInterceptor(obj) {\n"
-"      var interceptor, interceptorClass, altTag, mark, t1,\n"
-"        tag = A._asString(\$.getTagFunction.call\$1(obj)),\n"
-"        record = \$.dispatchRecordsForInstanceTags[tag];\n"
-"      if (record != null) {\n"
-"        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});\n"
-"        return record.i;\n"
-"      }\n"
-"      interceptor = \$.interceptorsForUncacheableTags[tag];\n"
-"      if (interceptor != null)\n"
-"        return interceptor;\n"
-"      interceptorClass = init.interceptorsByTag[tag];\n"
-"      if (interceptorClass == null) {\n"
-"        altTag = A._asStringQ(\$.alternateTagFunction.call\$2(obj, tag));\n"
-"        if (altTag != null) {\n"
-"          record = \$.dispatchRecordsForInstanceTags[altTag];\n"
-"          if (record != null) {\n"
-"            Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});\n"
-"            return record.i;\n"
-"          }\n"
-"          interceptor = \$.interceptorsForUncacheableTags[altTag];\n"
-"          if (interceptor != null)\n"
-"            return interceptor;\n"
-"          interceptorClass = init.interceptorsByTag[altTag];\n"
-"          tag = altTag;\n"
-"        }\n"
-"      }\n"
-"      if (interceptorClass == null)\n"
-"        return null;\n"
-"      interceptor = interceptorClass.prototype;\n"
-"      mark = tag[0];\n"
-"      if (mark === \"!\") {\n"
-"        record = A.makeLeafDispatchRecord(interceptor);\n"
-"        \$.dispatchRecordsForInstanceTags[tag] = record;\n"
-"        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});\n"
-"        return record.i;\n"
-"      }\n"
-"      if (mark === \"~\") {\n"
-"        \$.interceptorsForUncacheableTags[tag] = interceptor;\n"
-"        return interceptor;\n"
-"      }\n"
-"      if (mark === \"-\") {\n"
-"        t1 = A.makeLeafDispatchRecord(interceptor);\n"
-"        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});\n"
-"        return t1.i;\n"
-"      }\n"
-"      if (mark === \"+\")\n"
-"        return A.patchInteriorProto(obj, interceptor);\n"
-"      if (mark === \"*\")\n"
-"        throw A.wrapException(A.UnimplementedError\$(tag));\n"
-"      if (init.leafTags[tag] === true) {\n"
-"        t1 = A.makeLeafDispatchRecord(interceptor);\n"
-"        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});\n"
-"        return t1.i;\n"
-"      } else\n"
-"        return A.patchInteriorProto(obj, interceptor);\n"
-"    },\n"
-"    patchInteriorProto(obj, interceptor) {\n"
-"      var proto = Object.getPrototypeOf(obj);\n"
-"      Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true});\n"
-"      return interceptor;\n"
-"    },\n"
-"    makeLeafDispatchRecord(interceptor) {\n"
-"      return J.makeDispatchRecord(interceptor, false, null, !!interceptor.\$isJavaScriptIndexingBehavior);\n"
-"    },\n"
-"    makeDefaultDispatchRecord(tag, interceptorClass, proto) {\n"
-"      var interceptor = interceptorClass.prototype;\n"
-"      if (init.leafTags[tag] === true)\n"
-"        return A.makeLeafDispatchRecord(interceptor);\n"
-"      else\n"
-"        return J.makeDispatchRecord(interceptor, proto, null, null);\n"
-"    },\n"
-"    initNativeDispatch() {\n"
-"      if (true === \$.initNativeDispatchFlag)\n"
-"        return;\n"
-"      \$.initNativeDispatchFlag = true;\n"
-"      A.initNativeDispatchContinue();\n"
-"    },\n"
-"    initNativeDispatchContinue() {\n"
-"      var map, tags, fun, i, tag, proto, record, interceptorClass;\n"
-"      \$.dispatchRecordsForInstanceTags = Object.create(null);\n"
-"      \$.interceptorsForUncacheableTags = Object.create(null);\n"
-"      A.initHooks();\n"
-"      map = init.interceptorsByTag;\n"
-"      tags = Object.getOwnPropertyNames(map);\n"
-"      if (typeof window != \"undefined\") {\n"
-"        window;\n"
-"        fun = function() {\n"
-"        };\n"
-"        for (i = 0; i < tags.length; ++i) {\n"
-"          tag = tags[i];\n"
-"          proto = \$.prototypeForTagFunction.call\$1(tag);\n"
-"          if (proto != null) {\n"
-"            record = A.makeDefaultDispatchRecord(tag, map[tag], proto);\n"
-"            if (record != null) {\n"
-"              Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});\n"
-"              fun.prototype = proto;\n"
-"            }\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      for (i = 0; i < tags.length; ++i) {\n"
-"        tag = tags[i];\n"
-"        if (/^[A-Za-z_]/.test(tag)) {\n"
-"          interceptorClass = map[tag];\n"
-"          map[\"!\" + tag] = interceptorClass;\n"
-"          map[\"~\" + tag] = interceptorClass;\n"
-"          map[\"-\" + tag] = interceptorClass;\n"
-"          map[\"+\" + tag] = interceptorClass;\n"
-"          map[\"*\" + tag] = interceptorClass;\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    initHooks() {\n"
-"      var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag,\n"
-"        hooks = B.C_JS_CONST0();\n"
-"      hooks = A.applyHooksTransformer(B.C_JS_CONST1, A.applyHooksTransformer(B.C_JS_CONST2, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST4, A.applyHooksTransformer(B.C_JS_CONST5, A.applyHooksTransformer(B.C_JS_CONST6(B.C_JS_CONST), hooks)))))));\n"
-"      if (typeof dartNativeDispatchHooksTransformer != \"undefined\") {\n"
-"        transformers = dartNativeDispatchHooksTransformer;\n"
-"        if (typeof transformers == \"function\")\n"
-"          transformers = [transformers];\n"
-"        if (Array.isArray(transformers))\n"
-"          for (i = 0; i < transformers.length; ++i) {\n"
-"            transformer = transformers[i];\n"
-"            if (typeof transformer == \"function\")\n"
-"              hooks = transformer(hooks) || hooks;\n"
-"          }\n"
-"      }\n"
-"      getTag = hooks.getTag;\n"
-"      getUnknownTag = hooks.getUnknownTag;\n"
-"      prototypeForTag = hooks.prototypeForTag;\n"
-"      \$.getTagFunction = new A.initHooks_closure(getTag);\n"
-"      \$.alternateTagFunction = new A.initHooks_closure0(getUnknownTag);\n"
-"      \$.prototypeForTagFunction = new A.initHooks_closure1(prototypeForTag);\n"
-"    },\n"
-"    applyHooksTransformer(transformer, hooks) {\n"
-"      return transformer(hooks) || hooks;\n"
-"    },\n"
-"    createRecordTypePredicate(shape, fieldRtis) {\n"
-"      var \$length = fieldRtis.length,\n"
-"        \$function = init.rttc[\"\" + \$length + \";\" + shape];\n"
-"      if (\$function == null)\n"
-"        return null;\n"
-"      if (\$length === 0)\n"
-"        return \$function;\n"
-"      if (\$length === \$function.length)\n"
-"        return \$function.apply(null, fieldRtis);\n"
-"      return \$function(fieldRtis);\n"
-"    },\n"
-"    JSSyntaxRegExp_makeNative(source, multiLine, caseSensitive, unicode, dotAll, extraFlags) {\n"
-"      var m = multiLine ? \"m\" : \"\",\n"
-"        i = caseSensitive ? \"\" : \"i\",\n"
-"        u = unicode ? \"u\" : \"\",\n"
-"        s = dotAll ? \"s\" : \"\",\n"
-"        regexp = function(source, modifiers) {\n"
-"          try {\n"
-"            return new RegExp(source, modifiers);\n"
-"          } catch (e) {\n"
-"            return e;\n"
-"          }\n"
-"        }(source, m + i + u + s + extraFlags);\n"
-"      if (regexp instanceof RegExp)\n"
-"        return regexp;\n"
-"      throw A.wrapException(A.FormatException\$(\"Illegal RegExp pattern (\" + String(regexp) + \")\", source, null));\n"
-"    },\n"
-"    stringContainsUnchecked(receiver, other, startIndex) {\n"
-"      var t1;\n"
-"      if (typeof other == \"string\")\n"
-"        return receiver.indexOf(other, startIndex) >= 0;\n"
-"      else if (other instanceof A.JSSyntaxRegExp) {\n"
-"        t1 = B.JSString_methods.substring\$1(receiver, startIndex);\n"
-"        return other._nativeRegExp.test(t1);\n"
-"      } else\n"
-"        return !J.allMatches\$1\$s(other, B.JSString_methods.substring\$1(receiver, startIndex)).get\$isEmpty(0);\n"
-"    },\n"
-"    escapeReplacement(replacement) {\n"
-"      if (replacement.indexOf(\"\$\", 0) >= 0)\n"
-"        return replacement.replace(/\\\$/g, \"\$\$\$\$\");\n"
-"      return replacement;\n"
-"    },\n"
-"    stringReplaceFirstRE(receiver, regexp, replacement, startIndex) {\n"
-"      var match = regexp._execGlobal\$2(receiver, startIndex);\n"
-"      if (match == null)\n"
-"        return receiver;\n"
-"      return A.stringReplaceRangeUnchecked(receiver, match._match.index, match.get\$end(), replacement);\n"
-"    },\n"
-"    quoteStringForRegExp(string) {\n"
-"      if (/[[\\]{}()*+?.\\\\^\$|]/.test(string))\n"
-"        return string.replace(/[[\\]{}()*+?.\\\\^\$|]/g, \"\\\\\$&\");\n"
-"      return string;\n"
-"    },\n"
-"    stringReplaceAllUnchecked(receiver, pattern, replacement) {\n"
-"      var nativeRegexp;\n"
-"      if (typeof pattern == \"string\")\n"
-"        return A.stringReplaceAllUncheckedString(receiver, pattern, replacement);\n"
-"      if (pattern instanceof A.JSSyntaxRegExp) {\n"
-"        nativeRegexp = pattern.get\$_nativeGlobalVersion();\n"
-"        nativeRegexp.lastIndex = 0;\n"
-"        return receiver.replace(nativeRegexp, A.escapeReplacement(replacement));\n"
-"      }\n"
-"      return A.stringReplaceAllGeneral(receiver, pattern, replacement);\n"
-"    },\n"
-"    stringReplaceAllGeneral(receiver, pattern, replacement) {\n"
-"      var t1, startIndex, t2, match;\n"
-"      for (t1 = J.allMatches\$1\$s(pattern, receiver), t1 = t1.get\$iterator(t1), startIndex = 0, t2 = \"\"; t1.moveNext\$0();) {\n"
-"        match = t1.get\$current();\n"
-"        t2 = t2 + receiver.substring(startIndex, match.get\$start()) + replacement;\n"
-"        startIndex = match.get\$end();\n"
-"      }\n"
-"      t1 = t2 + receiver.substring(startIndex);\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    stringReplaceAllUncheckedString(receiver, pattern, replacement) {\n"
-"      var \$length, t1, i;\n"
-"      if (pattern === \"\") {\n"
-"        if (receiver === \"\")\n"
-"          return replacement;\n"
-"        \$length = receiver.length;\n"
-"        for (t1 = replacement, i = 0; i < \$length; ++i)\n"
-"          t1 = t1 + receiver[i] + replacement;\n"
-"        return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"      }\n"
-"      if (receiver.indexOf(pattern, 0) < 0)\n"
-"        return receiver;\n"
-"      if (receiver.length < 500 || replacement.indexOf(\"\$\", 0) >= 0)\n"
-"        return receiver.split(pattern).join(replacement);\n"
-"      return receiver.replace(new RegExp(A.quoteStringForRegExp(pattern), \"g\"), A.escapeReplacement(replacement));\n"
-"    },\n"
-"    _matchString(match) {\n"
-"      var t1 = match.\$index(0, 0);\n"
-"      t1.toString;\n"
-"      return t1;\n"
-"    },\n"
-"    _stringIdentity(string) {\n"
-"      return string;\n"
-"    },\n"
-"    stringReplaceAllFuncUnchecked(receiver, pattern, onMatch, onNonMatch) {\n"
-"      var t1, t2, startIndex, t3, match, t4, t5;\n"
-"      if (onMatch == null)\n"
-"        onMatch = A._js_helper___matchString\$closure();\n"
-"      for (t1 = pattern.allMatches\$1(0, receiver), t1 = new A._AllMatchesIterator(t1._re, t1._string, t1.__js_helper\$_start), t2 = type\$.RegExpMatch, startIndex = 0, t3 = \"\"; t1.moveNext\$0();) {\n"
-"        match = t1.__js_helper\$_current;\n"
-"        if (match == null)\n"
-"          match = t2._as(match);\n"
-"        t4 = match._match;\n"
-"        t5 = t4.index;\n"
-"        t3 = t3 + A.S(A._stringIdentity(B.JSString_methods.substring\$2(receiver, startIndex, t5))) + A.S(onMatch.call\$1(match));\n"
-"        startIndex = t5 + t4[0].length;\n"
-"      }\n"
-"      t1 = t3 + A.S(A._stringIdentity(B.JSString_methods.substring\$1(receiver, startIndex)));\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    stringReplaceFirstUnchecked(receiver, pattern, replacement, startIndex) {\n"
-"      var index, t1, matches, match;\n"
-"      if (typeof pattern == \"string\") {\n"
-"        index = receiver.indexOf(pattern, startIndex);\n"
-"        if (index < 0)\n"
-"          return receiver;\n"
-"        return A.stringReplaceRangeUnchecked(receiver, index, index + pattern.length, replacement);\n"
-"      }\n"
-"      if (pattern instanceof A.JSSyntaxRegExp)\n"
-"        return startIndex === 0 ? receiver.replace(pattern._nativeRegExp, A.escapeReplacement(replacement)) : A.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);\n"
-"      t1 = J.allMatches\$2\$s(pattern, receiver, startIndex);\n"
-"      matches = t1.get\$iterator(t1);\n"
-"      if (!matches.moveNext\$0())\n"
-"        return receiver;\n"
-"      match = matches.get\$current();\n"
-"      return B.JSString_methods.replaceRange\$3(receiver, match.get\$start(), match.get\$end(), replacement);\n"
-"    },\n"
-"    stringReplaceRangeUnchecked(receiver, start, end, replacement) {\n"
-"      return receiver.substring(0, start) + replacement + receiver.substring(end);\n"
-"    },\n"
-"    _Record_2: function _Record_2(t0, t1) {\n"
-"      this._0 = t0;\n"
-"      this._1 = t1;\n"
-"    },\n"
-"    ConstantMap: function ConstantMap() {\n"
-"    },\n"
-"    ConstantStringMap: function ConstantStringMap(t0, t1, t2) {\n"
-"      this._jsIndex = t0;\n"
-"      this._values = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    _KeysOrValues: function _KeysOrValues(t0, t1) {\n"
-"      this._elements = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _KeysOrValuesOrElementsIterator: function _KeysOrValuesOrElementsIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._elements = t0;\n"
-"      _.__js_helper\$_length = t1;\n"
-"      _.__js_helper\$_index = 0;\n"
-"      _.__js_helper\$_current = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    Instantiation: function Instantiation() {\n"
-"    },\n"
-"    Instantiation1: function Instantiation1(t0, t1) {\n"
-"      this._genericClosure = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    SafeToStringHook: function SafeToStringHook() {\n"
-"    },\n"
-"    TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) {\n"
-"      var _ = this;\n"
-"      _._pattern = t0;\n"
-"      _._arguments = t1;\n"
-"      _._argumentsExpr = t2;\n"
-"      _._expr = t3;\n"
-"      _._method = t4;\n"
-"      _._receiver = t5;\n"
-"    },\n"
-"    NullError: function NullError() {\n"
-"    },\n"
-"    JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) {\n"
-"      this.__js_helper\$_message = t0;\n"
-"      this._method = t1;\n"
-"      this._receiver = t2;\n"
-"    },\n"
-"    UnknownJsTypeError: function UnknownJsTypeError(t0) {\n"
-"      this.__js_helper\$_message = t0;\n"
-"    },\n"
-"    NullThrownFromJavaScriptException: function NullThrownFromJavaScriptException(t0) {\n"
-"      this._irritant = t0;\n"
-"    },\n"
-"    ExceptionAndStackTrace: function ExceptionAndStackTrace(t0, t1) {\n"
-"      this.dartException = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    _StackTrace: function _StackTrace(t0) {\n"
-"      this._exception = t0;\n"
-"      this._trace = null;\n"
-"    },\n"
-"    Closure: function Closure() {\n"
-"    },\n"
-"    Closure0Args: function Closure0Args() {\n"
-"    },\n"
-"    Closure2Args: function Closure2Args() {\n"
-"    },\n"
-"    TearOffClosure: function TearOffClosure() {\n"
-"    },\n"
-"    StaticClosure: function StaticClosure() {\n"
-"    },\n"
-"    BoundClosure: function BoundClosure(t0, t1) {\n"
-"      this._receiver = t0;\n"
-"      this._interceptor = t1;\n"
-"    },\n"
-"    RuntimeError: function RuntimeError(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    JsLinkedHashMap: function JsLinkedHashMap(t0) {\n"
-"      var _ = this;\n"
-"      _.__js_helper\$_length = 0;\n"
-"      _._last = _._first = _.__js_helper\$_rest = _._nums = _._strings = null;\n"
-"      _._modifications = 0;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    LinkedHashMapCell: function LinkedHashMapCell(t0, t1) {\n"
-"      var _ = this;\n"
-"      _.hashMapCellKey = t0;\n"
-"      _.hashMapCellValue = t1;\n"
-"      _._previous = _._next = null;\n"
-"    },\n"
-"    LinkedHashMapKeysIterable: function LinkedHashMapKeysIterable(t0, t1) {\n"
-"      this.__js_helper\$_map = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.__js_helper\$_map = t0;\n"
-"      _._modifications = t1;\n"
-"      _._cell = t2;\n"
-"      _.__js_helper\$_current = null;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    LinkedHashMapValuesIterable: function LinkedHashMapValuesIterable(t0, t1) {\n"
-"      this.__js_helper\$_map = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    LinkedHashMapValueIterator: function LinkedHashMapValueIterator(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.__js_helper\$_map = t0;\n"
-"      _._modifications = t1;\n"
-"      _._cell = t2;\n"
-"      _.__js_helper\$_current = null;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    LinkedHashMapEntriesIterable: function LinkedHashMapEntriesIterable(t0, t1) {\n"
-"      this.__js_helper\$_map = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    LinkedHashMapEntryIterator: function LinkedHashMapEntryIterator(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.__js_helper\$_map = t0;\n"
-"      _._modifications = t1;\n"
-"      _._cell = t2;\n"
-"      _.__js_helper\$_current = null;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    JsIdentityLinkedHashMap: function JsIdentityLinkedHashMap(t0) {\n"
-"      var _ = this;\n"
-"      _.__js_helper\$_length = 0;\n"
-"      _._last = _._first = _.__js_helper\$_rest = _._nums = _._strings = null;\n"
-"      _._modifications = 0;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    initHooks_closure: function initHooks_closure(t0) {\n"
-"      this.getTag = t0;\n"
-"    },\n"
-"    initHooks_closure0: function initHooks_closure0(t0) {\n"
-"      this.getUnknownTag = t0;\n"
-"    },\n"
-"    initHooks_closure1: function initHooks_closure1(t0) {\n"
-"      this.prototypeForTag = t0;\n"
-"    },\n"
-"    _Record: function _Record() {\n"
-"    },\n"
-"    _Record2: function _Record2() {\n"
-"    },\n"
-"    JSSyntaxRegExp: function JSSyntaxRegExp(t0, t1) {\n"
-"      var _ = this;\n"
-"      _.pattern = t0;\n"
-"      _._nativeRegExp = t1;\n"
-"      _._hasCapturesCache = _._nativeAnchoredRegExp = _._nativeGlobalRegExp = null;\n"
-"    },\n"
-"    _MatchImplementation: function _MatchImplementation(t0) {\n"
-"      this._match = t0;\n"
-"    },\n"
-"    _AllMatchesIterable: function _AllMatchesIterable(t0, t1, t2) {\n"
-"      this._re = t0;\n"
-"      this._string = t1;\n"
-"      this.__js_helper\$_start = t2;\n"
-"    },\n"
-"    _AllMatchesIterator: function _AllMatchesIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._regExp = t0;\n"
-"      _._string = t1;\n"
-"      _._nextIndex = t2;\n"
-"      _.__js_helper\$_current = null;\n"
-"    },\n"
-"    StringMatch: function StringMatch(t0, t1) {\n"
-"      this.start = t0;\n"
-"      this.pattern = t1;\n"
-"    },\n"
-"    _StringAllMatchesIterable: function _StringAllMatchesIterable(t0, t1, t2) {\n"
-"      this._input = t0;\n"
-"      this._pattern = t1;\n"
-"      this.__js_helper\$_index = t2;\n"
-"    },\n"
-"    _StringAllMatchesIterator: function _StringAllMatchesIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._input = t0;\n"
-"      _._pattern = t1;\n"
-"      _.__js_helper\$_index = t2;\n"
-"      _.__js_helper\$_current = null;\n"
-"    },\n"
-"    throwLateFieldNI(fieldName) {\n"
-"      throw A.initializeExceptionWrapper(A.LateError\$fieldNI(fieldName), new Error());\n"
-"    },\n"
-"    throwLateFieldADI(fieldName) {\n"
-"      throw A.initializeExceptionWrapper(A.LateError\$fieldADI(fieldName), new Error());\n"
-"    },\n"
-"    _Cell\$named(_name) {\n"
-"      var t1 = new A._Cell(_name);\n"
-"      return t1.__late_helper\$_value = t1;\n"
-"    },\n"
-"    _Cell: function _Cell(t0) {\n"
-"      this.__late_helper\$_name = t0;\n"
-"      this.__late_helper\$_value = null;\n"
-"    },\n"
-"    _checkLength(\$length) {\n"
-"      return \$length;\n"
-"    },\n"
-"    _ensureNativeList(list) {\n"
-"      return list;\n"
-"    },\n"
-"    NativeInt8List__create1(arg) {\n"
-"      return new Int8Array(arg);\n"
-"    },\n"
-"    NativeUint8List_NativeUint8List(\$length) {\n"
-"      return new Uint8Array(\$length);\n"
-"    },\n"
-"    NativeUint8List_NativeUint8List\$view(buffer, offsetInBytes, \$length) {\n"
-"      return \$length == null ? new Uint8Array(buffer, offsetInBytes) : new Uint8Array(buffer, offsetInBytes, \$length);\n"
-"    },\n"
-"    _checkValidIndex(index, list, \$length) {\n"
-"      if (index >>> 0 !== index || index >= \$length)\n"
-"        throw A.wrapException(A.diagnoseIndexError(list, index));\n"
-"    },\n"
-"    _checkValidRange(start, end, \$length) {\n"
-"      var t1;\n"
-"      if (!(start >>> 0 !== start))\n"
-"        if (end == null)\n"
-"          t1 = start > \$length;\n"
-"        else\n"
-"          t1 = end >>> 0 !== end || start > end || end > \$length;\n"
-"      else\n"
-"        t1 = true;\n"
-"      if (t1)\n"
-"        throw A.wrapException(A.diagnoseRangeError(start, end, \$length));\n"
-"      if (end == null)\n"
-"        return \$length;\n"
-"      return end;\n"
-"    },\n"
-"    NativeByteBuffer: function NativeByteBuffer() {\n"
-"    },\n"
-"    NativeArrayBuffer: function NativeArrayBuffer() {\n"
-"    },\n"
-"    NativeTypedData: function NativeTypedData() {\n"
-"    },\n"
-"    _UnmodifiableNativeByteBufferView: function _UnmodifiableNativeByteBufferView(t0) {\n"
-"      this.__native_typed_data\$_data = t0;\n"
-"    },\n"
-"    NativeByteData: function NativeByteData() {\n"
-"    },\n"
-"    NativeTypedArray: function NativeTypedArray() {\n"
-"    },\n"
-"    NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() {\n"
-"    },\n"
-"    NativeTypedArrayOfInt: function NativeTypedArrayOfInt() {\n"
-"    },\n"
-"    NativeFloat32List: function NativeFloat32List() {\n"
-"    },\n"
-"    NativeFloat64List: function NativeFloat64List() {\n"
-"    },\n"
-"    NativeInt16List: function NativeInt16List() {\n"
-"    },\n"
-"    NativeInt32List: function NativeInt32List() {\n"
-"    },\n"
-"    NativeInt8List: function NativeInt8List() {\n"
-"    },\n"
-"    NativeUint16List: function NativeUint16List() {\n"
-"    },\n"
-"    NativeUint32List: function NativeUint32List() {\n"
-"    },\n"
-"    NativeUint8ClampedList: function NativeUint8ClampedList() {\n"
-"    },\n"
-"    NativeUint8List: function NativeUint8List() {\n"
-"    },\n"
-"    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin() {\n"
-"    },\n"
-"    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin() {\n"
-"    },\n"
-"    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin() {\n"
-"    },\n"
-"    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() {\n"
-"    },\n"
-"    Rti__getFutureFromFutureOr(universe, rti) {\n"
-"      var future = rti._precomputed1;\n"
-"      return future == null ? rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, \"Future\", [rti._primary]) : future;\n"
-"    },\n"
-"    Rti__isUnionOfFunctionType(rti) {\n"
-"      var kind = rti._kind;\n"
-"      if (kind === 6 || kind === 7)\n"
-"        return A.Rti__isUnionOfFunctionType(rti._primary);\n"
-"      return kind === 11 || kind === 12;\n"
-"    },\n"
-"    Rti__getCanonicalRecipe(rti) {\n"
-"      return rti._canonicalRecipe;\n"
-"    },\n"
-"    findType(recipe) {\n"
-"      return A._Universe_eval(init.typeUniverse, recipe, false);\n"
-"    },\n"
-"    instantiatedGenericFunctionType(genericFunctionRti, instantiationRti) {\n"
-"      var t1, cache, key, probe, rti;\n"
-"      if (genericFunctionRti == null)\n"
-"        return null;\n"
-"      t1 = instantiationRti._rest;\n"
-"      cache = genericFunctionRti._bindCache;\n"
-"      if (cache == null)\n"
-"        cache = genericFunctionRti._bindCache = new Map();\n"
-"      key = instantiationRti._canonicalRecipe;\n"
-"      probe = cache.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = A._substitute(init.typeUniverse, genericFunctionRti._primary, t1, 0);\n"
-"      cache.set(key, rti);\n"
-"      return rti;\n"
-"    },\n"
-"    _substitute(universe, rti, typeArguments, depth) {\n"
-"      var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, \$arguments, substitutedArguments, t1, fields, substitutedFields, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument,\n"
-"        kind = rti._kind;\n"
-"      switch (kind) {\n"
-"        case 5:\n"
-"        case 1:\n"
-"        case 2:\n"
-"        case 3:\n"
-"        case 4:\n"
-"          return rti;\n"
-"        case 6:\n"
-"          baseType = rti._primary;\n"
-"          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);\n"
-"          if (substitutedBaseType === baseType)\n"
-"            return rti;\n"
-"          return A._Universe__lookupQuestionRti(universe, substitutedBaseType, true);\n"
-"        case 7:\n"
-"          baseType = rti._primary;\n"
-"          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);\n"
-"          if (substitutedBaseType === baseType)\n"
-"            return rti;\n"
-"          return A._Universe__lookupFutureOrRti(universe, substitutedBaseType, true);\n"
-"        case 8:\n"
-"          interfaceTypeArguments = rti._rest;\n"
-"          substitutedInterfaceTypeArguments = A._substituteArray(universe, interfaceTypeArguments, typeArguments, depth);\n"
-"          if (substitutedInterfaceTypeArguments === interfaceTypeArguments)\n"
-"            return rti;\n"
-"          return A._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments);\n"
-"        case 9:\n"
-"          base = rti._primary;\n"
-"          substitutedBase = A._substitute(universe, base, typeArguments, depth);\n"
-"          \$arguments = rti._rest;\n"
-"          substitutedArguments = A._substituteArray(universe, \$arguments, typeArguments, depth);\n"
-"          if (substitutedBase === base && substitutedArguments === \$arguments)\n"
-"            return rti;\n"
-"          return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments);\n"
-"        case 10:\n"
-"          t1 = rti._primary;\n"
-"          fields = rti._rest;\n"
-"          substitutedFields = A._substituteArray(universe, fields, typeArguments, depth);\n"
-"          if (substitutedFields === fields)\n"
-"            return rti;\n"
-"          return A._Universe__lookupRecordRti(universe, t1, substitutedFields);\n"
-"        case 11:\n"
-"          returnType = rti._primary;\n"
-"          substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth);\n"
-"          functionParameters = rti._rest;\n"
-"          substitutedFunctionParameters = A._substituteFunctionParameters(universe, functionParameters, typeArguments, depth);\n"
-"          if (substitutedReturnType === returnType && substitutedFunctionParameters === functionParameters)\n"
-"            return rti;\n"
-"          return A._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters);\n"
-"        case 12:\n"
-"          bounds = rti._rest;\n"
-"          depth += bounds.length;\n"
-"          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, depth);\n"
-"          base = rti._primary;\n"
-"          substitutedBase = A._substitute(universe, base, typeArguments, depth);\n"
-"          if (substitutedBounds === bounds && substitutedBase === base)\n"
-"            return rti;\n"
-"          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true);\n"
-"        case 13:\n"
-"          index = rti._primary;\n"
-"          if (index < depth)\n"
-"            return rti;\n"
-"          argument = typeArguments[index - depth];\n"
-"          if (argument == null)\n"
-"            return rti;\n"
-"          return argument;\n"
-"        default:\n"
-"          throw A.wrapException(A.AssertionError\$(\"Attempted to substitute unexpected RTI kind \" + kind));\n"
-"      }\n"
-"    },\n"
-"    _substituteArray(universe, rtiArray, typeArguments, depth) {\n"
-"      var changed, i, rti, substitutedRti,\n"
-"        \$length = rtiArray.length,\n"
-"        result = A._Utils_newArrayOrEmpty(\$length);\n"
-"      for (changed = false, i = 0; i < \$length; ++i) {\n"
-"        rti = rtiArray[i];\n"
-"        substitutedRti = A._substitute(universe, rti, typeArguments, depth);\n"
-"        if (substitutedRti !== rti)\n"
-"          changed = true;\n"
-"        result[i] = substitutedRti;\n"
-"      }\n"
-"      return changed ? result : rtiArray;\n"
-"    },\n"
-"    _substituteNamed(universe, namedArray, typeArguments, depth) {\n"
-"      var changed, i, t1, t2, rti, substitutedRti,\n"
-"        \$length = namedArray.length,\n"
-"        result = A._Utils_newArrayOrEmpty(\$length);\n"
-"      for (changed = false, i = 0; i < \$length; i += 3) {\n"
-"        t1 = namedArray[i];\n"
-"        t2 = namedArray[i + 1];\n"
-"        rti = namedArray[i + 2];\n"
-"        substitutedRti = A._substitute(universe, rti, typeArguments, depth);\n"
-"        if (substitutedRti !== rti)\n"
-"          changed = true;\n"
-"        result.splice(i, 3, t1, t2, substitutedRti);\n"
-"      }\n"
-"      return changed ? result : namedArray;\n"
-"    },\n"
-"    _substituteFunctionParameters(universe, functionParameters, typeArguments, depth) {\n"
-"      var result,\n"
-"        requiredPositional = functionParameters._requiredPositional,\n"
-"        substitutedRequiredPositional = A._substituteArray(universe, requiredPositional, typeArguments, depth),\n"
-"        optionalPositional = functionParameters._optionalPositional,\n"
-"        substitutedOptionalPositional = A._substituteArray(universe, optionalPositional, typeArguments, depth),\n"
-"        named = functionParameters._named,\n"
-"        substitutedNamed = A._substituteNamed(universe, named, typeArguments, depth);\n"
-"      if (substitutedRequiredPositional === requiredPositional && substitutedOptionalPositional === optionalPositional && substitutedNamed === named)\n"
-"        return functionParameters;\n"
-"      result = new A._FunctionParameters();\n"
-"      result._requiredPositional = substitutedRequiredPositional;\n"
-"      result._optionalPositional = substitutedOptionalPositional;\n"
-"      result._named = substitutedNamed;\n"
-"      return result;\n"
-"    },\n"
-"    _setArrayType(target, rti) {\n"
-"      target[init.arrayRti] = rti;\n"
-"      return target;\n"
-"    },\n"
-"    closureFunctionType(closure) {\n"
-"      var signature = closure.\$signature;\n"
-"      if (signature != null) {\n"
-"        if (typeof signature == \"number\")\n"
-"          return A.getTypeFromTypesTable(signature);\n"
-"        return closure.\$signature();\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    instanceOrFunctionType(object, testRti) {\n"
-"      var rti;\n"
-"      if (A.Rti__isUnionOfFunctionType(testRti))\n"
-"        if (object instanceof A.Closure) {\n"
-"          rti = A.closureFunctionType(object);\n"
-"          if (rti != null)\n"
-"            return rti;\n"
-"        }\n"
-"      return A.instanceType(object);\n"
-"    },\n"
-"    instanceType(object) {\n"
-"      if (object instanceof A.Object)\n"
-"        return A._instanceType(object);\n"
-"      if (Array.isArray(object))\n"
-"        return A._arrayInstanceType(object);\n"
-"      return A._instanceTypeFromConstructor(J.getInterceptor\$(object));\n"
-"    },\n"
-"    _arrayInstanceType(object) {\n"
-"      var rti = object[init.arrayRti],\n"
-"        defaultRti = type\$.JSArray_dynamic;\n"
-"      if (rti == null)\n"
-"        return defaultRti;\n"
-"      if (rti.constructor !== defaultRti.constructor)\n"
-"        return defaultRti;\n"
-"      return rti;\n"
-"    },\n"
-"    _instanceType(object) {\n"
-"      var rti = object.\$ti;\n"
-"      return rti != null ? rti : A._instanceTypeFromConstructor(object);\n"
-"    },\n"
-"    _instanceTypeFromConstructor(instance) {\n"
-"      var \$constructor = instance.constructor,\n"
-"        probe = \$constructor.\$ccache;\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      return A._instanceTypeFromConstructorMiss(instance, \$constructor);\n"
-"    },\n"
-"    _instanceTypeFromConstructorMiss(instance, \$constructor) {\n"
-"      var effectiveConstructor = instance instanceof A.Closure ? Object.getPrototypeOf(Object.getPrototypeOf(instance)).constructor : \$constructor,\n"
-"        rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name);\n"
-"      \$constructor.\$ccache = rti;\n"
-"      return rti;\n"
-"    },\n"
-"    getTypeFromTypesTable(index) {\n"
-"      var rti,\n"
-"        table = init.types,\n"
-"        type = table[index];\n"
-"      if (typeof type == \"string\") {\n"
-"        rti = A._Universe_eval(init.typeUniverse, type, false);\n"
-"        table[index] = rti;\n"
-"        return rti;\n"
-"      }\n"
-"      return type;\n"
-"    },\n"
-"    getRuntimeTypeOfDartObject(object) {\n"
-"      return A.createRuntimeType(A._instanceType(object));\n"
-"    },\n"
-"    getRuntimeTypeOfClosure(closure) {\n"
-"      var rti = A.closureFunctionType(closure);\n"
-"      return A.createRuntimeType(rti == null ? A.instanceType(closure) : rti);\n"
-"    },\n"
-"    _structuralTypeOf(object) {\n"
-"      var functionRti;\n"
-"      if (object instanceof A._Record)\n"
-"        return object._getRti\$0();\n"
-"      functionRti = object instanceof A.Closure ? A.closureFunctionType(object) : null;\n"
-"      if (functionRti != null)\n"
-"        return functionRti;\n"
-"      if (type\$.TrustedGetRuntimeType._is(object))\n"
-"        return J.get\$runtimeType\$(object)._rti;\n"
-"      if (Array.isArray(object))\n"
-"        return A._arrayInstanceType(object);\n"
-"      return A.instanceType(object);\n"
-"    },\n"
-"    createRuntimeType(rti) {\n"
-"      var t1 = rti._cachedRuntimeType;\n"
-"      return t1 == null ? rti._cachedRuntimeType = new A._Type(rti) : t1;\n"
-"    },\n"
-"    evaluateRtiForRecord(recordRecipe, valuesList) {\n"
-"      var bindings, i,\n"
-"        values = valuesList,\n"
-"        \$length = values.length;\n"
-"      if (\$length === 0)\n"
-"        return type\$.Record_0;\n"
-"      if (0 >= \$length)\n"
-"        return A.ioore(values, 0);\n"
-"      bindings = A._Universe_evalInEnvironment(init.typeUniverse, A._structuralTypeOf(values[0]), \"@<0>\");\n"
-"      for (i = 1; i < \$length; ++i) {\n"
-"        if (!(i < values.length))\n"
-"          return A.ioore(values, i);\n"
-"        bindings = A._Universe_bind(init.typeUniverse, bindings, A._structuralTypeOf(values[i]));\n"
-"      }\n"
-"      return A._Universe_evalInEnvironment(init.typeUniverse, bindings, recordRecipe);\n"
-"    },\n"
-"    typeLiteral(recipe) {\n"
-"      return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false));\n"
-"    },\n"
-"    _installSpecializedIsTest(object) {\n"
-"      var testRti = this;\n"
-"      testRti._is = A._specializedIsTest(testRti);\n"
-"      return testRti._is(object);\n"
-"    },\n"
-"    _specializedIsTest(testRti) {\n"
-"      var kind, simpleIsFn, \$name, predicate, t1;\n"
-"      if (testRti === type\$.Object)\n"
-"        return A._isObject;\n"
-"      if (A.isTopType(testRti))\n"
-"        return A._isTop;\n"
-"      kind = testRti._kind;\n"
-"      if (kind === 6)\n"
-"        return A._generalNullableIsTestImplementation;\n"
-"      if (kind === 1)\n"
-"        return A._isNever;\n"
-"      if (kind === 7)\n"
-"        return A._isFutureOr;\n"
-"      simpleIsFn = A._simpleSpecializedIsTest(testRti);\n"
-"      if (simpleIsFn != null)\n"
-"        return simpleIsFn;\n"
-"      if (kind === 8) {\n"
-"        \$name = testRti._primary;\n"
-"        if (testRti._rest.every(A.isTopType)) {\n"
-"          testRti._specializedTestResource = \"\$is\" + \$name;\n"
-"          if (\$name === \"List\")\n"
-"            return A._isListTestViaProperty;\n"
-"          if (testRti === type\$.JSObject)\n"
-"            return A._isJSObject;\n"
-"          return A._isTestViaProperty;\n"
-"        }\n"
-"      } else if (kind === 10) {\n"
-"        predicate = A.createRecordTypePredicate(testRti._primary, testRti._rest);\n"
-"        t1 = predicate == null ? A._isNever : predicate;\n"
-"        return t1 == null ? A._asObject(t1) : t1;\n"
-"      }\n"
-"      return A._generalIsTestImplementation;\n"
-"    },\n"
-"    _simpleSpecializedIsTest(testRti) {\n"
-"      if (testRti._kind === 8) {\n"
-"        if (testRti === type\$.int)\n"
-"          return A._isInt;\n"
-"        if (testRti === type\$.double || testRti === type\$.num)\n"
-"          return A._isNum;\n"
-"        if (testRti === type\$.String)\n"
-"          return A._isString;\n"
-"        if (testRti === type\$.bool)\n"
-"          return A._isBool;\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    _installSpecializedAsCheck(object) {\n"
-"      var testRti = this,\n"
-"        asFn = A._generalAsCheckImplementation;\n"
-"      if (A.isTopType(testRti))\n"
-"        asFn = A._asTop;\n"
-"      else if (testRti === type\$.Object)\n"
-"        asFn = A._asObject;\n"
-"      else if (A.isNullable(testRti)) {\n"
-"        asFn = A._generalNullableAsCheckImplementation;\n"
-"        if (testRti === type\$.nullable_int)\n"
-"          asFn = A._asIntQ;\n"
-"        else if (testRti === type\$.nullable_String)\n"
-"          asFn = A._asStringQ;\n"
-"        else if (testRti === type\$.nullable_bool)\n"
-"          asFn = A._asBoolQ;\n"
-"        else if (testRti === type\$.nullable_num)\n"
-"          asFn = A._asNumQ;\n"
-"        else if (testRti === type\$.nullable_double)\n"
-"          asFn = A._asDoubleQ;\n"
-"        else if (testRti === type\$.nullable_JSObject)\n"
-"          asFn = A._asJSObjectQ;\n"
-"      } else if (testRti === type\$.int)\n"
-"        asFn = A._asInt;\n"
-"      else if (testRti === type\$.String)\n"
-"        asFn = A._asString;\n"
-"      else if (testRti === type\$.bool)\n"
-"        asFn = A._asBool;\n"
-"      else if (testRti === type\$.num)\n"
-"        asFn = A._asNum;\n"
-"      else if (testRti === type\$.double)\n"
-"        asFn = A._asDouble;\n"
-"      else if (testRti === type\$.JSObject)\n"
-"        asFn = A._asJSObject;\n"
-"      testRti._as = asFn;\n"
-"      return testRti._as(object);\n"
-"    },\n"
-"    _generalIsTestImplementation(object) {\n"
-"      var testRti = this;\n"
-"      if (object == null)\n"
-"        return A.isNullable(testRti);\n"
-"      return A.isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), testRti);\n"
-"    },\n"
-"    _generalNullableIsTestImplementation(object) {\n"
-"      if (object == null)\n"
-"        return true;\n"
-"      return this._primary._is(object);\n"
-"    },\n"
-"    _isTestViaProperty(object) {\n"
-"      var tag, testRti = this;\n"
-"      if (object == null)\n"
-"        return A.isNullable(testRti);\n"
-"      tag = testRti._specializedTestResource;\n"
-"      if (object instanceof A.Object)\n"
-"        return !!object[tag];\n"
-"      return !!J.getInterceptor\$(object)[tag];\n"
-"    },\n"
-"    _isListTestViaProperty(object) {\n"
-"      var tag, testRti = this;\n"
-"      if (object == null)\n"
-"        return A.isNullable(testRti);\n"
-"      if (typeof object != \"object\")\n"
-"        return false;\n"
-"      if (Array.isArray(object))\n"
-"        return true;\n"
-"      tag = testRti._specializedTestResource;\n"
-"      if (object instanceof A.Object)\n"
-"        return !!object[tag];\n"
-"      return !!J.getInterceptor\$(object)[tag];\n"
-"    },\n"
-"    _isJSObject(object) {\n"
-"      var t1 = this;\n"
-"      if (object == null)\n"
-"        return false;\n"
-"      if (typeof object == \"object\") {\n"
-"        if (object instanceof A.Object)\n"
-"          return !!object[t1._specializedTestResource];\n"
-"        return true;\n"
-"      }\n"
-"      if (typeof object == \"function\")\n"
-"        return true;\n"
-"      return false;\n"
-"    },\n"
-"    _isJSObjectStandalone(object) {\n"
-"      if (typeof object == \"object\") {\n"
-"        if (object instanceof A.Object)\n"
-"          return type\$.JSObject._is(object);\n"
-"        return true;\n"
-"      }\n"
-"      if (typeof object == \"function\")\n"
-"        return true;\n"
-"      return false;\n"
-"    },\n"
-"    _generalAsCheckImplementation(object) {\n"
-"      var testRti = this;\n"
-"      if (object == null) {\n"
-"        if (A.isNullable(testRti))\n"
-"          return object;\n"
-"      } else if (testRti._is(object))\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._errorForAsCheck(object, testRti), new Error());\n"
-"    },\n"
-"    _generalNullableAsCheckImplementation(object) {\n"
-"      var testRti = this;\n"
-"      if (object == null || testRti._is(object))\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._errorForAsCheck(object, testRti), new Error());\n"
-"    },\n"
-"    _errorForAsCheck(object, testRti) {\n"
-"      return new A._TypeError(\"TypeError: \" + A._Error_compose(object, A._rtiToString(testRti, null)));\n"
-"    },\n"
-"    checkTypeBound(type, bound, variable, methodName) {\n"
-"      if (A.isSubtype(init.typeUniverse, type, bound))\n"
-"        return type;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError\$fromMessage(\"The type argument '\" + A._rtiToString(type, null) + \"' is not a subtype of the type variable bound '\" + A._rtiToString(bound, null) + \"' of type variable '\" + variable + \"' in '\" + methodName + \"'.\"), new Error());\n"
-"    },\n"
-"    _Error_compose(object, checkedTypeDescription) {\n"
-"      return A.Error_safeToString(object) + \": type '\" + A._rtiToString(A._structuralTypeOf(object), null) + \"' is not a subtype of type '\" + checkedTypeDescription + \"'\";\n"
-"    },\n"
-"    _TypeError\$fromMessage(message) {\n"
-"      return new A._TypeError(\"TypeError: \" + message);\n"
-"    },\n"
-"    _TypeError__TypeError\$forType(object, type) {\n"
-"      return new A._TypeError(\"TypeError: \" + A._Error_compose(object, type));\n"
-"    },\n"
-"    _isFutureOr(object) {\n"
-"      var testRti = this;\n"
-"      return testRti._primary._is(object) || A.Rti__getFutureFromFutureOr(init.typeUniverse, testRti)._is(object);\n"
-"    },\n"
-"    _isObject(object) {\n"
-"      return object != null;\n"
-"    },\n"
-"    _asObject(object) {\n"
-"      if (object != null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"Object\"), new Error());\n"
-"    },\n"
-"    _isTop(object) {\n"
-"      return true;\n"
-"    },\n"
-"    _asTop(object) {\n"
-"      return object;\n"
-"    },\n"
-"    _isNever(object) {\n"
-"      return false;\n"
-"    },\n"
-"    _isBool(object) {\n"
-"      return true === object || false === object;\n"
-"    },\n"
-"    _asBool(object) {\n"
-"      if (true === object)\n"
-"        return true;\n"
-"      if (false === object)\n"
-"        return false;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"bool\"), new Error());\n"
-"    },\n"
-"    _asBoolQ(object) {\n"
-"      if (true === object)\n"
-"        return true;\n"
-"      if (false === object)\n"
-"        return false;\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"bool?\"), new Error());\n"
-"    },\n"
-"    _asDouble(object) {\n"
-"      if (typeof object == \"number\")\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"double\"), new Error());\n"
-"    },\n"
-"    _asDoubleQ(object) {\n"
-"      if (typeof object == \"number\")\n"
-"        return object;\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"double?\"), new Error());\n"
-"    },\n"
-"    _isInt(object) {\n"
-"      return typeof object == \"number\" && Math.floor(object) === object;\n"
-"    },\n"
-"    _asInt(object) {\n"
-"      if (typeof object == \"number\" && Math.floor(object) === object)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"int\"), new Error());\n"
-"    },\n"
-"    _asIntQ(object) {\n"
-"      if (typeof object == \"number\" && Math.floor(object) === object)\n"
-"        return object;\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"int?\"), new Error());\n"
-"    },\n"
-"    _isNum(object) {\n"
-"      return typeof object == \"number\";\n"
-"    },\n"
-"    _asNum(object) {\n"
-"      if (typeof object == \"number\")\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"num\"), new Error());\n"
-"    },\n"
-"    _asNumQ(object) {\n"
-"      if (typeof object == \"number\")\n"
-"        return object;\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"num?\"), new Error());\n"
-"    },\n"
-"    _isString(object) {\n"
-"      return typeof object == \"string\";\n"
-"    },\n"
-"    _asString(object) {\n"
-"      if (typeof object == \"string\")\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"String\"), new Error());\n"
-"    },\n"
-"    _asStringQ(object) {\n"
-"      if (typeof object == \"string\")\n"
-"        return object;\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"String?\"), new Error());\n"
-"    },\n"
-"    _asJSObject(object) {\n"
-"      if (A._isJSObjectStandalone(object))\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"JSObject\"), new Error());\n"
-"    },\n"
-"    _asJSObjectQ(object) {\n"
-"      if (object == null)\n"
-"        return object;\n"
-"      if (A._isJSObjectStandalone(object))\n"
-"        return object;\n"
-"      throw A.initializeExceptionWrapper(A._TypeError__TypeError\$forType(object, \"JSObject?\"), new Error());\n"
-"    },\n"
-"    _rtiArrayToString(array, genericContext) {\n"
-"      var s, sep, i;\n"
-"      for (s = \"\", sep = \"\", i = 0; i < array.length; ++i, sep = \", \")\n"
-"        s += sep + A._rtiToString(array[i], genericContext);\n"
-"      return s;\n"
-"    },\n"
-"    _recordRtiToString(recordType, genericContext) {\n"
-"      var fieldCount, names, namesIndex, s, comma, i,\n"
-"        partialShape = recordType._primary,\n"
-"        fields = recordType._rest;\n"
-"      if (\"\" === partialShape)\n"
-"        return \"(\" + A._rtiArrayToString(fields, genericContext) + \")\";\n"
-"      fieldCount = fields.length;\n"
-"      names = partialShape.split(\",\");\n"
-"      namesIndex = names.length - fieldCount;\n"
-"      for (s = \"(\", comma = \"\", i = 0; i < fieldCount; ++i, comma = \", \") {\n"
-"        s += comma;\n"
-"        if (namesIndex === 0)\n"
-"          s += \"{\";\n"
-"        s += A._rtiToString(fields[i], genericContext);\n"
-"        if (namesIndex >= 0)\n"
-"          s += \" \" + names[namesIndex];\n"
-"        ++namesIndex;\n"
-"      }\n"
-"      return s + \"})\";\n"
-"    },\n"
-"    _functionRtiToString(functionType, genericContext, bounds) {\n"
-"      var boundsLength, offset, i, t1, typeParametersText, typeSep, t2, t3, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = \", \", outerContextLength = null;\n"
-"      if (bounds != null) {\n"
-"        boundsLength = bounds.length;\n"
-"        if (genericContext == null)\n"
-"          genericContext = A._setArrayType([], type\$.JSArray_String);\n"
-"        else\n"
-"          outerContextLength = genericContext.length;\n"
-"        offset = genericContext.length;\n"
-"        for (i = boundsLength; i > 0; --i)\n"
-"          B.JSArray_methods.add\$1(genericContext, \"T\" + (offset + i));\n"
-"        for (t1 = type\$.nullable_Object, typeParametersText = \"<\", typeSep = \"\", i = 0; i < boundsLength; ++i, typeSep = _s2_) {\n"
-"          t2 = genericContext.length;\n"
-"          t3 = t2 - 1 - i;\n"
-"          if (!(t3 >= 0))\n"
-"            return A.ioore(genericContext, t3);\n"
-"          typeParametersText = typeParametersText + typeSep + genericContext[t3];\n"
-"          boundRti = bounds[i];\n"
-"          kind = boundRti._kind;\n"
-"          if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1))\n"
-"            typeParametersText += \" extends \" + A._rtiToString(boundRti, genericContext);\n"
-"        }\n"
-"        typeParametersText += \">\";\n"
-"      } else\n"
-"        typeParametersText = \"\";\n"
-"      t1 = functionType._primary;\n"
-"      parameters = functionType._rest;\n"
-"      requiredPositional = parameters._requiredPositional;\n"
-"      requiredPositionalLength = requiredPositional.length;\n"
-"      optionalPositional = parameters._optionalPositional;\n"
-"      optionalPositionalLength = optionalPositional.length;\n"
-"      named = parameters._named;\n"
-"      namedLength = named.length;\n"
-"      returnTypeText = A._rtiToString(t1, genericContext);\n"
-"      for (argumentsText = \"\", sep = \"\", i = 0; i < requiredPositionalLength; ++i, sep = _s2_)\n"
-"        argumentsText += sep + A._rtiToString(requiredPositional[i], genericContext);\n"
-"      if (optionalPositionalLength > 0) {\n"
-"        argumentsText += sep + \"[\";\n"
-"        for (sep = \"\", i = 0; i < optionalPositionalLength; ++i, sep = _s2_)\n"
-"          argumentsText += sep + A._rtiToString(optionalPositional[i], genericContext);\n"
-"        argumentsText += \"]\";\n"
-"      }\n"
-"      if (namedLength > 0) {\n"
-"        argumentsText += sep + \"{\";\n"
-"        for (sep = \"\", i = 0; i < namedLength; i += 3, sep = _s2_) {\n"
-"          argumentsText += sep;\n"
-"          if (named[i + 1])\n"
-"            argumentsText += \"required \";\n"
-"          argumentsText += A._rtiToString(named[i + 2], genericContext) + \" \" + named[i];\n"
-"        }\n"
-"        argumentsText += \"}\";\n"
-"      }\n"
-"      if (outerContextLength != null) {\n"
-"        genericContext.toString;\n"
-"        genericContext.length = outerContextLength;\n"
-"      }\n"
-"      return typeParametersText + \"(\" + argumentsText + \") => \" + returnTypeText;\n"
-"    },\n"
-"    _rtiToString(rti, genericContext) {\n"
-"      var questionArgument, s, argumentKind, \$name, \$arguments, t1, t2,\n"
-"        kind = rti._kind;\n"
-"      if (kind === 5)\n"
-"        return \"erased\";\n"
-"      if (kind === 2)\n"
-"        return \"dynamic\";\n"
-"      if (kind === 3)\n"
-"        return \"void\";\n"
-"      if (kind === 1)\n"
-"        return \"Never\";\n"
-"      if (kind === 4)\n"
-"        return \"any\";\n"
-"      if (kind === 6) {\n"
-"        questionArgument = rti._primary;\n"
-"        s = A._rtiToString(questionArgument, genericContext);\n"
-"        argumentKind = questionArgument._kind;\n"
-"        return (argumentKind === 11 || argumentKind === 12 ? \"(\" + s + \")\" : s) + \"?\";\n"
-"      }\n"
-"      if (kind === 7)\n"
-"        return \"FutureOr<\" + A._rtiToString(rti._primary, genericContext) + \">\";\n"
-"      if (kind === 8) {\n"
-"        \$name = A._unminifyOrTag(rti._primary);\n"
-"        \$arguments = rti._rest;\n"
-"        return \$arguments.length > 0 ? \$name + (\"<\" + A._rtiArrayToString(\$arguments, genericContext) + \">\") : \$name;\n"
-"      }\n"
-"      if (kind === 10)\n"
-"        return A._recordRtiToString(rti, genericContext);\n"
-"      if (kind === 11)\n"
-"        return A._functionRtiToString(rti, genericContext, null);\n"
-"      if (kind === 12)\n"
-"        return A._functionRtiToString(rti._primary, genericContext, rti._rest);\n"
-"      if (kind === 13) {\n"
-"        t1 = rti._primary;\n"
-"        t2 = genericContext.length;\n"
-"        t1 = t2 - 1 - t1;\n"
-"        if (!(t1 >= 0 && t1 < t2))\n"
-"          return A.ioore(genericContext, t1);\n"
-"        return genericContext[t1];\n"
-"      }\n"
-"      return \"?\";\n"
-"    },\n"
-"    _unminifyOrTag(rawClassName) {\n"
-"      var preserved = A.unmangleGlobalNameIfPreservedAnyways(rawClassName);\n"
-"      if (preserved != null)\n"
-"        return preserved;\n"
-"      return rawClassName;\n"
-"    },\n"
-"    _Universe_findRule(universe, targetType) {\n"
-"      var rule = universe.tR[targetType];\n"
-"      while (typeof rule == \"string\")\n"
-"        rule = universe.tR[rule];\n"
-"      return rule;\n"
-"    },\n"
-"    _Universe_findErasedType(universe, cls) {\n"
-"      var \$length, erased, \$arguments, i, \$interface,\n"
-"        metadata = universe.eT,\n"
-"        probe = metadata[cls];\n"
-"      if (probe == null)\n"
-"        return A._Universe_eval(universe, cls, false);\n"
-"      else if (typeof probe == \"number\") {\n"
-"        \$length = probe;\n"
-"        erased = A._Universe__lookupTerminalRti(universe, 5, \"#\");\n"
-"        \$arguments = A._Utils_newArrayOrEmpty(\$length);\n"
-"        for (i = 0; i < \$length; ++i)\n"
-"          \$arguments[i] = erased;\n"
-"        \$interface = A._Universe__lookupInterfaceRti(universe, cls, \$arguments);\n"
-"        metadata[cls] = \$interface;\n"
-"        return \$interface;\n"
-"      } else\n"
-"        return probe;\n"
-"    },\n"
-"    _Universe_addRules(universe, rules) {\n"
-"      return A._Utils_objectAssign(universe.tR, rules);\n"
-"    },\n"
-"    _Universe_addErasedTypes(universe, types) {\n"
-"      return A._Utils_objectAssign(universe.eT, types);\n"
-"    },\n"
-"    _Universe_eval(universe, recipe, normalize) {\n"
-"      var rti,\n"
-"        cache = universe.eC,\n"
-"        probe = cache.get(recipe);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = A._Universe__parseRecipe(universe, null, recipe, false);\n"
-"      cache.set(recipe, rti);\n"
-"      return rti;\n"
-"    },\n"
-"    _Universe_evalInEnvironment(universe, environment, recipe) {\n"
-"      var probe, rti,\n"
-"        cache = environment._evalCache;\n"
-"      if (cache == null)\n"
-"        cache = environment._evalCache = new Map();\n"
-"      probe = cache.get(recipe);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = A._Universe__parseRecipe(universe, environment, recipe, true);\n"
-"      cache.set(recipe, rti);\n"
-"      return rti;\n"
-"    },\n"
-"    _Universe_bind(universe, environment, argumentsRti) {\n"
-"      var argumentsRecipe, probe, rti,\n"
-"        cache = environment._bindCache;\n"
-"      if (cache == null)\n"
-"        cache = environment._bindCache = new Map();\n"
-"      argumentsRecipe = argumentsRti._canonicalRecipe;\n"
-"      probe = cache.get(argumentsRecipe);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = A._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 9 ? argumentsRti._rest : [argumentsRti]);\n"
-"      cache.set(argumentsRecipe, rti);\n"
-"      return rti;\n"
-"    },\n"
-"    _Universe__parseRecipe(universe, environment, recipe, normalize) {\n"
-"      return A._Parser_parse(A._Parser_create(universe, environment, recipe, normalize));\n"
-"    },\n"
-"    _Universe__installTypeTests(universe, rti) {\n"
-"      rti._as = A._installSpecializedAsCheck;\n"
-"      rti._is = A._installSpecializedIsTest;\n"
-"      return rti;\n"
-"    },\n"
-"    _Universe__lookupTerminalRti(universe, kind, key) {\n"
-"      var rti, t1,\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = kind;\n"
-"      rti._canonicalRecipe = key;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__lookupQuestionRti(universe, baseType, normalize) {\n"
-"      var t1,\n"
-"        key = baseType._canonicalRecipe + \"?\",\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      t1 = A._Universe__createQuestionRti(universe, baseType, key, normalize);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__createQuestionRti(universe, baseType, key, normalize) {\n"
-"      var baseKind, t1, rti;\n"
-"      if (normalize) {\n"
-"        baseKind = baseType._kind;\n"
-"        t1 = true;\n"
-"        if (!A.isTopType(baseType))\n"
-"          if (!(baseType === type\$.Null || baseType === type\$.JSNull))\n"
-"            if (baseKind !== 6)\n"
-"              t1 = baseKind === 7 && A.isNullable(baseType._primary);\n"
-"        if (t1)\n"
-"          return baseType;\n"
-"        else if (baseKind === 1)\n"
-"          return type\$.Null;\n"
-"      }\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 6;\n"
-"      rti._primary = baseType;\n"
-"      rti._canonicalRecipe = key;\n"
-"      return A._Universe__installTypeTests(universe, rti);\n"
-"    },\n"
-"    _Universe__lookupFutureOrRti(universe, baseType, normalize) {\n"
-"      var t1,\n"
-"        key = baseType._canonicalRecipe + \"/\",\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      t1 = A._Universe__createFutureOrRti(universe, baseType, key, normalize);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__createFutureOrRti(universe, baseType, key, normalize) {\n"
-"      var t1, rti;\n"
-"      if (normalize) {\n"
-"        t1 = baseType._kind;\n"
-"        if (A.isTopType(baseType) || baseType === type\$.Object)\n"
-"          return baseType;\n"
-"        else if (t1 === 1)\n"
-"          return A._Universe__lookupInterfaceRti(universe, \"Future\", [baseType]);\n"
-"        else if (baseType === type\$.Null || baseType === type\$.JSNull)\n"
-"          return type\$.nullable_Future_Null;\n"
-"      }\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 7;\n"
-"      rti._primary = baseType;\n"
-"      rti._canonicalRecipe = key;\n"
-"      return A._Universe__installTypeTests(universe, rti);\n"
-"    },\n"
-"    _Universe__lookupGenericFunctionParameterRti(universe, index) {\n"
-"      var rti, t1,\n"
-"        key = \"\" + index + \"^\",\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 13;\n"
-"      rti._primary = index;\n"
-"      rti._canonicalRecipe = key;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__canonicalRecipeJoin(\$arguments) {\n"
-"      var s, sep, i,\n"
-"        \$length = \$arguments.length;\n"
-"      for (s = \"\", sep = \"\", i = 0; i < \$length; ++i, sep = \",\")\n"
-"        s += sep + \$arguments[i]._canonicalRecipe;\n"
-"      return s;\n"
-"    },\n"
-"    _Universe__canonicalRecipeJoinNamed(\$arguments) {\n"
-"      var s, sep, i, t1, nameSep,\n"
-"        \$length = \$arguments.length;\n"
-"      for (s = \"\", sep = \"\", i = 0; i < \$length; i += 3, sep = \",\") {\n"
-"        t1 = \$arguments[i];\n"
-"        nameSep = \$arguments[i + 1] ? \"!\" : \":\";\n"
-"        s += sep + t1 + nameSep + \$arguments[i + 2]._canonicalRecipe;\n"
-"      }\n"
-"      return s;\n"
-"    },\n"
-"    _Universe__lookupInterfaceRti(universe, \$name, \$arguments) {\n"
-"      var probe, rti, t1,\n"
-"        s = \$name;\n"
-"      if (\$arguments.length > 0)\n"
-"        s += \"<\" + A._Universe__canonicalRecipeJoin(\$arguments) + \">\";\n"
-"      probe = universe.eC.get(s);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 8;\n"
-"      rti._primary = \$name;\n"
-"      rti._rest = \$arguments;\n"
-"      if (\$arguments.length > 0)\n"
-"        rti._precomputed1 = \$arguments[0];\n"
-"      rti._canonicalRecipe = s;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(s, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__lookupBindingRti(universe, base, \$arguments) {\n"
-"      var newBase, newArguments, key, probe, rti, t1;\n"
-"      if (base._kind === 9) {\n"
-"        newBase = base._primary;\n"
-"        newArguments = base._rest.concat(\$arguments);\n"
-"      } else {\n"
-"        newArguments = \$arguments;\n"
-"        newBase = base;\n"
-"      }\n"
-"      key = newBase._canonicalRecipe + (\";<\" + A._Universe__canonicalRecipeJoin(newArguments) + \">\");\n"
-"      probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 9;\n"
-"      rti._primary = newBase;\n"
-"      rti._rest = newArguments;\n"
-"      rti._canonicalRecipe = key;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__lookupRecordRti(universe, partialShapeTag, fields) {\n"
-"      var rti, t1,\n"
-"        key = \"+\" + (partialShapeTag + \"(\" + A._Universe__canonicalRecipeJoin(fields) + \")\"),\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 10;\n"
-"      rti._primary = partialShapeTag;\n"
-"      rti._rest = fields;\n"
-"      rti._canonicalRecipe = key;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__lookupFunctionRti(universe, returnType, parameters) {\n"
-"      var sep, key, probe, rti, t1,\n"
-"        s = returnType._canonicalRecipe,\n"
-"        requiredPositional = parameters._requiredPositional,\n"
-"        requiredPositionalLength = requiredPositional.length,\n"
-"        optionalPositional = parameters._optionalPositional,\n"
-"        optionalPositionalLength = optionalPositional.length,\n"
-"        named = parameters._named,\n"
-"        namedLength = named.length,\n"
-"        recipe = \"(\" + A._Universe__canonicalRecipeJoin(requiredPositional);\n"
-"      if (optionalPositionalLength > 0) {\n"
-"        sep = requiredPositionalLength > 0 ? \",\" : \"\";\n"
-"        recipe += sep + \"[\" + A._Universe__canonicalRecipeJoin(optionalPositional) + \"]\";\n"
-"      }\n"
-"      if (namedLength > 0) {\n"
-"        sep = requiredPositionalLength > 0 ? \",\" : \"\";\n"
-"        recipe += sep + \"{\" + A._Universe__canonicalRecipeJoinNamed(named) + \"}\";\n"
-"      }\n"
-"      key = s + (recipe + \")\");\n"
-"      probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 11;\n"
-"      rti._primary = returnType;\n"
-"      rti._rest = parameters;\n"
-"      rti._canonicalRecipe = key;\n"
-"      t1 = A._Universe__installTypeTests(universe, rti);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__lookupGenericFunctionRti(universe, baseFunctionType, bounds, normalize) {\n"
-"      var t1,\n"
-"        key = baseFunctionType._canonicalRecipe + (\"<\" + A._Universe__canonicalRecipeJoin(bounds) + \">\"),\n"
-"        probe = universe.eC.get(key);\n"
-"      if (probe != null)\n"
-"        return probe;\n"
-"      t1 = A._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize);\n"
-"      universe.eC.set(key, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    _Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize) {\n"
-"      var \$length, typeArguments, count, i, bound, substitutedBase, substitutedBounds, rti;\n"
-"      if (normalize) {\n"
-"        \$length = bounds.length;\n"
-"        typeArguments = A._Utils_newArrayOrEmpty(\$length);\n"
-"        for (count = 0, i = 0; i < \$length; ++i) {\n"
-"          bound = bounds[i];\n"
-"          if (bound._kind === 1) {\n"
-"            typeArguments[i] = bound;\n"
-"            ++count;\n"
-"          }\n"
-"        }\n"
-"        if (count > 0) {\n"
-"          substitutedBase = A._substitute(universe, baseFunctionType, typeArguments, 0);\n"
-"          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, 0);\n"
-"          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds);\n"
-"        }\n"
-"      }\n"
-"      rti = new A.Rti(null, null);\n"
-"      rti._kind = 12;\n"
-"      rti._primary = baseFunctionType;\n"
-"      rti._rest = bounds;\n"
-"      rti._canonicalRecipe = key;\n"
-"      return A._Universe__installTypeTests(universe, rti);\n"
-"    },\n"
-"    _Parser_create(universe, environment, recipe, normalize) {\n"
-"      return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize};\n"
-"    },\n"
-"    _Parser_parse(parser) {\n"
-"      var t1, i, ch, u, array, end, item,\n"
-"        source = parser.r,\n"
-"        stack = parser.s;\n"
-"      for (t1 = source.length, i = 0; i < t1;) {\n"
-"        ch = source.charCodeAt(i);\n"
-"        if (ch >= 48 && ch <= 57)\n"
-"          i = A._Parser_handleDigit(i + 1, ch, source, stack);\n"
-"        else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124)\n"
-"          i = A._Parser_handleIdentifier(parser, i, source, stack, false);\n"
-"        else if (ch === 46)\n"
-"          i = A._Parser_handleIdentifier(parser, i, source, stack, true);\n"
-"        else {\n"
-"          ++i;\n"
-"          switch (ch) {\n"
-"            case 44:\n"
-"              break;\n"
-"            case 58:\n"
-"              stack.push(false);\n"
-"              break;\n"
-"            case 33:\n"
-"              stack.push(true);\n"
-"              break;\n"
-"            case 59:\n"
-"              stack.push(A._Parser_toType(parser.u, parser.e, stack.pop()));\n"
-"              break;\n"
-"            case 94:\n"
-"              stack.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, stack.pop()));\n"
-"              break;\n"
-"            case 35:\n"
-"              stack.push(A._Universe__lookupTerminalRti(parser.u, 5, \"#\"));\n"
-"              break;\n"
-"            case 64:\n"
-"              stack.push(A._Universe__lookupTerminalRti(parser.u, 2, \"@\"));\n"
-"              break;\n"
-"            case 126:\n"
-"              stack.push(A._Universe__lookupTerminalRti(parser.u, 3, \"~\"));\n"
-"              break;\n"
-"            case 60:\n"
-"              stack.push(parser.p);\n"
-"              parser.p = stack.length;\n"
-"              break;\n"
-"            case 62:\n"
-"              A._Parser_handleTypeArguments(parser, stack);\n"
-"              break;\n"
-"            case 38:\n"
-"              A._Parser_handleExtendedOperations(parser, stack);\n"
-"              break;\n"
-"            case 63:\n"
-"              u = parser.u;\n"
-"              stack.push(A._Universe__lookupQuestionRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n));\n"
-"              break;\n"
-"            case 47:\n"
-"              u = parser.u;\n"
-"              stack.push(A._Universe__lookupFutureOrRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n));\n"
-"              break;\n"
-"            case 40:\n"
-"              stack.push(-3);\n"
-"              stack.push(parser.p);\n"
-"              parser.p = stack.length;\n"
-"              break;\n"
-"            case 41:\n"
-"              A._Parser_handleArguments(parser, stack);\n"
-"              break;\n"
-"            case 91:\n"
-"              stack.push(parser.p);\n"
-"              parser.p = stack.length;\n"
-"              break;\n"
-"            case 93:\n"
-"              array = stack.splice(parser.p);\n"
-"              A._Parser_toTypes(parser.u, parser.e, array);\n"
-"              parser.p = stack.pop();\n"
-"              stack.push(array);\n"
-"              stack.push(-1);\n"
-"              break;\n"
-"            case 123:\n"
-"              stack.push(parser.p);\n"
-"              parser.p = stack.length;\n"
-"              break;\n"
-"            case 125:\n"
-"              array = stack.splice(parser.p);\n"
-"              A._Parser_toTypesNamed(parser.u, parser.e, array);\n"
-"              parser.p = stack.pop();\n"
-"              stack.push(array);\n"
-"              stack.push(-2);\n"
-"              break;\n"
-"            case 43:\n"
-"              end = source.indexOf(\"(\", i);\n"
-"              stack.push(source.substring(i, end));\n"
-"              stack.push(-4);\n"
-"              stack.push(parser.p);\n"
-"              parser.p = stack.length;\n"
-"              i = end + 1;\n"
-"              break;\n"
-"            default:\n"
-"              throw \"Bad character \" + ch;\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      item = stack.pop();\n"
-"      return A._Parser_toType(parser.u, parser.e, item);\n"
-"    },\n"
-"    _Parser_handleDigit(i, digit, source, stack) {\n"
-"      var t1, ch,\n"
-"        value = digit - 48;\n"
-"      for (t1 = source.length; i < t1; ++i) {\n"
-"        ch = source.charCodeAt(i);\n"
-"        if (!(ch >= 48 && ch <= 57))\n"
-"          break;\n"
-"        value = value * 10 + (ch - 48);\n"
-"      }\n"
-"      stack.push(value);\n"
-"      return i;\n"
-"    },\n"
-"    _Parser_handleIdentifier(parser, start, source, stack, hasPeriod) {\n"
-"      var t1, ch, t2, string, environment, recipe,\n"
-"        i = start + 1;\n"
-"      for (t1 = source.length; i < t1; ++i) {\n"
-"        ch = source.charCodeAt(i);\n"
-"        if (ch === 46) {\n"
-"          if (hasPeriod)\n"
-"            break;\n"
-"          hasPeriod = true;\n"
-"        } else {\n"
-"          if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124))\n"
-"            t2 = ch >= 48 && ch <= 57;\n"
-"          else\n"
-"            t2 = true;\n"
-"          if (!t2)\n"
-"            break;\n"
-"        }\n"
-"      }\n"
-"      string = source.substring(start, i);\n"
-"      if (hasPeriod) {\n"
-"        t1 = parser.u;\n"
-"        environment = parser.e;\n"
-"        if (environment._kind === 9)\n"
-"          environment = environment._primary;\n"
-"        recipe = A._Universe_findRule(t1, environment._primary)[string];\n"
-"        if (recipe == null)\n"
-"          A.throwExpression('No \"' + string + '\" in \"' + A.Rti__getCanonicalRecipe(environment) + '\"');\n"
-"        stack.push(A._Universe_evalInEnvironment(t1, environment, recipe));\n"
-"      } else\n"
-"        stack.push(string);\n"
-"      return i;\n"
-"    },\n"
-"    _Parser_handleTypeArguments(parser, stack) {\n"
-"      var base,\n"
-"        universe = parser.u,\n"
-"        \$arguments = A._Parser_collectArray(parser, stack),\n"
-"        head = stack.pop();\n"
-"      if (typeof head == \"string\")\n"
-"        stack.push(A._Universe__lookupInterfaceRti(universe, head, \$arguments));\n"
-"      else {\n"
-"        base = A._Parser_toType(universe, parser.e, head);\n"
-"        switch (base._kind) {\n"
-"          case 11:\n"
-"            stack.push(A._Universe__lookupGenericFunctionRti(universe, base, \$arguments, parser.n));\n"
-"            break;\n"
-"          default:\n"
-"            stack.push(A._Universe__lookupBindingRti(universe, base, \$arguments));\n"
-"            break;\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    _Parser_handleArguments(parser, stack) {\n"
-"      var requiredPositional, returnType, parameters,\n"
-"        universe = parser.u,\n"
-"        head = stack.pop(),\n"
-"        optionalPositional = null, named = null;\n"
-"      if (typeof head == \"number\")\n"
-"        switch (head) {\n"
-"          case -1:\n"
-"            optionalPositional = stack.pop();\n"
-"            break;\n"
-"          case -2:\n"
-"            named = stack.pop();\n"
-"            break;\n"
-"          default:\n"
-"            stack.push(head);\n"
-"            break;\n"
-"        }\n"
-"      else\n"
-"        stack.push(head);\n"
-"      requiredPositional = A._Parser_collectArray(parser, stack);\n"
-"      head = stack.pop();\n"
-"      switch (head) {\n"
-"        case -3:\n"
-"          head = stack.pop();\n"
-"          if (optionalPositional == null)\n"
-"            optionalPositional = universe.sEA;\n"
-"          if (named == null)\n"
-"            named = universe.sEA;\n"
-"          returnType = A._Parser_toType(universe, parser.e, head);\n"
-"          parameters = new A._FunctionParameters();\n"
-"          parameters._requiredPositional = requiredPositional;\n"
-"          parameters._optionalPositional = optionalPositional;\n"
-"          parameters._named = named;\n"
-"          stack.push(A._Universe__lookupFunctionRti(universe, returnType, parameters));\n"
-"          return;\n"
-"        case -4:\n"
-"          stack.push(A._Universe__lookupRecordRti(universe, stack.pop(), requiredPositional));\n"
-"          return;\n"
-"        default:\n"
-"          throw A.wrapException(A.AssertionError\$(\"Unexpected state under `()`: \" + A.S(head)));\n"
-"      }\n"
-"    },\n"
-"    _Parser_handleExtendedOperations(parser, stack) {\n"
-"      var \$top = stack.pop();\n"
-"      if (0 === \$top) {\n"
-"        stack.push(A._Universe__lookupTerminalRti(parser.u, 1, \"0&\"));\n"
-"        return;\n"
-"      }\n"
-"      if (1 === \$top) {\n"
-"        stack.push(A._Universe__lookupTerminalRti(parser.u, 4, \"1&\"));\n"
-"        return;\n"
-"      }\n"
-"      throw A.wrapException(A.AssertionError\$(\"Unexpected extended operation \" + A.S(\$top)));\n"
-"    },\n"
-"    _Parser_collectArray(parser, stack) {\n"
-"      var array = stack.splice(parser.p);\n"
-"      A._Parser_toTypes(parser.u, parser.e, array);\n"
-"      parser.p = stack.pop();\n"
-"      return array;\n"
-"    },\n"
-"    _Parser_toType(universe, environment, item) {\n"
-"      if (typeof item == \"string\")\n"
-"        return A._Universe__lookupInterfaceRti(universe, item, universe.sEA);\n"
-"      else if (typeof item == \"number\") {\n"
-"        environment.toString;\n"
-"        return A._Parser_indexToType(universe, environment, item);\n"
-"      } else\n"
-"        return item;\n"
-"    },\n"
-"    _Parser_toTypes(universe, environment, items) {\n"
-"      var i,\n"
-"        \$length = items.length;\n"
-"      for (i = 0; i < \$length; ++i)\n"
-"        items[i] = A._Parser_toType(universe, environment, items[i]);\n"
-"    },\n"
-"    _Parser_toTypesNamed(universe, environment, items) {\n"
-"      var i,\n"
-"        \$length = items.length;\n"
-"      for (i = 2; i < \$length; i += 3)\n"
-"        items[i] = A._Parser_toType(universe, environment, items[i]);\n"
-"    },\n"
-"    _Parser_indexToType(universe, environment, index) {\n"
-"      var typeArguments, len,\n"
-"        kind = environment._kind;\n"
-"      if (kind === 9) {\n"
-"        if (index === 0)\n"
-"          return environment._primary;\n"
-"        typeArguments = environment._rest;\n"
-"        len = typeArguments.length;\n"
-"        if (index <= len)\n"
-"          return typeArguments[index - 1];\n"
-"        index -= len;\n"
-"        environment = environment._primary;\n"
-"        kind = environment._kind;\n"
-"      } else if (index === 0)\n"
-"        return environment;\n"
-"      if (kind !== 8)\n"
-"        throw A.wrapException(A.AssertionError\$(\"Indexed base must be an interface type\"));\n"
-"      typeArguments = environment._rest;\n"
-"      if (index <= typeArguments.length)\n"
-"        return typeArguments[index - 1];\n"
-"      throw A.wrapException(A.AssertionError\$(\"Bad index \" + index + \" for \" + environment.toString\$0(0)));\n"
-"    },\n"
-"    isSubtype(universe, s, t) {\n"
-"      var result,\n"
-"        sCache = s._isSubtypeCache;\n"
-"      if (sCache == null)\n"
-"        sCache = s._isSubtypeCache = new Map();\n"
-"      result = sCache.get(t);\n"
-"      if (result == null) {\n"
-"        result = A._isSubtype(universe, s, null, t, null);\n"
-"        sCache.set(t, result);\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    _isSubtype(universe, s, sEnv, t, tEnv) {\n"
-"      var sKind, leftTypeVariable, tKind, t1, t2, sBounds, tBounds, sLength, i, sBound, tBound;\n"
-"      if (s === t)\n"
-"        return true;\n"
-"      if (A.isTopType(t))\n"
-"        return true;\n"
-"      sKind = s._kind;\n"
-"      if (sKind === 4)\n"
-"        return true;\n"
-"      if (A.isTopType(s))\n"
-"        return false;\n"
-"      if (s._kind === 1)\n"
-"        return true;\n"
-"      leftTypeVariable = sKind === 13;\n"
-"      if (leftTypeVariable)\n"
-"        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))\n"
-"          return true;\n"
-"      tKind = t._kind;\n"
-"      t1 = type\$.Null;\n"
-"      if (s === t1 || s === type\$.JSNull) {\n"
-"        if (tKind === 7)\n"
-"          return A._isSubtype(universe, s, sEnv, t._primary, tEnv);\n"
-"        return t === t1 || t === type\$.JSNull || tKind === 6;\n"
-"      }\n"
-"      if (t === type\$.Object) {\n"
-"        if (sKind === 7)\n"
-"          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);\n"
-"        return sKind !== 6;\n"
-"      }\n"
-"      if (sKind === 7) {\n"
-"        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv))\n"
-"          return false;\n"
-"        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);\n"
-"      }\n"
-"      if (sKind === 6)\n"
-"        return A._isSubtype(universe, t1, sEnv, t, tEnv) && A._isSubtype(universe, s._primary, sEnv, t, tEnv);\n"
-"      if (tKind === 7) {\n"
-"        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv))\n"
-"          return true;\n"
-"        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv);\n"
-"      }\n"
-"      if (tKind === 6)\n"
-"        return A._isSubtype(universe, s, sEnv, t1, tEnv) || A._isSubtype(universe, s, sEnv, t._primary, tEnv);\n"
-"      if (leftTypeVariable)\n"
-"        return false;\n"
-"      t1 = sKind !== 11;\n"
-"      if ((!t1 || sKind === 12) && t === type\$.Function)\n"
-"        return true;\n"
-"      t2 = sKind === 10;\n"
-"      if (t2 && t === type\$.Record)\n"
-"        return true;\n"
-"      if (tKind === 12) {\n"
-"        if (s === type\$.JavaScriptFunction)\n"
-"          return true;\n"
-"        if (sKind !== 12)\n"
-"          return false;\n"
-"        sBounds = s._rest;\n"
-"        tBounds = t._rest;\n"
-"        sLength = sBounds.length;\n"
-"        if (sLength !== tBounds.length)\n"
-"          return false;\n"
-"        sEnv = sEnv == null ? sBounds : sBounds.concat(sEnv);\n"
-"        tEnv = tEnv == null ? tBounds : tBounds.concat(tEnv);\n"
-"        for (i = 0; i < sLength; ++i) {\n"
-"          sBound = sBounds[i];\n"
-"          tBound = tBounds[i];\n"
-"          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv))\n"
-"            return false;\n"
-"        }\n"
-"        return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv);\n"
-"      }\n"
-"      if (tKind === 11) {\n"
-"        if (s === type\$.JavaScriptFunction)\n"
-"          return true;\n"
-"        if (t1)\n"
-"          return false;\n"
-"        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv);\n"
-"      }\n"
-"      if (sKind === 8) {\n"
-"        if (tKind !== 8)\n"
-"          return false;\n"
-"        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv);\n"
-"      }\n"
-"      if (t2 && tKind === 10)\n"
-"        return A._isRecordSubtype(universe, s, sEnv, t, tEnv);\n"
-"      return false;\n"
-"    },\n"
-"    _isFunctionSubtype(universe, s, sEnv, t, tEnv) {\n"
-"      var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;\n"
-"      if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))\n"
-"        return false;\n"
-"      sParameters = s._rest;\n"
-"      tParameters = t._rest;\n"
-"      sRequiredPositional = sParameters._requiredPositional;\n"
-"      tRequiredPositional = tParameters._requiredPositional;\n"
-"      sRequiredPositionalLength = sRequiredPositional.length;\n"
-"      tRequiredPositionalLength = tRequiredPositional.length;\n"
-"      if (sRequiredPositionalLength > tRequiredPositionalLength)\n"
-"        return false;\n"
-"      requiredPositionalDelta = tRequiredPositionalLength - sRequiredPositionalLength;\n"
-"      sOptionalPositional = sParameters._optionalPositional;\n"
-"      tOptionalPositional = tParameters._optionalPositional;\n"
-"      sOptionalPositionalLength = sOptionalPositional.length;\n"
-"      tOptionalPositionalLength = tOptionalPositional.length;\n"
-"      if (sRequiredPositionalLength + sOptionalPositionalLength < tRequiredPositionalLength + tOptionalPositionalLength)\n"
-"        return false;\n"
-"      for (i = 0; i < sRequiredPositionalLength; ++i) {\n"
-"        t1 = sRequiredPositional[i];\n"
-"        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))\n"
-"          return false;\n"
-"      }\n"
-"      for (i = 0; i < requiredPositionalDelta; ++i) {\n"
-"        t1 = sOptionalPositional[i];\n"
-"        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))\n"
-"          return false;\n"
-"      }\n"
-"      for (i = 0; i < tOptionalPositionalLength; ++i) {\n"
-"        t1 = sOptionalPositional[requiredPositionalDelta + i];\n"
-"        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))\n"
-"          return false;\n"
-"      }\n"
-"      sNamed = sParameters._named;\n"
-"      tNamed = tParameters._named;\n"
-"      sNamedLength = sNamed.length;\n"
-"      tNamedLength = tNamed.length;\n"
-"      for (sIndex = 0, tIndex = 0; tIndex < tNamedLength; tIndex += 3) {\n"
-"        tName = tNamed[tIndex];\n"
-"        for (;;) {\n"
-"          if (sIndex >= sNamedLength)\n"
-"            return false;\n"
-"          sName = sNamed[sIndex];\n"
-"          sIndex += 3;\n"
-"          if (tName < sName)\n"
-"            return false;\n"
-"          sIsRequired = sNamed[sIndex - 2];\n"
-"          if (sName < tName) {\n"
-"            if (sIsRequired)\n"
-"              return false;\n"
-"            continue;\n"
-"          }\n"
-"          t1 = tNamed[tIndex + 1];\n"
-"          if (sIsRequired && !t1)\n"
-"            return false;\n"
-"          t1 = sNamed[sIndex - 1];\n"
-"          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))\n"
-"            return false;\n"
-"          break;\n"
-"        }\n"
-"      }\n"
-"      while (sIndex < sNamedLength) {\n"
-"        if (sNamed[sIndex + 1])\n"
-"          return false;\n"
-"        sIndex += 3;\n"
-"      }\n"
-"      return true;\n"
-"    },\n"
-"    _isInterfaceSubtype(universe, s, sEnv, t, tEnv) {\n"
-"      var rule, recipes, \$length, supertypeArgs, i,\n"
-"        sName = s._primary,\n"
-"        tName = t._primary;\n"
-"      while (sName !== tName) {\n"
-"        rule = universe.tR[sName];\n"
-"        if (rule == null)\n"
-"          return false;\n"
-"        if (typeof rule == \"string\") {\n"
-"          sName = rule;\n"
-"          continue;\n"
-"        }\n"
-"        recipes = rule[tName];\n"
-"        if (recipes == null)\n"
-"          return false;\n"
-"        \$length = recipes.length;\n"
-"        supertypeArgs = \$length > 0 ? new Array(\$length) : init.typeUniverse.sEA;\n"
-"        for (i = 0; i < \$length; ++i)\n"
-"          supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]);\n"
-"        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv);\n"
-"      }\n"
-"      return A._areArgumentsSubtypes(universe, s._rest, null, sEnv, t._rest, tEnv);\n"
-"    },\n"
-"    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) {\n"
-"      var i,\n"
-"        \$length = sArgs.length;\n"
-"      for (i = 0; i < \$length; ++i)\n"
-"        if (!A._isSubtype(universe, sArgs[i], sEnv, tArgs[i], tEnv))\n"
-"          return false;\n"
-"      return true;\n"
-"    },\n"
-"    _isRecordSubtype(universe, s, sEnv, t, tEnv) {\n"
-"      var i,\n"
-"        sFields = s._rest,\n"
-"        tFields = t._rest,\n"
-"        sCount = sFields.length;\n"
-"      if (sCount !== tFields.length)\n"
-"        return false;\n"
-"      if (s._primary !== t._primary)\n"
-"        return false;\n"
-"      for (i = 0; i < sCount; ++i)\n"
-"        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv))\n"
-"          return false;\n"
-"      return true;\n"
-"    },\n"
-"    isNullable(t) {\n"
-"      var kind = t._kind,\n"
-"        t1 = true;\n"
-"      if (!(t === type\$.Null || t === type\$.JSNull))\n"
-"        if (!A.isTopType(t))\n"
-"          if (kind !== 6)\n"
-"            t1 = kind === 7 && A.isNullable(t._primary);\n"
-"      return t1;\n"
-"    },\n"
-"    isTopType(t) {\n"
-"      var kind = t._kind;\n"
-"      return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type\$.nullable_Object;\n"
-"    },\n"
-"    _Utils_objectAssign(o, other) {\n"
-"      var i, key,\n"
-"        keys = Object.keys(other),\n"
-"        \$length = keys.length;\n"
-"      for (i = 0; i < \$length; ++i) {\n"
-"        key = keys[i];\n"
-"        o[key] = other[key];\n"
-"      }\n"
-"    },\n"
-"    _Utils_newArrayOrEmpty(\$length) {\n"
-"      return \$length > 0 ? new Array(\$length) : init.typeUniverse.sEA;\n"
-"    },\n"
-"    Rti: function Rti(t0, t1) {\n"
-"      var _ = this;\n"
-"      _._as = t0;\n"
-"      _._is = t1;\n"
-"      _._cachedRuntimeType = _._specializedTestResource = _._isSubtypeCache = _._precomputed1 = null;\n"
-"      _._kind = 0;\n"
-"      _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null;\n"
-"    },\n"
-"    _FunctionParameters: function _FunctionParameters() {\n"
-"      this._named = this._optionalPositional = this._requiredPositional = null;\n"
-"    },\n"
-"    _Type: function _Type(t0) {\n"
-"      this._rti = t0;\n"
-"    },\n"
-"    _Error: function _Error() {\n"
-"    },\n"
-"    _TypeError: function _TypeError(t0) {\n"
-"      this.__rti\$_message = t0;\n"
-"    },\n"
-"    _AsyncRun__initializeScheduleImmediate() {\n"
-"      var t1, div, span;\n"
-"      if (self.scheduleImmediate != null)\n"
-"        return A.async__AsyncRun__scheduleImmediateJsOverride\$closure();\n"
-"      if (self.MutationObserver != null && self.document != null) {\n"
-"        t1 = {};\n"
-"        div = self.document.createElement(\"div\");\n"
-"        span = self.document.createElement(\"span\");\n"
-"        t1.storedCallback = null;\n"
-"        new self.MutationObserver(A.convertDartClosureToJS(new A._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});\n"
-"        return new A._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);\n"
-"      } else if (self.setImmediate != null)\n"
-"        return A.async__AsyncRun__scheduleImmediateWithSetImmediate\$closure();\n"
-"      return A.async__AsyncRun__scheduleImmediateWithTimer\$closure();\n"
-"    },\n"
-"    _AsyncRun__scheduleImmediateJsOverride(callback) {\n"
-"      self.scheduleImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateJsOverride_internalCallback(type\$.void_Function._as(callback)), 0));\n"
-"    },\n"
-"    _AsyncRun__scheduleImmediateWithSetImmediate(callback) {\n"
-"      self.setImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(type\$.void_Function._as(callback)), 0));\n"
-"    },\n"
-"    _AsyncRun__scheduleImmediateWithTimer(callback) {\n"
-"      A.Timer__createTimer(B.Duration_0, type\$.void_Function._as(callback));\n"
-"    },\n"
-"    Timer__createTimer(duration, callback) {\n"
-"      var milliseconds = B.JSInt_methods._tdivFast\$1(duration.inMicroseconds, 1000);\n"
-"      return A._TimerImpl\$(milliseconds < 0 ? 0 : milliseconds, callback);\n"
-"    },\n"
-"    _TimerImpl\$(milliseconds, callback) {\n"
-"      var t1 = new A._TimerImpl();\n"
-"      t1._TimerImpl\$2(milliseconds, callback);\n"
-"      return t1;\n"
-"    },\n"
-"    _makeAsyncAwaitCompleter(\$T) {\n"
-"      return new A._AsyncAwaitCompleter(new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\")), \$T._eval\$1(\"_AsyncAwaitCompleter<0>\"));\n"
-"    },\n"
-"    _asyncStartSync(bodyFunction, completer) {\n"
-"      bodyFunction.call\$2(0, null);\n"
-"      completer.isSync = true;\n"
-"      return completer._future;\n"
-"    },\n"
-"    _asyncAwait(object, bodyFunction) {\n"
-"      A._awaitOnObject(object, bodyFunction);\n"
-"    },\n"
-"    _asyncReturn(object, completer) {\n"
-"      completer.complete\$1(object);\n"
-"    },\n"
-"    _asyncRethrow(object, completer) {\n"
-"      completer.completeError\$2(A.unwrapException(object), A.getTraceFromException(object));\n"
-"    },\n"
-"    _awaitOnObject(object, bodyFunction) {\n"
-"      var t1, future,\n"
-"        thenCallback = new A._awaitOnObject_closure(bodyFunction),\n"
-"        errorCallback = new A._awaitOnObject_closure0(bodyFunction);\n"
-"      if (object instanceof A._Future)\n"
-"        object._thenAwait\$1\$2(thenCallback, errorCallback, type\$.dynamic);\n"
-"      else {\n"
-"        t1 = type\$.dynamic;\n"
-"        if (object instanceof A._Future)\n"
-"          object.then\$1\$2\$onError(thenCallback, errorCallback, t1);\n"
-"        else {\n"
-"          future = new A._Future(\$.Zone__current, type\$._Future_dynamic);\n"
-"          future._state = 8;\n"
-"          future._resultOrListeners = object;\n"
-"          future._thenAwait\$1\$2(thenCallback, errorCallback, t1);\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    _wrapJsFunctionForAsync(\$function) {\n"
-"      var \$protected = function(fn, ERROR) {\n"
-"          return function(errorCode, result) {\n"
-"            while (true) {\n"
-"              try {\n"
-"                fn(errorCode, result);\n"
-"                break;\n"
-"              } catch (error) {\n"
-"                result = error;\n"
-"                errorCode = ERROR;\n"
-"              }\n"
-"            }\n"
-"          };\n"
-"        }(\$function, 1),\n"
-"        t1 = \$.Zone__current;\n"
-"      return t1._registerBinaryCallbackZoned\$3\$2(t1, type\$.void_Function_int_dynamic._as(new A._wrapJsFunctionForAsync_closure(\$protected)), type\$.void, type\$.int, type\$.dynamic);\n"
-"    },\n"
-"    AsyncError_defaultStackTrace(error) {\n"
-"      var stackTrace;\n"
-"      if (type\$.Error._is(error)) {\n"
-"        stackTrace = error.get\$stackTrace();\n"
-"        if (stackTrace != null)\n"
-"          return stackTrace;\n"
-"      }\n"
-"      return B._StringStackTrace_OdL;\n"
-"    },\n"
-"    Future_Future\$microtask(computation, \$T) {\n"
-"      var result = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\"));\n"
-"      A.scheduleMicrotask(new A.Future_Future\$microtask_closure(computation, result));\n"
-"      return result;\n"
-"    },\n"
-"    Future_Future\$sync(computation, \$T) {\n"
-"      var error, stackTrace, exception, t1, t2, t3, t4, result = null;\n"
-"      try {\n"
-"        result = computation.call\$0();\n"
-"      } catch (exception) {\n"
-"        error = A.unwrapException(exception);\n"
-"        stackTrace = A.getTraceFromException(exception);\n"
-"        t1 = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\"));\n"
-"        t2 = error;\n"
-"        t3 = stackTrace;\n"
-"        t4 = A._interceptError(t2, t3);\n"
-"        if (t4 == null)\n"
-"          t2 = new A.AsyncError(t2, t3 == null ? A.AsyncError_defaultStackTrace(t2) : t3);\n"
-"        else\n"
-"          t2 = t4;\n"
-"        t1._asyncCompleteErrorObject\$1(t2);\n"
-"        return t1;\n"
-"      }\n"
-"      return \$T._eval\$1(\"Future<0>\")._is(result) ? result : A._Future\$value(result, \$T);\n"
-"    },\n"
-"    Future_Future\$value(value, \$T) {\n"
-"      var t1 = value == null ? \$T._as(value) : value,\n"
-"        t2 = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\"));\n"
-"      t2._asyncComplete\$1(t1);\n"
-"      return t2;\n"
-"    },\n"
-"    Future_Future\$delayed(duration, \$T) {\n"
-"      var result;\n"
-"      if (!\$T._is(null))\n"
-"        throw A.wrapException(A.ArgumentError\$value(null, \"computation\", \"The type parameter is not nullable\"));\n"
-"      result = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\"));\n"
-"      A.Timer_Timer(duration, new A.Future_Future\$delayed_closure(null, result, \$T));\n"
-"      return result;\n"
-"    },\n"
-"    Completer_Completer(\$T) {\n"
-"      return new A._AsyncCompleter(new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\")), \$T._eval\$1(\"_AsyncCompleter<0>\"));\n"
-"    },\n"
-"    _interceptError(error, stackTrace) {\n"
-"      var replacement, t1, t2,\n"
-"        zone = \$.Zone__current;\n"
-"      if (zone === B.Zone_jYP)\n"
-"        return null;\n"
-"      replacement = zone._errorCallbackZoned\$3(zone, error, stackTrace);\n"
-"      if (replacement == null)\n"
-"        return null;\n"
-"      t1 = replacement.error;\n"
-"      t2 = replacement.stackTrace;\n"
-"      if (type\$.Error._is(t1))\n"
-"        A.Primitives_trySetStackTrace(t1, t2);\n"
-"      return replacement;\n"
-"    },\n"
-"    _interceptUserError(error, stackTrace) {\n"
-"      var replacement;\n"
-"      if (\$.Zone__current !== B.Zone_jYP) {\n"
-"        replacement = A._interceptError(error, stackTrace);\n"
-"        if (replacement != null)\n"
-"          return replacement;\n"
-"      }\n"
-"      if (stackTrace == null)\n"
-"        if (type\$.Error._is(error)) {\n"
-"          stackTrace = error.get\$stackTrace();\n"
-"          if (stackTrace == null) {\n"
-"            A.Primitives_trySetStackTrace(error, B._StringStackTrace_OdL);\n"
-"            stackTrace = B._StringStackTrace_OdL;\n"
-"          }\n"
-"        } else\n"
-"          stackTrace = B._StringStackTrace_OdL;\n"
-"      else if (type\$.Error._is(error))\n"
-"        A.Primitives_trySetStackTrace(error, stackTrace);\n"
-"      return new A.AsyncError(error, stackTrace);\n"
-"    },\n"
-"    _Future\$value(value, \$T) {\n"
-"      var t1 = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\"));\n"
-"      \$T._as(value);\n"
-"      t1._state = 8;\n"
-"      t1._resultOrListeners = value;\n"
-"      return t1;\n"
-"    },\n"
-"    _Future__chainCoreFuture(source, target, sync) {\n"
-"      var t2, t3, ignoreError, listeners, targetZone, _box_0 = {},\n"
-"        t1 = _box_0.source = source;\n"
-"      for (t2 = type\$._Future_dynamic; t3 = t1._state, (t3 & 4) !== 0; t1 = source) {\n"
-"        source = t2._as(t1._resultOrListeners);\n"
-"        _box_0.source = source;\n"
-"      }\n"
-"      if (t1 === target) {\n"
-"        t2 = A.StackTrace_current();\n"
-"        target._asyncCompleteErrorObject\$1(new A.AsyncError(new A.ArgumentError(true, t1, null, \"Cannot complete a future with itself\"), t2));\n"
-"        return;\n"
-"      }\n"
-"      ignoreError = target._state & 1;\n"
-"      t2 = t1._state = t3 | ignoreError;\n"
-"      if ((t2 & 24) === 0) {\n"
-"        listeners = type\$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners);\n"
-"        target._state = target._state & 1 | 4;\n"
-"        target._resultOrListeners = t1;\n"
-"        t1._prependListeners\$1(listeners);\n"
-"        return;\n"
-"      }\n"
-"      if (!sync)\n"
-"        if (target._resultOrListeners == null)\n"
-"          t1 = (t2 & 16) === 0 || ignoreError !== 0;\n"
-"        else\n"
-"          t1 = false;\n"
-"      else\n"
-"        t1 = true;\n"
-"      if (t1) {\n"
-"        listeners = target._removeListeners\$0();\n"
-"        target._cloneResult\$1(_box_0.source);\n"
-"        A._Future__propagateToListeners(target, listeners);\n"
-"        return;\n"
-"      }\n"
-"      target._state ^= 2;\n"
-"      targetZone = target._zone;\n"
-"      targetZone._scheduleMicrotaskZoned\$2(targetZone, new A._Future__chainCoreFuture_closure(_box_0, target));\n"
-"    },\n"
-"    _Future__propagateToListeners(source, listeners) {\n"
-"      var t2, t3, _box_0, t4, t5, hasError, asyncError, nextListener, nextListener0, sourceResult, t6, zone, oldZone, result, current, _box_1 = {},\n"
-"        t1 = _box_1.source = source;\n"
-"      for (t2 = type\$.AsyncError, t3 = type\$.nullable__FutureListener_dynamic_dynamic;;) {\n"
-"        _box_0 = {};\n"
-"        t4 = t1._state;\n"
-"        t5 = (t4 & 16) === 0;\n"
-"        hasError = !t5;\n"
-"        if (listeners == null) {\n"
-"          if (hasError && (t4 & 1) === 0) {\n"
-"            asyncError = t2._as(t1._resultOrListeners);\n"
-"            t1 = t1._zone;\n"
-"            t1._handleUncaughtErrorZoned\$3(t1, asyncError.error, asyncError.stackTrace);\n"
-"          }\n"
-"          return;\n"
-"        }\n"
-"        _box_0.listener = listeners;\n"
-"        nextListener = listeners._nextListener;\n"
-"        for (t1 = listeners; nextListener != null; t1 = nextListener, nextListener = nextListener0) {\n"
-"          t1._nextListener = null;\n"
-"          A._Future__propagateToListeners(_box_1.source, t1);\n"
-"          _box_0.listener = nextListener;\n"
-"          nextListener0 = nextListener._nextListener;\n"
-"        }\n"
-"        t4 = _box_1.source;\n"
-"        sourceResult = t4._resultOrListeners;\n"
-"        _box_0.listenerHasError = hasError;\n"
-"        _box_0.listenerValueOrError = sourceResult;\n"
-"        if (t5) {\n"
-"          t6 = t1.state;\n"
-"          t6 = (t6 & 1) !== 0 || (t6 & 15) === 8;\n"
-"        } else\n"
-"          t6 = true;\n"
-"        if (t6) {\n"
-"          zone = t1.result._zone;\n"
-"          if (hasError && t4._zone._handleUncaughtErrorFunction != zone._handleUncaughtErrorFunction) {\n"
-"            t2._as(sourceResult);\n"
-"            t1 = t4._zone;\n"
-"            t1._handleUncaughtErrorZoned\$3(t1, sourceResult.error, sourceResult.stackTrace);\n"
-"            return;\n"
-"          }\n"
-"          oldZone = \$.Zone__current;\n"
-"          if (oldZone !== zone)\n"
-"            \$.Zone__current = zone;\n"
-"          else\n"
-"            oldZone = null;\n"
-"          t1 = t1.state;\n"
-"          if ((t1 & 15) === 8)\n"
-"            new A._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call\$0();\n"
-"          else if (t5) {\n"
-"            if ((t1 & 1) !== 0)\n"
-"              new A._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call\$0();\n"
-"          } else if ((t1 & 2) !== 0)\n"
-"            new A._Future__propagateToListeners_handleError(_box_1, _box_0).call\$0();\n"
-"          if (oldZone != null)\n"
-"            \$.Zone__current = oldZone;\n"
-"          t1 = _box_0.listenerValueOrError;\n"
-"          if (t1 instanceof A._Future) {\n"
-"            t4 = _box_0.listener.\$ti;\n"
-"            t4 = t4._eval\$1(\"Future<2>\")._is(t1) || !t4._rest[1]._is(t1);\n"
-"          } else\n"
-"            t4 = false;\n"
-"          if (t4) {\n"
-"            result = _box_0.listener.result;\n"
-"            if ((t1._state & 24) !== 0) {\n"
-"              current = t3._as(result._resultOrListeners);\n"
-"              result._resultOrListeners = null;\n"
-"              listeners = result._reverseListeners\$1(current);\n"
-"              result._state = t1._state & 30 | result._state & 1;\n"
-"              result._resultOrListeners = t1._resultOrListeners;\n"
-"              _box_1.source = t1;\n"
-"              continue;\n"
-"            } else\n"
-"              A._Future__chainCoreFuture(t1, result, true);\n"
-"            return;\n"
-"          }\n"
-"        }\n"
-"        result = _box_0.listener.result;\n"
-"        current = t3._as(result._resultOrListeners);\n"
-"        result._resultOrListeners = null;\n"
-"        listeners = result._reverseListeners\$1(current);\n"
-"        t1 = _box_0.listenerHasError;\n"
-"        t4 = _box_0.listenerValueOrError;\n"
-"        if (!t1) {\n"
-"          result.\$ti._precomputed1._as(t4);\n"
-"          result._state = 8;\n"
-"          result._resultOrListeners = t4;\n"
-"        } else {\n"
-"          t2._as(t4);\n"
-"          result._state = result._state & 1 | 16;\n"
-"          result._resultOrListeners = t4;\n"
-"        }\n"
-"        _box_1.source = result;\n"
-"        t1 = result;\n"
-"      }\n"
-"    },\n"
-"    _registerErrorHandler(errorHandler, zone) {\n"
-"      var t1 = type\$.dynamic_Function_Object_StackTrace;\n"
-"      if (t1._is(errorHandler))\n"
-"        return zone._registerBinaryCallbackZoned\$3\$2(zone, t1._as(errorHandler), type\$.dynamic, type\$.Object, type\$.StackTrace);\n"
-"      t1 = type\$.dynamic_Function_Object;\n"
-"      if (t1._is(errorHandler))\n"
-"        return zone._registerUnaryCallbackZoned\$2\$2(zone, t1._as(errorHandler), type\$.dynamic, type\$.Object);\n"
-"      throw A.wrapException(A.ArgumentError\$value(errorHandler, \"onError\", string\$.Error_));\n"
-"    },\n"
-"    _microtaskLoop() {\n"
-"      var entry, next;\n"
-"      for (entry = \$._nextCallback; entry != null; entry = \$._nextCallback) {\n"
-"        \$._lastPriorityCallback = null;\n"
-"        next = entry.next;\n"
-"        \$._nextCallback = next;\n"
-"        if (next == null)\n"
-"          \$._lastCallback = null;\n"
-"        entry.callback.call\$0();\n"
-"      }\n"
-"    },\n"
-"    _startMicrotaskLoop() {\n"
-"      \$._isInCallbackLoop = true;\n"
-"      try {\n"
-"        A._microtaskLoop();\n"
-"      } finally {\n"
-"        \$._lastPriorityCallback = null;\n"
-"        \$._isInCallbackLoop = false;\n"
-"        if (\$._nextCallback != null)\n"
-"          \$.\$get\$_AsyncRun__scheduleImmediateClosure().call\$1(A.async___startMicrotaskLoop\$closure());\n"
-"      }\n"
-"    },\n"
-"    _scheduleAsyncCallback(callback) {\n"
-"      var newEntry = new A._AsyncCallbackEntry(callback),\n"
-"        lastCallback = \$._lastCallback;\n"
-"      if (lastCallback == null) {\n"
-"        \$._nextCallback = \$._lastCallback = newEntry;\n"
-"        if (!\$._isInCallbackLoop)\n"
-"          \$.\$get\$_AsyncRun__scheduleImmediateClosure().call\$1(A.async___startMicrotaskLoop\$closure());\n"
-"      } else\n"
-"        \$._lastCallback = lastCallback.next = newEntry;\n"
-"    },\n"
-"    _schedulePriorityAsyncCallback(callback) {\n"
-"      var entry, lastPriorityCallback, next,\n"
-"        t1 = \$._nextCallback;\n"
-"      if (t1 == null) {\n"
-"        A._scheduleAsyncCallback(callback);\n"
-"        \$._lastPriorityCallback = \$._lastCallback;\n"
-"        return;\n"
-"      }\n"
-"      entry = new A._AsyncCallbackEntry(callback);\n"
-"      lastPriorityCallback = \$._lastPriorityCallback;\n"
-"      if (lastPriorityCallback == null) {\n"
-"        entry.next = t1;\n"
-"        \$._nextCallback = \$._lastPriorityCallback = entry;\n"
-"      } else {\n"
-"        next = lastPriorityCallback.next;\n"
-"        entry.next = next;\n"
-"        \$._lastPriorityCallback = lastPriorityCallback.next = entry;\n"
-"        if (next == null)\n"
-"          \$._lastCallback = entry;\n"
-"      }\n"
-"    },\n"
-"    scheduleMicrotask(callback) {\n"
-"      var currentZone = \$.Zone__current;\n"
-"      if (B.Zone_jYP === currentZone) {\n"
-"        A._rootScheduleMicrotask(B.Zone_jYP, callback);\n"
-"        return;\n"
-"      }\n"
-"      if (currentZone._scheduleMicrotaskFunction == null && currentZone._handleUncaughtErrorFunction == null) {\n"
-"        A._rootScheduleMicrotask(currentZone, currentZone._registerCallbackZoned\$1\$2(currentZone, callback, type\$.void));\n"
-"        return;\n"
-"      }\n"
-"      currentZone._scheduleMicrotaskZoned\$2(currentZone, currentZone.bindCallbackGuarded\$1(callback));\n"
-"    },\n"
-"    StreamIterator_StreamIterator(stream, \$T) {\n"
-"      A.checkNotNullable(stream, \"stream\", type\$.Object);\n"
-"      return new A._StreamIterator(\$T._eval\$1(\"_StreamIterator<0>\"));\n"
-"    },\n"
-"    StreamController_StreamController(\$T) {\n"
-"      var _null = null;\n"
-"      return new A._AsyncStreamController(_null, _null, _null, _null, \$T._eval\$1(\"_AsyncStreamController<0>\"));\n"
-"    },\n"
-"    _runGuarded(notificationHandler) {\n"
-"      var e, s, exception, t1;\n"
-"      if (notificationHandler == null)\n"
-"        return;\n"
-"      try {\n"
-"        notificationHandler.call\$0();\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = \$.Zone__current;\n"
-"        t1._handleUncaughtErrorZoned\$3(t1, A._asObject(e), type\$.StackTrace._as(s));\n"
-"      }\n"
-"    },\n"
-"    _BufferingStreamSubscription__registerDataHandler(zone, handleData, \$T) {\n"
-"      var t1 = handleData == null ? A.async___nullDataHandler\$closure() : handleData;\n"
-"      return zone._registerUnaryCallbackZoned\$2\$2(zone, type\$.\$env_1_1_void._bind\$1(\$T)._eval\$1(\"1(2)\")._as(t1), type\$.void, \$T);\n"
-"    },\n"
-"    _BufferingStreamSubscription__registerErrorHandler(zone, handleError) {\n"
-"      if (handleError == null)\n"
-"        handleError = A.async___nullErrorHandler\$closure();\n"
-"      if (type\$.void_Function_Object_StackTrace._is(handleError))\n"
-"        return zone._registerBinaryCallbackZoned\$3\$2(zone, type\$.dynamic_Function_Object_StackTrace._as(handleError), type\$.dynamic, type\$.Object, type\$.StackTrace);\n"
-"      if (type\$.void_Function_Object._is(handleError))\n"
-"        return zone._registerUnaryCallbackZoned\$2\$2(zone, type\$.dynamic_Function_Object._as(handleError), type\$.dynamic, type\$.Object);\n"
-"      throw A.wrapException(A.ArgumentError\$(string\$.handle, null));\n"
-"    },\n"
-"    _nullDataHandler(value) {\n"
-"    },\n"
-"    _nullErrorHandler(error, stackTrace) {\n"
-"      var t1;\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      t1 = \$.Zone__current;\n"
-"      t1._handleUncaughtErrorZoned\$3(t1, error, stackTrace);\n"
-"    },\n"
-"    _nullDoneHandler() {\n"
-"    },\n"
-"    _cancelAndValue(subscription, future, value) {\n"
-"      var cancelFuture = subscription.cancel\$0();\n"
-"      if (cancelFuture !== \$.\$get\$Future__nullFuture())\n"
-"        cancelFuture.whenComplete\$1(new A._cancelAndValue_closure(future, value));\n"
-"      else\n"
-"        future._complete\$1(value);\n"
-"    },\n"
-"    Timer_Timer(duration, callback) {\n"
-"      var t1 = \$.Zone__current;\n"
-"      if (t1 === B.Zone_jYP)\n"
-"        return t1._createTimerZoned\$3(t1, duration, type\$.void_Function._as(callback));\n"
-"      return t1._createTimerZoned\$3(t1, duration, type\$.void_Function._as(t1.bindCallbackGuarded\$1(callback)));\n"
-"    },\n"
-"    runZonedGuarded(body, onError, \$R) {\n"
-"      var error, stackTrace, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, newZone, exception, _null = null, zoneSpecification = null, zoneValues = null,\n"
-"        parentZone = \$.Zone__current,\n"
-"        t1 = new A.runZonedGuarded_errorHandler(parentZone, onError);\n"
-"      if (zoneSpecification == null)\n"
-"        zoneSpecification = new A.ZoneSpecification(t1, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);\n"
-"      else {\n"
-"        t2 = zoneSpecification;\n"
-"        t3 = t2.run;\n"
-"        t4 = t2.runUnary;\n"
-"        t5 = t2.runBinary;\n"
-"        t6 = t2.registerCallback;\n"
-"        t7 = t2.registerUnaryCallback;\n"
-"        t8 = t2.registerBinaryCallback;\n"
-"        t9 = t2.errorCallback;\n"
-"        t10 = t2.scheduleMicrotask;\n"
-"        t11 = t2.createTimer;\n"
-"        t12 = t2.createPeriodicTimer;\n"
-"        t13 = t2.print;\n"
-"        t2 = t2.fork;\n"
-"        zoneSpecification = new A.ZoneSpecification(t1, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t2);\n"
-"      }\n"
-"      try {\n"
-"        newZone = parentZone._forkZoned\$3(parentZone, zoneSpecification, zoneValues);\n"
-"        t1 = newZone._runZoned\$1\$2(newZone, body, \$R);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        error = A.unwrapException(exception);\n"
-"        stackTrace = A.getTraceFromException(exception);\n"
-"        onError.call\$2(error, stackTrace);\n"
-"      }\n"
-"      return _null;\n"
-"    },\n"
-"    ZoneDelegate\$_() {\n"
-"      return new A.ZoneDelegate(B.Zone_jYP);\n"
-"    },\n"
-"    _rootHandleUncaughtError(error, stackTrace) {\n"
-"      A._schedulePriorityAsyncCallback(new A._rootHandleUncaughtError_closure(error, stackTrace));\n"
-"    },\n"
-"    _rootScheduleMicrotask(zone, callback) {\n"
-"      if (B.Zone_jYP !== zone)\n"
-"        callback = zone._handleUncaughtErrorFunction != null ? zone.bindCallbackGuarded\$1(callback) : zone.bindCallback\$1\$1(callback, type\$.void);\n"
-"      A._scheduleAsyncCallback(callback);\n"
-"    },\n"
-"    _rootFork(zone, specification, zoneValues) {\n"
-"      var t1 = new A.ZoneDelegate(B.Zone_jYP),\n"
-"        t2 = new A._ZoneHandleUncaughtError(B.Zone_jYP, specification.handleUncaughtError);\n"
-"      t1 = t1._zone = new A.Zone(zone, t1, zone._runFunction, zone._runUnaryFunction, zone._runBinaryFunction, zone._registerCallbackFunction, zone._registerUnaryCallbackFunction, zone._registerBinaryCallbackFunction, zone._errorCallbackFunction, zone._scheduleMicrotaskFunction, zone._createTimerFunction, zone._createPeriodicTimerFunction, zone._printFunction, zone._forkFunction, t2, zone._zoneValues);\n"
-"      t2.zone = t1;\n"
-"      return t1;\n"
-"    },\n"
-"    _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {\n"
-"      this._box_0 = t0;\n"
-"    },\n"
-"    _AsyncRun__initializeScheduleImmediate_closure: function _AsyncRun__initializeScheduleImmediate_closure(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.div = t1;\n"
-"      this.span = t2;\n"
-"    },\n"
-"    _AsyncRun__scheduleImmediateJsOverride_internalCallback: function _AsyncRun__scheduleImmediateJsOverride_internalCallback(t0) {\n"
-"      this.callback = t0;\n"
-"    },\n"
-"    _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback: function _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(t0) {\n"
-"      this.callback = t0;\n"
-"    },\n"
-"    _TimerImpl: function _TimerImpl() {\n"
-"      this._handle = null;\n"
-"    },\n"
-"    _TimerImpl_internalCallback: function _TimerImpl_internalCallback(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.callback = t1;\n"
-"    },\n"
-"    _AsyncAwaitCompleter: function _AsyncAwaitCompleter(t0, t1) {\n"
-"      this._future = t0;\n"
-"      this.isSync = false;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _awaitOnObject_closure: function _awaitOnObject_closure(t0) {\n"
-"      this.bodyFunction = t0;\n"
-"    },\n"
-"    _awaitOnObject_closure0: function _awaitOnObject_closure0(t0) {\n"
-"      this.bodyFunction = t0;\n"
-"    },\n"
-"    _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) {\n"
-"      this.\$protected = t0;\n"
-"    },\n"
-"    AsyncError: function AsyncError(t0, t1) {\n"
-"      this.error = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    Future_Future\$microtask_closure: function Future_Future\$microtask_closure(t0, t1) {\n"
-"      this.computation = t0;\n"
-"      this.result = t1;\n"
-"    },\n"
-"    Future_Future\$delayed_closure: function Future_Future\$delayed_closure(t0, t1, t2) {\n"
-"      this.computation = t0;\n"
-"      this.result = t1;\n"
-"      this.T = t2;\n"
-"    },\n"
-"    TimeoutException: function TimeoutException(t0, t1) {\n"
-"      this.message = t0;\n"
-"      this.duration = t1;\n"
-"    },\n"
-"    _Completer: function _Completer() {\n"
-"    },\n"
-"    _AsyncCompleter: function _AsyncCompleter(t0, t1) {\n"
-"      this.future = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _SyncCompleter: function _SyncCompleter(t0, t1) {\n"
-"      this.future = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _FutureListener: function _FutureListener(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._nextListener = null;\n"
-"      _.result = t0;\n"
-"      _.state = t1;\n"
-"      _.callback = t2;\n"
-"      _.errorCallback = t3;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    _Future: function _Future(t0, t1) {\n"
-"      var _ = this;\n"
-"      _._state = 0;\n"
-"      _._zone = t0;\n"
-"      _._resultOrListeners = null;\n"
-"      _.\$ti = t1;\n"
-"    },\n"
-"    _Future__addListener_closure: function _Future__addListener_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.listener = t1;\n"
-"    },\n"
-"    _Future__prependListeners_closure: function _Future__prependListeners_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"    },\n"
-"    _Future__chainCoreFuture_closure: function _Future__chainCoreFuture_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.target = t1;\n"
-"    },\n"
-"    _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.value = t1;\n"
-"    },\n"
-"    _Future__asyncCompleteErrorObject_closure: function _Future__asyncCompleteErrorObject_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.error = t1;\n"
-"    },\n"
-"    _Future__propagateToListeners_handleWhenCompleteCallback: function _Future__propagateToListeners_handleWhenCompleteCallback(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this._box_1 = t1;\n"
-"      this.hasError = t2;\n"
-"    },\n"
-"    _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0, t1) {\n"
-"      this.joinedResult = t0;\n"
-"      this.originalSource = t1;\n"
-"    },\n"
-"    _Future__propagateToListeners_handleWhenCompleteCallback_closure0: function _Future__propagateToListeners_handleWhenCompleteCallback_closure0(t0) {\n"
-"      this.joinedResult = t0;\n"
-"    },\n"
-"    _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.sourceResult = t1;\n"
-"    },\n"
-"    _Future__propagateToListeners_handleError: function _Future__propagateToListeners_handleError(t0, t1) {\n"
-"      this._box_1 = t0;\n"
-"      this._box_0 = t1;\n"
-"    },\n"
-"    _Future_timeout_closure: function _Future_timeout_closure(t0, t1) {\n"
-"      this._future = t0;\n"
-"      this.timeLimit = t1;\n"
-"    },\n"
-"    _Future_timeout_closure0: function _Future_timeout_closure0(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.\$this = t0;\n"
-"      _._future = t1;\n"
-"      _.zone = t2;\n"
-"      _.onTimeoutHandler = t3;\n"
-"    },\n"
-"    _Future_timeout_closure1: function _Future_timeout_closure1(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"      this._future = t2;\n"
-"    },\n"
-"    _Future_timeout_closure2: function _Future_timeout_closure2(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this._future = t1;\n"
-"    },\n"
-"    _AsyncCallbackEntry: function _AsyncCallbackEntry(t0) {\n"
-"      this.callback = t0;\n"
-"      this.next = null;\n"
-"    },\n"
-"    Stream: function Stream() {\n"
-"    },\n"
-"    Stream_length_closure: function Stream_length_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"    },\n"
-"    Stream_length_closure0: function Stream_length_closure0(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.future = t1;\n"
-"    },\n"
-"    Stream_first_closure: function Stream_first_closure(t0) {\n"
-"      this.future = t0;\n"
-"    },\n"
-"    Stream_first_closure0: function Stream_first_closure0(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.subscription = t1;\n"
-"      this.future = t2;\n"
-"    },\n"
-"    StreamView: function StreamView() {\n"
-"    },\n"
-"    _StreamController: function _StreamController() {\n"
-"    },\n"
-"    _StreamController__subscribe_closure: function _StreamController__subscribe_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    _StreamController__recordCancel_complete: function _StreamController__recordCancel_complete(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    _AsyncStreamControllerDispatch: function _AsyncStreamControllerDispatch() {\n"
-"    },\n"
-"    _AsyncStreamController: function _AsyncStreamController(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._varData = null;\n"
-"      _._state = 0;\n"
-"      _._doneFuture = null;\n"
-"      _.onListen = t0;\n"
-"      _.onPause = t1;\n"
-"      _.onResume = t2;\n"
-"      _.onCancel = t3;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    _ControllerStream: function _ControllerStream(t0, t1) {\n"
-"      this._controller = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _ControllerSubscription: function _ControllerSubscription(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _._controller = t0;\n"
-"      _._async\$_onData = t1;\n"
-"      _._onError = t2;\n"
-"      _._onDone = t3;\n"
-"      _._zone = t4;\n"
-"      _._state = t5;\n"
-"      _._pending = _._cancelFuture = null;\n"
-"      _.\$ti = t6;\n"
-"    },\n"
-"    _StreamSinkWrapper: function _StreamSinkWrapper(t0, t1) {\n"
-"      this._async\$_target = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _BufferingStreamSubscription: function _BufferingStreamSubscription() {\n"
-"    },\n"
-"    _BufferingStreamSubscription_asFuture_closure: function _BufferingStreamSubscription_asFuture_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.result = t1;\n"
-"    },\n"
-"    _BufferingStreamSubscription_asFuture_closure0: function _BufferingStreamSubscription_asFuture_closure0(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.result = t1;\n"
-"    },\n"
-"    _BufferingStreamSubscription_asFuture__closure: function _BufferingStreamSubscription_asFuture__closure(t0, t1, t2) {\n"
-"      this.result = t0;\n"
-"      this.error = t1;\n"
-"      this.stackTrace = t2;\n"
-"    },\n"
-"    _BufferingStreamSubscription__sendError_sendError: function _BufferingStreamSubscription__sendError_sendError(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.error = t1;\n"
-"      this.stackTrace = t2;\n"
-"    },\n"
-"    _BufferingStreamSubscription__sendDone_sendDone: function _BufferingStreamSubscription__sendDone_sendDone(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    _StreamImpl: function _StreamImpl() {\n"
-"    },\n"
-"    _DelayedEvent: function _DelayedEvent() {\n"
-"    },\n"
-"    _DelayedData: function _DelayedData(t0, t1) {\n"
-"      this.value = t0;\n"
-"      this.next = null;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _DelayedError: function _DelayedError(t0, t1) {\n"
-"      this.error = t0;\n"
-"      this.stackTrace = t1;\n"
-"      this.next = null;\n"
-"    },\n"
-"    _DelayedDone: function _DelayedDone() {\n"
-"    },\n"
-"    _PendingEvents: function _PendingEvents(t0) {\n"
-"      var _ = this;\n"
-"      _._state = 0;\n"
-"      _.lastPendingEvent = _.firstPendingEvent = null;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.dispatch = t1;\n"
-"    },\n"
-"    _DoneStreamSubscription: function _DoneStreamSubscription(t0, t1) {\n"
-"      var _ = this;\n"
-"      _._state = 1;\n"
-"      _._zone = t0;\n"
-"      _._onDone = null;\n"
-"      _.\$ti = t1;\n"
-"    },\n"
-"    _StreamIterator: function _StreamIterator(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    _EmptyStream: function _EmptyStream(t0) {\n"
-"      this.\$ti = t0;\n"
-"    },\n"
-"    _MultiStream: function _MultiStream(t0, t1, t2) {\n"
-"      this.isBroadcast = t0;\n"
-"      this._onListen = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    _MultiStream_listen_closure: function _MultiStream_listen_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.controller = t1;\n"
-"    },\n"
-"    _MultiStreamController: function _MultiStreamController(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._varData = null;\n"
-"      _._state = 0;\n"
-"      _._doneFuture = null;\n"
-"      _.onListen = t0;\n"
-"      _.onPause = t1;\n"
-"      _.onResume = t2;\n"
-"      _.onCancel = t3;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    _cancelAndValue_closure: function _cancelAndValue_closure(t0, t1) {\n"
-"      this.future = t0;\n"
-"      this.value = t1;\n"
-"    },\n"
-"    _ForwardingStream: function _ForwardingStream() {\n"
-"    },\n"
-"    _ForwardingStreamSubscription: function _ForwardingStreamSubscription(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _._stream = t0;\n"
-"      _._subscription = null;\n"
-"      _._async\$_onData = t1;\n"
-"      _._onError = t2;\n"
-"      _._onDone = t3;\n"
-"      _._zone = t4;\n"
-"      _._state = t5;\n"
-"      _._pending = _._cancelFuture = null;\n"
-"      _.\$ti = t6;\n"
-"    },\n"
-"    _MapStream: function _MapStream(t0, t1, t2) {\n"
-"      this._transform = t0;\n"
-"      this._source = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    _ZoneHandleUncaughtError: function _ZoneHandleUncaughtError(t0, t1) {\n"
-"      this.zone = t0;\n"
-"      this.\$function = t1;\n"
-"    },\n"
-"    Zone: function Zone(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {\n"
-"      var _ = this;\n"
-"      _._parent = t0;\n"
-"      _._delegate = t1;\n"
-"      _._runFunction = t2;\n"
-"      _._runUnaryFunction = t3;\n"
-"      _._runBinaryFunction = t4;\n"
-"      _._registerCallbackFunction = t5;\n"
-"      _._registerUnaryCallbackFunction = t6;\n"
-"      _._registerBinaryCallbackFunction = t7;\n"
-"      _._errorCallbackFunction = t8;\n"
-"      _._scheduleMicrotaskFunction = t9;\n"
-"      _._createTimerFunction = t10;\n"
-"      _._createPeriodicTimerFunction = t11;\n"
-"      _._printFunction = t12;\n"
-"      _._forkFunction = t13;\n"
-"      _._handleUncaughtErrorFunction = t14;\n"
-"      _._zoneValues = t15;\n"
-"    },\n"
-"    Zone_bindCallback_closure: function Zone_bindCallback_closure(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.registered = t1;\n"
-"      this.R = t2;\n"
-"    },\n"
-"    Zone_bindCallbackGuarded_closure: function Zone_bindCallbackGuarded_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.registered = t1;\n"
-"    },\n"
-"    Zone_bindUnaryCallbackGuarded_closure: function Zone_bindUnaryCallbackGuarded_closure(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.registered = t1;\n"
-"      this.T = t2;\n"
-"    },\n"
-"    runZonedGuarded_errorHandler: function runZonedGuarded_errorHandler(t0, t1) {\n"
-"      this.parentZone = t0;\n"
-"      this.onError = t1;\n"
-"    },\n"
-"    ZoneDelegate: function ZoneDelegate(t0) {\n"
-"      this._zone = t0;\n"
-"    },\n"
-"    _rootHandleUncaughtError_closure: function _rootHandleUncaughtError_closure(t0, t1) {\n"
-"      this.error = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    ZoneSpecification: function ZoneSpecification(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {\n"
-"      var _ = this;\n"
-"      _.handleUncaughtError = t0;\n"
-"      _.run = t1;\n"
-"      _.runUnary = t2;\n"
-"      _.runBinary = t3;\n"
-"      _.registerCallback = t4;\n"
-"      _.registerUnaryCallback = t5;\n"
-"      _.registerBinaryCallback = t6;\n"
-"      _.errorCallback = t7;\n"
-"      _.scheduleMicrotask = t8;\n"
-"      _.createTimer = t9;\n"
-"      _.createPeriodicTimer = t10;\n"
-"      _.print = t11;\n"
-"      _.fork = t12;\n"
-"    },\n"
-"    HashMap_HashMap(equals, hashCode, \$K, \$V) {\n"
-"      return new A._HashMap(\$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"_HashMap<1,2>\"));\n"
-"    },\n"
-"    _HashMap__getTableEntry(table, key) {\n"
-"      var entry = table[key];\n"
-"      return entry === table ? null : entry;\n"
-"    },\n"
-"    _HashMap__setTableEntry(table, key, value) {\n"
-"      if (value == null)\n"
-"        table[key] = table;\n"
-"      else\n"
-"        table[key] = value;\n"
-"    },\n"
-"    _HashMap__newHashTable() {\n"
-"      var table = Object.create(null);\n"
-"      A._HashMap__setTableEntry(table, \"<non-identifier-key>\", table);\n"
-"      delete table[\"<non-identifier-key>\"];\n"
-"      return table;\n"
-"    },\n"
-"    LinkedHashMap_LinkedHashMap(equals, hashCode, \$K, \$V) {\n"
-"      if (hashCode == null) {\n"
-"        if (equals == null)\n"
-"          return new A.JsLinkedHashMap(\$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"JsLinkedHashMap<1,2>\"));\n"
-"        hashCode = A.collection___defaultHashCode\$closure();\n"
-"      } else {\n"
-"        if (A.core__identityHashCode\$closure() === hashCode && A.core__identical\$closure() === equals)\n"
-"          return new A.JsIdentityLinkedHashMap(\$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"JsIdentityLinkedHashMap<1,2>\"));\n"
-"        if (equals == null)\n"
-"          equals = A.collection___defaultEquals\$closure();\n"
-"      }\n"
-"      return A._LinkedCustomHashMap\$(equals, hashCode, null, \$K, \$V);\n"
-"    },\n"
-"    LinkedHashMap_LinkedHashMap\$_literal(keyValuePairs, \$K, \$V) {\n"
-"      return \$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"LinkedHashMap<1,2>\")._as(A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap(\$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"JsLinkedHashMap<1,2>\"))));\n"
-"    },\n"
-"    LinkedHashMap_LinkedHashMap\$_empty(\$K, \$V) {\n"
-"      return new A.JsLinkedHashMap(\$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"JsLinkedHashMap<1,2>\"));\n"
-"    },\n"
-"    _LinkedCustomHashMap\$(_equals, _hashCode, validKey, \$K, \$V) {\n"
-"      return new A._LinkedCustomHashMap(_equals, _hashCode, new A._LinkedCustomHashMap_closure(\$K), \$K._eval\$1(\"@<0>\")._bind\$1(\$V)._eval\$1(\"_LinkedCustomHashMap<1,2>\"));\n"
-"    },\n"
-"    HashSet_HashSet(equals, hashCode, \$E) {\n"
-"      return new A._HashSet(\$E._eval\$1(\"_HashSet<0>\"));\n"
-"    },\n"
-"    _HashSet__newHashTable() {\n"
-"      var table = Object.create(null);\n"
-"      table[\"<non-identifier-key>\"] = table;\n"
-"      delete table[\"<non-identifier-key>\"];\n"
-"      return table;\n"
-"    },\n"
-"    _defaultEquals0(a, b) {\n"
-"      return J.\$eq\$(a, b);\n"
-"    },\n"
-"    _defaultHashCode(a) {\n"
-"      return J.get\$hashCode\$(a);\n"
-"    },\n"
-"    ListBase__compareAny(a, b) {\n"
-"      var t1 = type\$.Comparable_dynamic;\n"
-"      return J.compareTo\$1\$ns(t1._as(a), t1._as(b));\n"
-"    },\n"
-"    MapBase_mapToString(m) {\n"
-"      var result, t1;\n"
-"      if (A.isToStringVisiting(m))\n"
-"        return \"{...}\";\n"
-"      result = new A.StringBuffer(\"\");\n"
-"      try {\n"
-"        t1 = {};\n"
-"        B.JSArray_methods.add\$1(\$._toStringVisiting, m);\n"
-"        result._contents += \"{\";\n"
-"        t1.first = true;\n"
-"        m.forEach\$1(0, new A.MapBase_mapToString_closure(t1, result));\n"
-"        result._contents += \"}\";\n"
-"      } finally {\n"
-"        if (0 >= \$._toStringVisiting.length)\n"
-"          return A.ioore(\$._toStringVisiting, -1);\n"
-"        \$._toStringVisiting.pop();\n"
-"      }\n"
-"      t1 = result._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    ListQueue\$(\$E) {\n"
-"      return new A.ListQueue(A.List_List\$filled(A.ListQueue__calculateCapacity(null), null, false, \$E._eval\$1(\"0?\")), \$E._eval\$1(\"ListQueue<0>\"));\n"
-"    },\n"
-"    ListQueue__calculateCapacity(initialCapacity) {\n"
-"      return 8;\n"
-"    },\n"
-"    _HashMap: function _HashMap(t0) {\n"
-"      var _ = this;\n"
-"      _._collection\$_length = 0;\n"
-"      _._collection\$_keys = _._collection\$_rest = _._collection\$_nums = _._collection\$_strings = null;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    _IdentityHashMap: function _IdentityHashMap(t0) {\n"
-"      var _ = this;\n"
-"      _._collection\$_length = 0;\n"
-"      _._collection\$_keys = _._collection\$_rest = _._collection\$_nums = _._collection\$_strings = null;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {\n"
-"      this._map = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._map = t0;\n"
-"      _._collection\$_keys = t1;\n"
-"      _._offset = 0;\n"
-"      _._collection\$_current = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    _LinkedCustomHashMap: function _LinkedCustomHashMap(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._equals = t0;\n"
-"      _._hashCode = t1;\n"
-"      _._validKey = t2;\n"
-"      _.__js_helper\$_length = 0;\n"
-"      _._last = _._first = _.__js_helper\$_rest = _._nums = _._strings = null;\n"
-"      _._modifications = 0;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    _LinkedCustomHashMap_closure: function _LinkedCustomHashMap_closure(t0) {\n"
-"      this.K = t0;\n"
-"    },\n"
-"    _HashSet: function _HashSet(t0) {\n"
-"      var _ = this;\n"
-"      _._collection\$_length = 0;\n"
-"      _._collection\$_elements = _._collection\$_rest = _._collection\$_nums = _._collection\$_strings = null;\n"
-"      _.\$ti = t0;\n"
-"    },\n"
-"    _HashSetIterator: function _HashSetIterator(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _._set = t0;\n"
-"      _._collection\$_elements = t1;\n"
-"      _._offset = 0;\n"
-"      _._collection\$_current = null;\n"
-"      _.\$ti = t2;\n"
-"    },\n"
-"    ListBase: function ListBase() {\n"
-"    },\n"
-"    MapBase: function MapBase() {\n"
-"    },\n"
-"    MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.result = t1;\n"
-"    },\n"
-"    _UnmodifiableMapMixin: function _UnmodifiableMapMixin() {\n"
-"    },\n"
-"    MapView: function MapView() {\n"
-"    },\n"
-"    UnmodifiableMapView: function UnmodifiableMapView(t0, t1) {\n"
-"      this._map = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    ListQueue: function ListQueue(t0, t1) {\n"
-"      var _ = this;\n"
-"      _._table = t0;\n"
-"      _._modificationCount = _._tail = _._head = 0;\n"
-"      _.\$ti = t1;\n"
-"    },\n"
-"    _ListQueueIterator: function _ListQueueIterator(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._queue = t0;\n"
-"      _._end = t1;\n"
-"      _._modificationCount = t2;\n"
-"      _._position = t3;\n"
-"      _._collection\$_current = null;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    SetBase: function SetBase() {\n"
-"    },\n"
-"    _SetBase: function _SetBase() {\n"
-"    },\n"
-"    _SplayTreeNode: function _SplayTreeNode() {\n"
-"    },\n"
-"    _SplayTreeSetNode: function _SplayTreeSetNode(t0, t1) {\n"
-"      var _ = this;\n"
-"      _.key = t0;\n"
-"      _._right = _._left = null;\n"
-"      _.\$ti = t1;\n"
-"    },\n"
-"    _SplayTree: function _SplayTree() {\n"
-"    },\n"
-"    _SplayTreeIterator: function _SplayTreeIterator() {\n"
-"    },\n"
-"    _SplayTreeKeyIterator: function _SplayTreeKeyIterator(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._tree = t0;\n"
-"      _._path = t1;\n"
-"      _._modificationCount = null;\n"
-"      _._splayCount = t2;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    SplayTreeSet: function SplayTreeSet(t0, t1) {\n"
-"      var _ = this;\n"
-"      _._root = null;\n"
-"      _._compare = t0;\n"
-"      _._splayCount = _._modificationCount = _._count = 0;\n"
-"      _.\$ti = t1;\n"
-"    },\n"
-"    _SplayTreeSet__SplayTree_Iterable: function _SplayTreeSet__SplayTree_Iterable() {\n"
-"    },\n"
-"    _SplayTreeSet__SplayTree_Iterable_SetMixin: function _SplayTreeSet__SplayTree_Iterable_SetMixin() {\n"
-"    },\n"
-"    _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() {\n"
-"    },\n"
-"    _parseJson(source, reviver) {\n"
-"      var e, exception, t1, parsed = null;\n"
-"      try {\n"
-"        parsed = JSON.parse(source);\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        t1 = A.FormatException\$(String(e), null, null);\n"
-"        throw A.wrapException(t1);\n"
-"      }\n"
-"      t1 = A._convertJsonToDartLazy(parsed);\n"
-"      return t1;\n"
-"    },\n"
-"    _convertJsonToDartLazy(object) {\n"
-"      var i;\n"
-"      if (object == null)\n"
-"        return null;\n"
-"      if (typeof object != \"object\")\n"
-"        return object;\n"
-"      if (!Array.isArray(object))\n"
-"        return new A._JsonMap(object, Object.create(null));\n"
-"      for (i = 0; i < object.length; ++i)\n"
-"        object[i] = A._convertJsonToDartLazy(object[i]);\n"
-"      return object;\n"
-"    },\n"
-"    _Utf8Decoder__makeNativeUint8List(codeUnits, start, end) {\n"
-"      var bytes, t1, i, b,\n"
-"        \$length = end - start;\n"
-"      if (\$length <= 4096)\n"
-"        bytes = \$.\$get\$_Utf8Decoder__reusableBuffer();\n"
-"      else\n"
-"        bytes = new Uint8Array(\$length);\n"
-"      for (t1 = J.getInterceptor\$asx(codeUnits), i = 0; i < \$length; ++i) {\n"
-"        b = t1.\$index(codeUnits, start + i);\n"
-"        if ((b & 255) !== b)\n"
-"          b = 255;\n"
-"        bytes[i] = b;\n"
-"      }\n"
-"      return bytes;\n"
-"    },\n"
-"    _Utf8Decoder__convertInterceptedUint8List(allowMalformed, codeUnits, start, end) {\n"
-"      var decoder = allowMalformed ? \$.\$get\$_Utf8Decoder__decoderNonfatal() : \$.\$get\$_Utf8Decoder__decoder();\n"
-"      if (decoder == null)\n"
-"        return null;\n"
-"      if (0 === start && end === codeUnits.length)\n"
-"        return A._Utf8Decoder__useTextDecoder(decoder, codeUnits);\n"
-"      return A._Utf8Decoder__useTextDecoder(decoder, codeUnits.subarray(start, end));\n"
-"    },\n"
-"    _Utf8Decoder__useTextDecoder(decoder, codeUnits) {\n"
-"      var t1, exception;\n"
-"      try {\n"
-"        t1 = decoder.decode(codeUnits);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    Base64Codec__checkPadding(source, sourceIndex, sourceEnd, firstPadding, paddingCount, \$length) {\n"
-"      if (B.JSInt_methods.\$mod(\$length, 4) !== 0)\n"
-"        throw A.wrapException(A.FormatException\$(\"Invalid base64 padding, padded length must be multiple of four, is \" + \$length, source, sourceEnd));\n"
-"      if (firstPadding + paddingCount !== \$length)\n"
-"        throw A.wrapException(A.FormatException\$(\"Invalid base64 padding, '=' not at the end\", source, sourceIndex));\n"
-"      if (paddingCount > 2)\n"
-"        throw A.wrapException(A.FormatException\$(\"Invalid base64 padding, more than two '=' characters\", source, sourceIndex));\n"
-"    },\n"
-"    Encoding_getByName(\$name) {\n"
-"      return B.Map_YCg0U.\$index(0, \$name.toLowerCase());\n"
-"    },\n"
-"    JsonUnsupportedObjectError\$(unsupportedObject, cause, partialResult) {\n"
-"      return new A.JsonUnsupportedObjectError(unsupportedObject, cause);\n"
-"    },\n"
-"    _defaultToEncodable(object) {\n"
-"      return object.toJson\$0();\n"
-"    },\n"
-"    _JsonStringStringifier\$(_sink, _toEncodable) {\n"
-"      return new A._JsonStringStringifier(_sink, [], A.convert___defaultToEncodable\$closure());\n"
-"    },\n"
-"    _JsonStringStringifier_stringify(object, toEncodable, indent) {\n"
-"      var t1,\n"
-"        output = new A.StringBuffer(\"\"),\n"
-"        stringifier = A._JsonStringStringifier\$(output, toEncodable);\n"
-"      stringifier.writeObject\$1(object);\n"
-"      t1 = output._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _Utf8Decoder_errorDescription(state) {\n"
-"      switch (state) {\n"
-"        case 65:\n"
-"          return \"Missing extension byte\";\n"
-"        case 67:\n"
-"          return \"Unexpected extension byte\";\n"
-"        case 69:\n"
-"          return \"Invalid UTF-8 byte\";\n"
-"        case 71:\n"
-"          return \"Overlong encoding\";\n"
-"        case 73:\n"
-"          return \"Out of unicode range\";\n"
-"        case 75:\n"
-"          return \"Encoded surrogate\";\n"
-"        case 77:\n"
-"          return \"Unfinished UTF-8 octet sequence\";\n"
-"        default:\n"
-"          return \"\";\n"
-"      }\n"
-"    },\n"
-"    _JsonMap: function _JsonMap(t0, t1) {\n"
-"      this._original = t0;\n"
-"      this._processed = t1;\n"
-"      this._data = null;\n"
-"    },\n"
-"    _JsonMapKeyIterable: function _JsonMapKeyIterable(t0) {\n"
-"      this._convert\$_parent = t0;\n"
-"    },\n"
-"    _Utf8Decoder__decoder_closure: function _Utf8Decoder__decoder_closure() {\n"
-"    },\n"
-"    _Utf8Decoder__decoderNonfatal_closure: function _Utf8Decoder__decoderNonfatal_closure() {\n"
-"    },\n"
-"    AsciiCodec: function AsciiCodec() {\n"
-"    },\n"
-"    _UnicodeSubsetEncoder: function _UnicodeSubsetEncoder() {\n"
-"    },\n"
-"    AsciiEncoder: function AsciiEncoder(t0) {\n"
-"      this._subsetMask = t0;\n"
-"    },\n"
-"    _UnicodeSubsetDecoder: function _UnicodeSubsetDecoder() {\n"
-"    },\n"
-"    AsciiDecoder: function AsciiDecoder(t0, t1) {\n"
-"      this._allowInvalid = t0;\n"
-"      this._subsetMask = t1;\n"
-"    },\n"
-"    Base64Codec: function Base64Codec() {\n"
-"    },\n"
-"    Base64Encoder: function Base64Encoder() {\n"
-"    },\n"
-"    ByteConversionSink: function ByteConversionSink() {\n"
-"    },\n"
-"    _ByteCallbackSink: function _ByteCallbackSink(t0, t1) {\n"
-"      this._callback = t0;\n"
-"      this._convert\$_buffer = t1;\n"
-"      this._bufferIndex = 0;\n"
-"    },\n"
-"    Codec: function Codec() {\n"
-"    },\n"
-"    Converter: function Converter() {\n"
-"    },\n"
-"    Encoding: function Encoding() {\n"
-"    },\n"
-"    JsonUnsupportedObjectError: function JsonUnsupportedObjectError(t0, t1) {\n"
-"      this.unsupportedObject = t0;\n"
-"      this.cause = t1;\n"
-"    },\n"
-"    JsonCyclicError: function JsonCyclicError(t0, t1) {\n"
-"      this.unsupportedObject = t0;\n"
-"      this.cause = t1;\n"
-"    },\n"
-"    JsonCodec: function JsonCodec() {\n"
-"    },\n"
-"    JsonEncoder: function JsonEncoder(t0) {\n"
-"      this._toEncodable = t0;\n"
-"    },\n"
-"    JsonDecoder: function JsonDecoder(t0) {\n"
-"      this._reviver = t0;\n"
-"    },\n"
-"    _JsonStringifier: function _JsonStringifier() {\n"
-"    },\n"
-"    _JsonStringifier_writeMap_closure: function _JsonStringifier_writeMap_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.keyValueList = t1;\n"
-"    },\n"
-"    _JsonStringStringifier: function _JsonStringStringifier(t0, t1, t2) {\n"
-"      this._sink = t0;\n"
-"      this._seen = t1;\n"
-"      this._toEncodable = t2;\n"
-"    },\n"
-"    Latin1Codec: function Latin1Codec() {\n"
-"    },\n"
-"    Latin1Encoder: function Latin1Encoder(t0) {\n"
-"      this._subsetMask = t0;\n"
-"    },\n"
-"    Latin1Decoder: function Latin1Decoder(t0, t1) {\n"
-"      this._allowInvalid = t0;\n"
-"      this._subsetMask = t1;\n"
-"    },\n"
-"    Utf8Codec: function Utf8Codec() {\n"
-"    },\n"
-"    Utf8Encoder: function Utf8Encoder() {\n"
-"    },\n"
-"    _Utf8Encoder: function _Utf8Encoder(t0) {\n"
-"      this._bufferIndex = 0;\n"
-"      this._convert\$_buffer = t0;\n"
-"    },\n"
-"    Utf8Decoder: function Utf8Decoder(t0) {\n"
-"      this._allowMalformed = t0;\n"
-"    },\n"
-"    _Utf8Decoder: function _Utf8Decoder(t0) {\n"
-"      this.allowMalformed = t0;\n"
-"      this._convert\$_state = 16;\n"
-"      this._charOrIndex = 0;\n"
-"    },\n"
-"    identityHashCode(object) {\n"
-"      return A.objectHashCode(object);\n"
-"    },\n"
-"    int_parse(source, radix) {\n"
-"      var value = A.Primitives_parseInt(source, radix);\n"
-"      if (value != null)\n"
-"        return value;\n"
-"      throw A.wrapException(A.FormatException\$(source, null, null));\n"
-"    },\n"
-"    Error__throw(error, stackTrace) {\n"
-"      error = A.initializeExceptionWrapper(error, new Error());\n"
-"      if (error == null)\n"
-"        error = A._asObject(error);\n"
-"      error.stack = stackTrace.toString\$0(0);\n"
-"      throw error;\n"
-"    },\n"
-"    List_List\$filled(\$length, fill, growable, \$E) {\n"
-"      var i,\n"
-"        result = growable ? J.JSArray_JSArray\$growable(\$length, \$E) : J.JSArray_JSArray\$fixed(\$length, \$E);\n"
-"      if (\$length !== 0 && fill != null)\n"
-"        for (i = 0; i < result.length; ++i)\n"
-"          result[i] = fill;\n"
-"      return result;\n"
-"    },\n"
-"    List_List\$from(elements, growable, \$E) {\n"
-"      var t1,\n"
-"        list = A._setArrayType([], \$E._eval\$1(\"JSArray<0>\"));\n"
-"      for (t1 = J.get\$iterator\$ax(elements); t1.moveNext\$0();)\n"
-"        B.JSArray_methods.add\$1(list, \$E._as(t1.get\$current()));\n"
-"      list.\$flags = 1;\n"
-"      return list;\n"
-"    },\n"
-"    List_List\$_of(elements, \$E) {\n"
-"      var list, t1;\n"
-"      if (Array.isArray(elements))\n"
-"        return A._setArrayType(elements.slice(0), \$E._eval\$1(\"JSArray<0>\"));\n"
-"      list = A._setArrayType([], \$E._eval\$1(\"JSArray<0>\"));\n"
-"      for (t1 = J.get\$iterator\$ax(elements); t1.moveNext\$0();)\n"
-"        B.JSArray_methods.add\$1(list, t1.get\$current());\n"
-"      return list;\n"
-"    },\n"
-"    List_List\$unmodifiable(elements, \$E) {\n"
-"      var result = A.List_List\$from(elements, false, \$E);\n"
-"      result.\$flags = 3;\n"
-"      return result;\n"
-"    },\n"
-"    String_String\$fromCharCodes(charCodes, start, end) {\n"
-"      var t1, t2, maxLength, array, len;\n"
-"      A.RangeError_checkNotNegative(start, \"start\");\n"
-"      t1 = end == null;\n"
-"      t2 = !t1;\n"
-"      if (t2) {\n"
-"        maxLength = end - start;\n"
-"        if (maxLength < 0)\n"
-"          throw A.wrapException(A.RangeError\$range(end, start, null, \"end\", null));\n"
-"        if (maxLength === 0)\n"
-"          return \"\";\n"
-"      }\n"
-"      if (Array.isArray(charCodes)) {\n"
-"        array = charCodes;\n"
-"        len = array.length;\n"
-"        if (t1)\n"
-"          end = len;\n"
-"        return A.Primitives_stringFromCharCodes(start > 0 || end < len ? array.slice(start, end) : array);\n"
-"      }\n"
-"      if (type\$.NativeUint8List._is(charCodes))\n"
-"        return A.String__stringFromUint8List(charCodes, start, end);\n"
-"      if (t2)\n"
-"        charCodes = J.take\$1\$ax(charCodes, end);\n"
-"      if (start > 0)\n"
-"        charCodes = J.skip\$1\$ax(charCodes, start);\n"
-"      t1 = A.List_List\$_of(charCodes, type\$.int);\n"
-"      return A.Primitives_stringFromCharCodes(t1);\n"
-"    },\n"
-"    String__stringFromUint8List(charCodes, start, endOrNull) {\n"
-"      var len = charCodes.length;\n"
-"      if (start >= len)\n"
-"        return \"\";\n"
-"      return A.Primitives_stringFromNativeUint8List(charCodes, start, endOrNull == null || endOrNull > len ? len : endOrNull);\n"
-"    },\n"
-"    RegExp_RegExp(source, multiLine) {\n"
-"      return new A.JSSyntaxRegExp(source, A.JSSyntaxRegExp_makeNative(source, multiLine, true, false, false, \"\"));\n"
-"    },\n"
-"    identical(a, b) {\n"
-"      return a == null ? b == null : a === b;\n"
-"    },\n"
-"    StringBuffer__writeAll(string, objects, separator) {\n"
-"      var iterator = J.get\$iterator\$ax(objects);\n"
-"      if (!iterator.moveNext\$0())\n"
-"        return string;\n"
-"      if (separator.length === 0) {\n"
-"        do\n"
-"          string += A.S(iterator.get\$current());\n"
-"        while (iterator.moveNext\$0());\n"
-"      } else {\n"
-"        string += A.S(iterator.get\$current());\n"
-"        while (iterator.moveNext\$0())\n"
-"          string = string + separator + A.S(iterator.get\$current());\n"
-"      }\n"
-"      return string;\n"
-"    },\n"
-"    Uri_base() {\n"
-"      var cachedUri, uri,\n"
-"        current = A.Primitives_currentUri();\n"
-"      if (current == null)\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"'Uri.base' is not supported\"));\n"
-"      cachedUri = \$.Uri__cachedBaseUri;\n"
-"      if (cachedUri != null && current === \$.Uri__cachedBaseString)\n"
-"        return cachedUri;\n"
-"      uri = A.Uri_parse(current);\n"
-"      \$.Uri__cachedBaseUri = uri;\n"
-"      \$.Uri__cachedBaseString = current;\n"
-"      return uri;\n"
-"    },\n"
-"    _Uri__uriEncode(canonicalMask, text, encoding, spaceToPlus) {\n"
-"      var t1, bytes, i, t2, byte,\n"
-"        _s16_ = \"0123456789ABCDEF\";\n"
-"      if (encoding === B.C_Utf8Codec) {\n"
-"        t1 = \$.\$get\$_Uri__needsNoEncoding();\n"
-"        t1 = t1._nativeRegExp.test(text);\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        return text;\n"
-"      bytes = encoding.encode\$1(text);\n"
-"      for (t1 = bytes.length, i = 0, t2 = \"\"; i < t1; ++i) {\n"
-"        byte = bytes[i];\n"
-"        if (byte < 128 && (string\$.x00_____.charCodeAt(byte) & canonicalMask) !== 0)\n"
-"          t2 += A.Primitives_stringFromCharCode(byte);\n"
-"        else\n"
-"          t2 = spaceToPlus && byte === 32 ? t2 + \"+\" : t2 + \"%\" + _s16_[byte >>> 4 & 15] + _s16_[byte & 15];\n"
-"      }\n"
-"      return t2.charCodeAt(0) == 0 ? t2 : t2;\n"
-"    },\n"
-"    StackTrace_current() {\n"
-"      return A.getTraceFromException(new Error());\n"
-"    },\n"
-"    DateTime__fourDigits(n) {\n"
-"      var absN = Math.abs(n),\n"
-"        sign = n < 0 ? \"-\" : \"\";\n"
-"      if (absN >= 1000)\n"
-"        return \"\" + n;\n"
-"      if (absN >= 100)\n"
-"        return sign + \"0\" + absN;\n"
-"      if (absN >= 10)\n"
-"        return sign + \"00\" + absN;\n"
-"      return sign + \"000\" + absN;\n"
-"    },\n"
-"    DateTime__threeDigits(n) {\n"
-"      if (n >= 100)\n"
-"        return \"\" + n;\n"
-"      if (n >= 10)\n"
-"        return \"0\" + n;\n"
-"      return \"00\" + n;\n"
-"    },\n"
-"    DateTime__twoDigits(n) {\n"
-"      if (n >= 10)\n"
-"        return \"\" + n;\n"
-"      return \"0\" + n;\n"
-"    },\n"
-"    Duration\$(milliseconds) {\n"
-"      return new A.Duration(1000 * milliseconds);\n"
-"    },\n"
-"    Error_safeToString(object) {\n"
-"      if (typeof object == \"number\" || A._isBool(object) || object == null)\n"
-"        return J.toString\$0\$(object);\n"
-"      if (typeof object == \"string\")\n"
-"        return JSON.stringify(object);\n"
-"      return A.Primitives_safeToString(object);\n"
-"    },\n"
-"    Error_throwWithStackTrace(error, stackTrace) {\n"
-"      A.checkNotNullable(error, \"error\", type\$.Object);\n"
-"      A.checkNotNullable(stackTrace, \"stackTrace\", type\$.StackTrace);\n"
-"      A.Error__throw(error, stackTrace);\n"
-"    },\n"
-"    AssertionError\$(message) {\n"
-"      return new A.AssertionError(message);\n"
-"    },\n"
-"    ArgumentError\$(message, \$name) {\n"
-"      return new A.ArgumentError(false, null, \$name, message);\n"
-"    },\n"
-"    ArgumentError\$value(value, \$name, message) {\n"
-"      return new A.ArgumentError(true, value, \$name, message);\n"
-"    },\n"
-"    ArgumentError\$notNull(\$name) {\n"
-"      return new A.ArgumentError(false, null, \$name, \"Must not be null\");\n"
-"    },\n"
-"    ArgumentError_checkNotNull(argument, \$name, \$T) {\n"
-"      return argument;\n"
-"    },\n"
-"    RangeError\$(message) {\n"
-"      var _null = null;\n"
-"      return new A.RangeError(_null, _null, false, _null, _null, message);\n"
-"    },\n"
-"    RangeError\$value(value, \$name) {\n"
-"      return new A.RangeError(null, null, true, value, \$name, \"Value not in range\");\n"
-"    },\n"
-"    RangeError\$range(invalidValue, minValue, maxValue, \$name, message) {\n"
-"      return new A.RangeError(minValue, maxValue, true, invalidValue, \$name, \"Invalid value\");\n"
-"    },\n"
-"    RangeError_checkValueInInterval(value, minValue, maxValue, \$name) {\n"
-"      if (value < minValue || value > maxValue)\n"
-"        throw A.wrapException(A.RangeError\$range(value, minValue, maxValue, \$name, null));\n"
-"      return value;\n"
-"    },\n"
-"    RangeError_checkValidRange(start, end, \$length) {\n"
-"      if (0 > start || start > \$length)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, \$length, \"start\", null));\n"
-"      if (end != null) {\n"
-"        if (start > end || end > \$length)\n"
-"          throw A.wrapException(A.RangeError\$range(end, start, \$length, \"end\", null));\n"
-"        return end;\n"
-"      }\n"
-"      return \$length;\n"
-"    },\n"
-"    RangeError_checkNotNegative(value, \$name) {\n"
-"      if (value < 0)\n"
-"        throw A.wrapException(A.RangeError\$range(value, 0, null, \$name, null));\n"
-"      return value;\n"
-"    },\n"
-"    IndexError\$withLength(invalidValue, \$length, indexable, message, \$name) {\n"
-"      return new A.IndexError(\$length, true, invalidValue, \$name, \"Index out of range\");\n"
-"    },\n"
-"    UnsupportedError\$(message) {\n"
-"      return new A.UnsupportedError(message);\n"
-"    },\n"
-"    UnimplementedError\$(message) {\n"
-"      return new A.UnimplementedError(message);\n"
-"    },\n"
-"    StateError\$(message) {\n"
-"      return new A.StateError(message);\n"
-"    },\n"
-"    ConcurrentModificationError\$(modifiedObject) {\n"
-"      return new A.ConcurrentModificationError(modifiedObject);\n"
-"    },\n"
-"    FormatException\$(message, source, offset) {\n"
-"      return new A.FormatException(message, source, offset);\n"
-"    },\n"
-"    Iterable_iterableToShortString(iterable, leftDelimiter, rightDelimiter) {\n"
-"      var parts, t1;\n"
-"      if (A.isToStringVisiting(iterable)) {\n"
-"        if (leftDelimiter === \"(\" && rightDelimiter === \")\")\n"
-"          return \"(...)\";\n"
-"        return leftDelimiter + \"...\" + rightDelimiter;\n"
-"      }\n"
-"      parts = A._setArrayType([], type\$.JSArray_String);\n"
-"      B.JSArray_methods.add\$1(\$._toStringVisiting, iterable);\n"
-"      try {\n"
-"        A._iterablePartsToStrings(iterable, parts);\n"
-"      } finally {\n"
-"        if (0 >= \$._toStringVisiting.length)\n"
-"          return A.ioore(\$._toStringVisiting, -1);\n"
-"        \$._toStringVisiting.pop();\n"
-"      }\n"
-"      t1 = A.StringBuffer__writeAll(leftDelimiter, type\$.Iterable_dynamic._as(parts), \", \") + rightDelimiter;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    Iterable_iterableToFullString(iterable, leftDelimiter, rightDelimiter) {\n"
-"      var buffer, t1;\n"
-"      if (A.isToStringVisiting(iterable))\n"
-"        return leftDelimiter + \"...\" + rightDelimiter;\n"
-"      buffer = new A.StringBuffer(leftDelimiter);\n"
-"      B.JSArray_methods.add\$1(\$._toStringVisiting, iterable);\n"
-"      try {\n"
-"        t1 = buffer;\n"
-"        t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, \", \");\n"
-"      } finally {\n"
-"        if (0 >= \$._toStringVisiting.length)\n"
-"          return A.ioore(\$._toStringVisiting, -1);\n"
-"        \$._toStringVisiting.pop();\n"
-"      }\n"
-"      buffer._contents += rightDelimiter;\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _iterablePartsToStrings(iterable, parts) {\n"
-"      var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,\n"
-"        it = J.get\$iterator\$ax(iterable),\n"
-"        \$length = 0, count = 0;\n"
-"      for (;;) {\n"
-"        if (!(\$length < 80 || count < 3))\n"
-"          break;\n"
-"        if (!it.moveNext\$0())\n"
-"          return;\n"
-"        next = A.S(it.get\$current());\n"
-"        B.JSArray_methods.add\$1(parts, next);\n"
-"        \$length += next.length + 2;\n"
-"        ++count;\n"
-"      }\n"
-"      if (!it.moveNext\$0()) {\n"
-"        if (count <= 5)\n"
-"          return;\n"
-"        if (0 >= parts.length)\n"
-"          return A.ioore(parts, -1);\n"
-"        ultimateString = parts.pop();\n"
-"        if (0 >= parts.length)\n"
-"          return A.ioore(parts, -1);\n"
-"        penultimateString = parts.pop();\n"
-"      } else {\n"
-"        penultimate = it.get\$current();\n"
-"        ++count;\n"
-"        if (!it.moveNext\$0()) {\n"
-"          if (count <= 4) {\n"
-"            B.JSArray_methods.add\$1(parts, A.S(penultimate));\n"
-"            return;\n"
-"          }\n"
-"          ultimateString = A.S(penultimate);\n"
-"          if (0 >= parts.length)\n"
-"            return A.ioore(parts, -1);\n"
-"          penultimateString = parts.pop();\n"
-"          \$length += ultimateString.length + 2;\n"
-"        } else {\n"
-"          ultimate = it.get\$current();\n"
-"          ++count;\n"
-"          for (; it.moveNext\$0(); penultimate = ultimate, ultimate = ultimate0) {\n"
-"            ultimate0 = it.get\$current();\n"
-"            ++count;\n"
-"            if (count > 100) {\n"
-"              for (;;) {\n"
-"                if (!(\$length > 75 && count > 3))\n"
-"                  break;\n"
-"                if (0 >= parts.length)\n"
-"                  return A.ioore(parts, -1);\n"
-"                \$length -= parts.pop().length + 2;\n"
-"                --count;\n"
-"              }\n"
-"              B.JSArray_methods.add\$1(parts, \"...\");\n"
-"              return;\n"
-"            }\n"
-"          }\n"
-"          penultimateString = A.S(penultimate);\n"
-"          ultimateString = A.S(ultimate);\n"
-"          \$length += ultimateString.length + penultimateString.length + 4;\n"
-"        }\n"
-"      }\n"
-"      if (count > parts.length + 2) {\n"
-"        \$length += 5;\n"
-"        elision = \"...\";\n"
-"      } else\n"
-"        elision = null;\n"
-"      for (;;) {\n"
-"        if (!(\$length > 80 && parts.length > 3))\n"
-"          break;\n"
-"        if (0 >= parts.length)\n"
-"          return A.ioore(parts, -1);\n"
-"        \$length -= parts.pop().length + 2;\n"
-"        if (elision == null) {\n"
-"          \$length += 5;\n"
-"          elision = \"...\";\n"
-"        }\n"
-"      }\n"
-"      if (elision != null)\n"
-"        B.JSArray_methods.add\$1(parts, elision);\n"
-"      B.JSArray_methods.add\$1(parts, penultimateString);\n"
-"      B.JSArray_methods.add\$1(parts, ultimateString);\n"
-"    },\n"
-"    Map_castFrom(source, \$K, \$V, \$K2, \$V2) {\n"
-"      return new A.CastMap(source, \$K._eval\$1(\"@<0>\")._bind\$1(\$V)._bind\$1(\$K2)._bind\$1(\$V2)._eval\$1(\"CastMap<1,2,3,4>\"));\n"
-"    },\n"
-"    Object_hash(object1, object2, object3, object4, object5, object6, object7, object8, object9, object10, object11, object12, object13) {\n"
-"      var t1;\n"
-"      if (B.C_SentinelValue === object3) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object4) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object5) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object6) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object7) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object8) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object9) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        object8 = J.get\$hashCode\$(object8);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object10) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        object8 = J.get\$hashCode\$(object8);\n"
-"        object9 = J.get\$hashCode\$(object9);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8), object9));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object11) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        object8 = J.get\$hashCode\$(object8);\n"
-"        object9 = J.get\$hashCode\$(object9);\n"
-"        object10 = J.get\$hashCode\$(object10);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8), object9), object10));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object12) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        object8 = J.get\$hashCode\$(object8);\n"
-"        object9 = J.get\$hashCode\$(object9);\n"
-"        object10 = J.get\$hashCode\$(object10);\n"
-"        object11 = J.get\$hashCode\$(object11);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8), object9), object10), object11));\n"
-"      }\n"
-"      if (B.C_SentinelValue === object13) {\n"
-"        t1 = J.get\$hashCode\$(object1);\n"
-"        object2 = J.get\$hashCode\$(object2);\n"
-"        object3 = J.get\$hashCode\$(object3);\n"
-"        object4 = J.get\$hashCode\$(object4);\n"
-"        object5 = J.get\$hashCode\$(object5);\n"
-"        object6 = J.get\$hashCode\$(object6);\n"
-"        object7 = J.get\$hashCode\$(object7);\n"
-"        object8 = J.get\$hashCode\$(object8);\n"
-"        object9 = J.get\$hashCode\$(object9);\n"
-"        object10 = J.get\$hashCode\$(object10);\n"
-"        object11 = J.get\$hashCode\$(object11);\n"
-"        object12 = J.get\$hashCode\$(object12);\n"
-"        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8), object9), object10), object11), object12));\n"
-"      }\n"
-"      t1 = J.get\$hashCode\$(object1);\n"
-"      object2 = J.get\$hashCode\$(object2);\n"
-"      object3 = J.get\$hashCode\$(object3);\n"
-"      object4 = J.get\$hashCode\$(object4);\n"
-"      object5 = J.get\$hashCode\$(object5);\n"
-"      object6 = J.get\$hashCode\$(object6);\n"
-"      object7 = J.get\$hashCode\$(object7);\n"
-"      object8 = J.get\$hashCode\$(object8);\n"
-"      object9 = J.get\$hashCode\$(object9);\n"
-"      object10 = J.get\$hashCode\$(object10);\n"
-"      object11 = J.get\$hashCode\$(object11);\n"
-"      object12 = J.get\$hashCode\$(object12);\n"
-"      object13 = J.get\$hashCode\$(object13);\n"
-"      object13 = A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(\$.\$get\$_hashSeed(), t1), object2), object3), object4), object5), object6), object7), object8), object9), object10), object11), object12), object13));\n"
-"      return object13;\n"
-"    },\n"
-"    Object_hashAll(objects) {\n"
-"      var t1,\n"
-"        hash = \$.\$get\$_hashSeed();\n"
-"      for (t1 = J.get\$iterator\$ax(objects); t1.moveNext\$0();)\n"
-"        hash = A.SystemHash_combine(hash, J.get\$hashCode\$(t1.get\$current()));\n"
-"      return A.SystemHash_finish(hash);\n"
-"    },\n"
-"    print(object) {\n"
-"      var toZone = \$._printToZone;\n"
-"      if (toZone == null)\n"
-"        A.printString(object);\n"
-"      else\n"
-"        toZone.call\$1(object);\n"
-"    },\n"
-"    Uri_parse(uri) {\n"
-"      var delta, indices, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, isSimple, scheme, t1, t2, schemeAuth, queryStart0, pathStart0, port, userInfoStart, userInfo, host, portNumber, path, query, _null = null,\n"
-"        end = uri.length;\n"
-"      if (end >= 5) {\n"
-"        if (4 >= end)\n"
-"          return A.ioore(uri, 4);\n"
-"        delta = ((uri.charCodeAt(4) ^ 58) * 3 | uri.charCodeAt(0) ^ 100 | uri.charCodeAt(1) ^ 97 | uri.charCodeAt(2) ^ 116 | uri.charCodeAt(3) ^ 97) >>> 0;\n"
-"        if (delta === 0)\n"
-"          return A.UriData__parse(end < end ? B.JSString_methods.substring\$2(uri, 0, end) : uri, 5, _null).get\$uri();\n"
-"        else if (delta === 32)\n"
-"          return A.UriData__parse(B.JSString_methods.substring\$2(uri, 5, end), 0, _null).get\$uri();\n"
-"      }\n"
-"      indices = A.List_List\$filled(8, 0, false, type\$.int);\n"
-"      B.JSArray_methods.\$indexSet(indices, 0, 0);\n"
-"      B.JSArray_methods.\$indexSet(indices, 1, -1);\n"
-"      B.JSArray_methods.\$indexSet(indices, 2, -1);\n"
-"      B.JSArray_methods.\$indexSet(indices, 7, -1);\n"
-"      B.JSArray_methods.\$indexSet(indices, 3, 0);\n"
-"      B.JSArray_methods.\$indexSet(indices, 4, 0);\n"
-"      B.JSArray_methods.\$indexSet(indices, 5, end);\n"
-"      B.JSArray_methods.\$indexSet(indices, 6, end);\n"
-"      if (A._scan(uri, 0, end, 0, indices) >= 14)\n"
-"        B.JSArray_methods.\$indexSet(indices, 7, end);\n"
-"      schemeEnd = indices[1];\n"
-"      if (schemeEnd >= 0)\n"
-"        if (A._scan(uri, 0, schemeEnd, 20, indices) === 20)\n"
-"          indices[7] = schemeEnd;\n"
-"      hostStart = indices[2] + 1;\n"
-"      portStart = indices[3];\n"
-"      pathStart = indices[4];\n"
-"      queryStart = indices[5];\n"
-"      fragmentStart = indices[6];\n"
-"      if (fragmentStart < queryStart)\n"
-"        queryStart = fragmentStart;\n"
-"      if (pathStart < hostStart)\n"
-"        pathStart = queryStart;\n"
-"      else if (pathStart <= schemeEnd)\n"
-"        pathStart = schemeEnd + 1;\n"
-"      if (portStart < hostStart)\n"
-"        portStart = pathStart;\n"
-"      isSimple = indices[7] < 0;\n"
-"      scheme = _null;\n"
-"      if (isSimple) {\n"
-"        isSimple = false;\n"
-"        if (!(hostStart > schemeEnd + 3)) {\n"
-"          t1 = portStart > 0;\n"
-"          if (!(t1 && portStart + 1 === pathStart)) {\n"
-"            if (!B.JSString_methods.startsWith\$2(uri, \"\\\\\", pathStart))\n"
-"              if (hostStart > 0)\n"
-"                t2 = B.JSString_methods.startsWith\$2(uri, \"\\\\\", hostStart - 1) || B.JSString_methods.startsWith\$2(uri, \"\\\\\", hostStart - 2);\n"
-"              else\n"
-"                t2 = false;\n"
-"            else\n"
-"              t2 = true;\n"
-"            if (!t2) {\n"
-"              if (!(queryStart < end && queryStart === pathStart + 2 && B.JSString_methods.startsWith\$2(uri, \"..\", pathStart)))\n"
-"                t2 = queryStart > pathStart + 2 && B.JSString_methods.startsWith\$2(uri, \"/..\", queryStart - 3);\n"
-"              else\n"
-"                t2 = true;\n"
-"              if (!t2)\n"
-"                if (schemeEnd === 4) {\n"
-"                  if (B.JSString_methods.startsWith\$2(uri, \"file\", 0)) {\n"
-"                    if (hostStart <= 0) {\n"
-"                      if (!B.JSString_methods.startsWith\$2(uri, \"/\", pathStart)) {\n"
-"                        schemeAuth = \"file:///\";\n"
-"                        delta = 3;\n"
-"                      } else {\n"
-"                        schemeAuth = \"file://\";\n"
-"                        delta = 2;\n"
-"                      }\n"
-"                      uri = schemeAuth + B.JSString_methods.substring\$2(uri, pathStart, end);\n"
-"                      queryStart += delta;\n"
-"                      fragmentStart += delta;\n"
-"                      end = uri.length;\n"
-"                      hostStart = 7;\n"
-"                      portStart = 7;\n"
-"                      pathStart = 7;\n"
-"                    } else if (pathStart === queryStart) {\n"
-"                      ++fragmentStart;\n"
-"                      queryStart0 = queryStart + 1;\n"
-"                      uri = B.JSString_methods.replaceRange\$3(uri, pathStart, queryStart, \"/\");\n"
-"                      ++end;\n"
-"                      queryStart = queryStart0;\n"
-"                    }\n"
-"                    scheme = \"file\";\n"
-"                  } else if (B.JSString_methods.startsWith\$2(uri, \"http\", 0)) {\n"
-"                    if (t1 && portStart + 3 === pathStart && B.JSString_methods.startsWith\$2(uri, \"80\", portStart + 1)) {\n"
-"                      fragmentStart -= 3;\n"
-"                      pathStart0 = pathStart - 3;\n"
-"                      queryStart -= 3;\n"
-"                      uri = B.JSString_methods.replaceRange\$3(uri, portStart, pathStart, \"\");\n"
-"                      end -= 3;\n"
-"                      pathStart = pathStart0;\n"
-"                    }\n"
-"                    scheme = \"http\";\n"
-"                  }\n"
-"                } else if (schemeEnd === 5 && B.JSString_methods.startsWith\$2(uri, \"https\", 0)) {\n"
-"                  if (t1 && portStart + 4 === pathStart && B.JSString_methods.startsWith\$2(uri, \"443\", portStart + 1)) {\n"
-"                    fragmentStart -= 4;\n"
-"                    pathStart0 = pathStart - 4;\n"
-"                    queryStart -= 4;\n"
-"                    uri = B.JSString_methods.replaceRange\$3(uri, portStart, pathStart, \"\");\n"
-"                    end -= 3;\n"
-"                    pathStart = pathStart0;\n"
-"                  }\n"
-"                  scheme = \"https\";\n"
-"                }\n"
-"              isSimple = !t2;\n"
-"            }\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      if (isSimple)\n"
-"        return new A._SimpleUri(end < uri.length ? B.JSString_methods.substring\$2(uri, 0, end) : uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);\n"
-"      if (scheme == null)\n"
-"        if (schemeEnd > 0)\n"
-"          scheme = A._Uri__makeScheme(uri, 0, schemeEnd);\n"
-"        else {\n"
-"          if (schemeEnd === 0)\n"
-"            A._Uri__fail(uri, 0, \"Invalid empty scheme\");\n"
-"          scheme = \"\";\n"
-"        }\n"
-"      port = _null;\n"
-"      if (hostStart > 0) {\n"
-"        userInfoStart = schemeEnd + 3;\n"
-"        userInfo = userInfoStart < hostStart ? A._Uri__makeUserInfo(uri, userInfoStart, hostStart - 1) : \"\";\n"
-"        host = A._Uri__makeHost(uri, hostStart, portStart, false);\n"
-"        t1 = portStart + 1;\n"
-"        if (t1 < pathStart) {\n"
-"          portNumber = A.Primitives_parseInt(B.JSString_methods.substring\$2(uri, t1, pathStart), _null);\n"
-"          port = A._Uri__makePort(portNumber == null ? A.throwExpression(A.FormatException\$(\"Invalid port\", uri, t1)) : portNumber, scheme);\n"
-"        }\n"
-"      } else {\n"
-"        host = _null;\n"
-"        userInfo = \"\";\n"
-"      }\n"
-"      path = A._Uri__makePath(uri, pathStart, queryStart, _null, scheme, host != null);\n"
-"      query = queryStart < fragmentStart ? A._Uri__makeQuery(uri, queryStart + 1, fragmentStart, _null) : _null;\n"
-"      return A._Uri\$_internal(scheme, userInfo, host, port, path, query, fragmentStart < end ? A._Uri__makeFragment(uri, fragmentStart + 1, end) : _null);\n"
-"    },\n"
-"    Uri_decodeComponent(encodedComponent) {\n"
-"      A._asString(encodedComponent);\n"
-"      return A._Uri__uriDecode(encodedComponent, 0, encodedComponent.length, B.C_Utf8Codec, false);\n"
-"    },\n"
-"    Uri__ipv4FormatError(msg, source, position) {\n"
-"      throw A.wrapException(A.FormatException\$(\"Illegal IPv4 address, \" + msg, source, position));\n"
-"    },\n"
-"    Uri__parseIPv4Address(host, start, end, target, targetOffset) {\n"
-"      var t1, octetStart, cursor, octetIndex, octetValue, char, digit, octetIndex0, t2,\n"
-"        _s17_ = \"invalid character\";\n"
-"      for (t1 = host.length, octetStart = start, cursor = octetStart, octetIndex = 0, octetValue = 0;;) {\n"
-"        if (cursor >= end)\n"
-"          char = 0;\n"
-"        else {\n"
-"          if (!(cursor >= 0 && cursor < t1))\n"
-"            return A.ioore(host, cursor);\n"
-"          char = host.charCodeAt(cursor);\n"
-"        }\n"
-"        digit = char ^ 48;\n"
-"        if (digit <= 9) {\n"
-"          if (octetValue !== 0 || cursor === octetStart) {\n"
-"            octetValue = octetValue * 10 + digit;\n"
-"            if (octetValue <= 255) {\n"
-"              ++cursor;\n"
-"              continue;\n"
-"            }\n"
-"            A.Uri__ipv4FormatError(\"each part must be in the range 0..255\", host, octetStart);\n"
-"          }\n"
-"          A.Uri__ipv4FormatError(\"parts must not have leading zeros\", host, octetStart);\n"
-"        }\n"
-"        if (cursor === octetStart) {\n"
-"          if (cursor === end)\n"
-"            break;\n"
-"          A.Uri__ipv4FormatError(_s17_, host, cursor);\n"
-"        }\n"
-"        octetIndex0 = octetIndex + 1;\n"
-"        t2 = targetOffset + octetIndex;\n"
-"        target.\$flags & 2 && A.throwUnsupportedOperation(target);\n"
-"        if (!(t2 < 16))\n"
-"          return A.ioore(target, t2);\n"
-"        target[t2] = octetValue;\n"
-"        if (char === 46) {\n"
-"          if (octetIndex0 < 4) {\n"
-"            ++cursor;\n"
-"            octetIndex = octetIndex0;\n"
-"            octetStart = cursor;\n"
-"            octetValue = 0;\n"
-"            continue;\n"
-"          }\n"
-"          break;\n"
-"        }\n"
-"        if (cursor === end) {\n"
-"          if (octetIndex0 === 4)\n"
-"            return;\n"
-"          break;\n"
-"        }\n"
-"        A.Uri__ipv4FormatError(_s17_, host, cursor);\n"
-"        octetIndex = octetIndex0;\n"
-"      }\n"
-"      A.Uri__ipv4FormatError(\"IPv4 address should contain exactly 4 parts\", host, cursor);\n"
-"    },\n"
-"    Uri__validateIPvAddress(host, start, end) {\n"
-"      var error;\n"
-"      if (start === end)\n"
-"        throw A.wrapException(A.FormatException\$(\"Empty IP address\", host, start));\n"
-"      if (!(start >= 0 && start < host.length))\n"
-"        return A.ioore(host, start);\n"
-"      if (host.charCodeAt(start) === 118) {\n"
-"        error = A.Uri__validateIPvFutureAddress(host, start, end);\n"
-"        if (error != null)\n"
-"          throw A.wrapException(error);\n"
-"        return false;\n"
-"      }\n"
-"      A.Uri_parseIPv6Address(host, start, end);\n"
-"      return true;\n"
-"    },\n"
-"    Uri__validateIPvFutureAddress(host, start, end) {\n"
-"      var t1, cursor, cursor0, char, ucChar,\n"
-"        _s38_ = \"Missing hex-digit in IPvFuture address\",\n"
-"        _s128_ = string\$.x00_____;\n"
-"      ++start;\n"
-"      for (t1 = host.length, cursor = start;; cursor = cursor0) {\n"
-"        if (cursor < end) {\n"
-"          cursor0 = cursor + 1;\n"
-"          if (!(cursor >= 0 && cursor < t1))\n"
-"            return A.ioore(host, cursor);\n"
-"          char = host.charCodeAt(cursor);\n"
-"          if ((char ^ 48) <= 9)\n"
-"            continue;\n"
-"          ucChar = char | 32;\n"
-"          if (ucChar >= 97 && ucChar <= 102)\n"
-"            continue;\n"
-"          if (char === 46) {\n"
-"            if (cursor0 - 1 === start)\n"
-"              return new A.FormatException(_s38_, host, cursor0);\n"
-"            cursor = cursor0;\n"
-"            break;\n"
-"          }\n"
-"          return new A.FormatException(\"Unexpected character\", host, cursor0 - 1);\n"
-"        }\n"
-"        if (cursor - 1 === start)\n"
-"          return new A.FormatException(_s38_, host, cursor);\n"
-"        return new A.FormatException(\"Missing '.' in IPvFuture address\", host, cursor);\n"
-"      }\n"
-"      if (cursor === end)\n"
-"        return new A.FormatException(\"Missing address in IPvFuture address, host, cursor\", null, null);\n"
-"      for (;;) {\n"
-"        if (!(cursor >= 0 && cursor < t1))\n"
-"          return A.ioore(host, cursor);\n"
-"        char = host.charCodeAt(cursor);\n"
-"        if (!(char < 128))\n"
-"          return A.ioore(_s128_, char);\n"
-"        if ((_s128_.charCodeAt(char) & 16) !== 0) {\n"
-"          ++cursor;\n"
-"          if (cursor < end)\n"
-"            continue;\n"
-"          return null;\n"
-"        }\n"
-"        return new A.FormatException(\"Invalid IPvFuture address character\", host, cursor);\n"
-"      }\n"
-"    },\n"
-"    Uri_parseIPv6Address(host, start, end) {\n"
-"      var result, t1, wildcardAt, partCount, t2, cursor, partStart, hexValue, decValue, char, _0_0, decValue0, hexDigit, _1_0, t3, partCount0, partAfterWildcard, partsAfterWildcard, positionAfterWildcard, newPositionAfterWildcard,\n"
-"        _s39_ = \"an address must contain at most 8 parts\",\n"
-"        error = new A.Uri_parseIPv6Address_error(host);\n"
-"      if (end - start < 2)\n"
-"        error.call\$2(\"address is too short\", null);\n"
-"      result = new Uint8Array(16);\n"
-"      t1 = host.length;\n"
-"      if (!(start >= 0 && start < t1))\n"
-"        return A.ioore(host, start);\n"
-"      wildcardAt = -1;\n"
-"      partCount = 0;\n"
-"      if (host.charCodeAt(start) === 58) {\n"
-"        t2 = start + 1;\n"
-"        if (!(t2 < t1))\n"
-"          return A.ioore(host, t2);\n"
-"        if (host.charCodeAt(t2) === 58) {\n"
-"          cursor = start + 2;\n"
-"          partStart = cursor;\n"
-"          wildcardAt = 0;\n"
-"          partCount = 1;\n"
-"        } else {\n"
-"          error.call\$2(\"invalid start colon\", start);\n"
-"          cursor = start;\n"
-"          partStart = cursor;\n"
-"        }\n"
-"      } else {\n"
-"        cursor = start;\n"
-"        partStart = cursor;\n"
-"      }\n"
-"      for (hexValue = 0, decValue = true;;) {\n"
-"        if (cursor >= end)\n"
-"          char = 0;\n"
-"        else {\n"
-"          if (!(cursor < t1))\n"
-"            return A.ioore(host, cursor);\n"
-"          char = host.charCodeAt(cursor);\n"
-"        }\n"
-"        \$label0\$0: {\n"
-"          _0_0 = char ^ 48;\n"
-"          decValue0 = false;\n"
-"          if (_0_0 <= 9)\n"
-"            hexDigit = _0_0;\n"
-"          else {\n"
-"            _1_0 = char | 32;\n"
-"            if (_1_0 >= 97 && _1_0 <= 102)\n"
-"              hexDigit = _1_0 - 87;\n"
-"            else\n"
-"              break \$label0\$0;\n"
-"            decValue = decValue0;\n"
-"          }\n"
-"          if (cursor < partStart + 4) {\n"
-"            hexValue = hexValue * 16 + hexDigit;\n"
-"            ++cursor;\n"
-"            continue;\n"
-"          }\n"
-"          error.call\$2(\"an IPv6 part can contain a maximum of 4 hex digits\", partStart);\n"
-"        }\n"
-"        if (cursor > partStart) {\n"
-"          if (char === 46) {\n"
-"            if (decValue) {\n"
-"              if (partCount <= 6) {\n"
-"                A.Uri__parseIPv4Address(host, partStart, end, result, partCount * 2);\n"
-"                partCount += 2;\n"
-"                cursor = end;\n"
-"                break;\n"
-"              }\n"
-"              error.call\$2(_s39_, partStart);\n"
-"            }\n"
-"            break;\n"
-"          }\n"
-"          t2 = partCount * 2;\n"
-"          t3 = B.JSInt_methods._shrOtherPositive\$1(hexValue, 8);\n"
-"          if (!(t2 < 16))\n"
-"            return A.ioore(result, t2);\n"
-"          result[t2] = t3;\n"
-"          ++t2;\n"
-"          if (!(t2 < 16))\n"
-"            return A.ioore(result, t2);\n"
-"          result[t2] = hexValue & 255;\n"
-"          ++partCount;\n"
-"          if (char === 58) {\n"
-"            if (partCount < 8) {\n"
-"              ++cursor;\n"
-"              partStart = cursor;\n"
-"              hexValue = 0;\n"
-"              decValue = true;\n"
-"              continue;\n"
-"            }\n"
-"            error.call\$2(_s39_, cursor);\n"
-"          }\n"
-"          break;\n"
-"        }\n"
-"        if (char === 58) {\n"
-"          if (wildcardAt < 0) {\n"
-"            partCount0 = partCount + 1;\n"
-"            ++cursor;\n"
-"            wildcardAt = partCount;\n"
-"            partCount = partCount0;\n"
-"            partStart = cursor;\n"
-"            continue;\n"
-"          }\n"
-"          error.call\$2(\"only one wildcard `::` is allowed\", cursor);\n"
-"        }\n"
-"        if (wildcardAt !== partCount - 1)\n"
-"          error.call\$2(\"missing part\", cursor);\n"
-"        break;\n"
-"      }\n"
-"      if (cursor < end)\n"
-"        error.call\$2(\"invalid character\", cursor);\n"
-"      if (partCount < 8) {\n"
-"        if (wildcardAt < 0)\n"
-"          error.call\$2(\"an address without a wildcard must contain exactly 8 parts\", end);\n"
-"        partAfterWildcard = wildcardAt + 1;\n"
-"        partsAfterWildcard = partCount - partAfterWildcard;\n"
-"        if (partsAfterWildcard > 0) {\n"
-"          positionAfterWildcard = partAfterWildcard * 2;\n"
-"          newPositionAfterWildcard = 16 - partsAfterWildcard * 2;\n"
-"          B.NativeUint8List_methods.setRange\$4(result, newPositionAfterWildcard, 16, result, positionAfterWildcard);\n"
-"          B.NativeUint8List_methods.fillRange\$3(result, positionAfterWildcard, newPositionAfterWildcard, 0);\n"
-"        }\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    _Uri\$_internal(scheme, _userInfo, _host, _port, path, _query, _fragment) {\n"
-"      return new A._Uri(scheme, _userInfo, _host, _port, path, _query, _fragment);\n"
-"    },\n"
-"    _Uri__Uri(host, path, pathSegments, scheme) {\n"
-"      var userInfo, query, fragment, port, isFile, t1, hasAuthority, t2, _null = null;\n"
-"      scheme = scheme == null ? \"\" : A._Uri__makeScheme(scheme, 0, scheme.length);\n"
-"      userInfo = A._Uri__makeUserInfo(_null, 0, 0);\n"
-"      host = A._Uri__makeHost(host, 0, host == null ? 0 : host.length, false);\n"
-"      query = A._Uri__makeQuery(_null, 0, 0, _null);\n"
-"      fragment = A._Uri__makeFragment(_null, 0, 0);\n"
-"      port = A._Uri__makePort(_null, scheme);\n"
-"      isFile = scheme === \"file\";\n"
-"      if (host == null)\n"
-"        t1 = userInfo.length !== 0 || port != null || isFile;\n"
-"      else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        host = \"\";\n"
-"      t1 = host == null;\n"
-"      hasAuthority = !t1;\n"
-"      path = A._Uri__makePath(path, 0, path == null ? 0 : path.length, pathSegments, scheme, hasAuthority);\n"
-"      t2 = scheme.length === 0;\n"
-"      if (t2 && t1 && !B.JSString_methods.startsWith\$1(path, \"/\"))\n"
-"        path = A._Uri__normalizeRelativePath(path, !t2 || hasAuthority);\n"
-"      else\n"
-"        path = A._Uri__removeDotSegments(path);\n"
-"      return A._Uri\$_internal(scheme, userInfo, t1 && B.JSString_methods.startsWith\$1(path, \"//\") ? \"\" : host, port, path, query, fragment);\n"
-"    },\n"
-"    _Uri__defaultPort(scheme) {\n"
-"      if (scheme === \"http\")\n"
-"        return 80;\n"
-"      if (scheme === \"https\")\n"
-"        return 443;\n"
-"      return 0;\n"
-"    },\n"
-"    _Uri__fail(uri, index, message) {\n"
-"      throw A.wrapException(A.FormatException\$(message, uri, index));\n"
-"    },\n"
-"    _Uri__checkNonWindowsPathReservedCharacters(segments, argumentError) {\n"
-"      var t1, _i, segment;\n"
-"      for (t1 = segments.length, _i = 0; _i < t1; ++_i) {\n"
-"        segment = segments[_i];\n"
-"        if (B.JSString_methods.contains\$1(segment, \"/\")) {\n"
-"          t1 = A.UnsupportedError\$(\"Illegal path character \" + segment);\n"
-"          throw A.wrapException(t1);\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    _Uri__makePort(port, scheme) {\n"
-"      if (port != null && port === A._Uri__defaultPort(scheme))\n"
-"        return null;\n"
-"      return port;\n"
-"    },\n"
-"    _Uri__makeHost(host, start, end, strictIPv6) {\n"
-"      var t1, t2, t3, zoneID, index, zoneIDstart, isIPv6, hostChars, i;\n"
-"      if (host == null)\n"
-"        return null;\n"
-"      if (start === end)\n"
-"        return \"\";\n"
-"      t1 = host.length;\n"
-"      if (!(start >= 0 && start < t1))\n"
-"        return A.ioore(host, start);\n"
-"      if (host.charCodeAt(start) === 91) {\n"
-"        t2 = end - 1;\n"
-"        if (!(t2 >= 0 && t2 < t1))\n"
-"          return A.ioore(host, t2);\n"
-"        if (host.charCodeAt(t2) !== 93)\n"
-"          A._Uri__fail(host, start, \"Missing end `]` to match `[` in host\");\n"
-"        t3 = start + 1;\n"
-"        if (!(t3 < t1))\n"
-"          return A.ioore(host, t3);\n"
-"        zoneID = \"\";\n"
-"        if (host.charCodeAt(t3) !== 118) {\n"
-"          index = A._Uri__checkZoneID(host, t3, t2);\n"
-"          if (index < t2) {\n"
-"            zoneIDstart = index + 1;\n"
-"            zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith\$2(host, \"25\", zoneIDstart) ? index + 3 : zoneIDstart, t2, \"%25\");\n"
-"          }\n"
-"        } else\n"
-"          index = t2;\n"
-"        isIPv6 = A.Uri__validateIPvAddress(host, t3, index);\n"
-"        hostChars = B.JSString_methods.substring\$2(host, t3, index);\n"
-"        return \"[\" + (isIPv6 ? hostChars.toLowerCase() : hostChars) + zoneID + \"]\";\n"
-"      }\n"
-"      for (i = start; i < end; ++i) {\n"
-"        if (!(i < t1))\n"
-"          return A.ioore(host, i);\n"
-"        if (host.charCodeAt(i) === 58) {\n"
-"          index = B.JSString_methods.indexOf\$2(host, \"%\", start);\n"
-"          index = index >= start && index < end ? index : end;\n"
-"          if (index < end) {\n"
-"            zoneIDstart = index + 1;\n"
-"            zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith\$2(host, \"25\", zoneIDstart) ? index + 3 : zoneIDstart, end, \"%25\");\n"
-"          } else\n"
-"            zoneID = \"\";\n"
-"          A.Uri_parseIPv6Address(host, start, index);\n"
-"          return \"[\" + B.JSString_methods.substring\$2(host, start, index) + zoneID + \"]\";\n"
-"        }\n"
-"      }\n"
-"      return A._Uri__normalizeRegName(host, start, end);\n"
-"    },\n"
-"    _Uri__checkZoneID(host, start, end) {\n"
-"      var index = B.JSString_methods.indexOf\$2(host, \"%\", start);\n"
-"      return index >= start && index < end ? index : end;\n"
-"    },\n"
-"    _Uri__normalizeZoneID(host, start, end, prefix) {\n"
-"      var t1, index, sectionStart, isNormalized, char, replacement, t2, t3, sourceLength, tail, slice,\n"
-"        buffer = prefix !== \"\" ? new A.StringBuffer(prefix) : null;\n"
-"      for (t1 = host.length, index = start, sectionStart = index, isNormalized = true; index < end;) {\n"
-"        if (!(index >= 0 && index < t1))\n"
-"          return A.ioore(host, index);\n"
-"        char = host.charCodeAt(index);\n"
-"        if (char === 37) {\n"
-"          replacement = A._Uri__normalizeEscape(host, index, true);\n"
-"          t2 = replacement == null;\n"
-"          if (t2 && isNormalized) {\n"
-"            index += 3;\n"
-"            continue;\n"
-"          }\n"
-"          if (buffer == null)\n"
-"            buffer = new A.StringBuffer(\"\");\n"
-"          t3 = buffer._contents += B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"          if (t2)\n"
-"            replacement = B.JSString_methods.substring\$2(host, index, index + 3);\n"
-"          else if (replacement === \"%\")\n"
-"            A._Uri__fail(host, index, \"ZoneID should not contain % anymore\");\n"
-"          buffer._contents = t3 + replacement;\n"
-"          index += 3;\n"
-"          sectionStart = index;\n"
-"          isNormalized = true;\n"
-"        } else if (char < 127 && (string\$.x00_____.charCodeAt(char) & 1) !== 0) {\n"
-"          if (isNormalized && 65 <= char && 90 >= char) {\n"
-"            if (buffer == null)\n"
-"              buffer = new A.StringBuffer(\"\");\n"
-"            if (sectionStart < index) {\n"
-"              buffer._contents += B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"              sectionStart = index;\n"
-"            }\n"
-"            isNormalized = false;\n"
-"          }\n"
-"          ++index;\n"
-"        } else {\n"
-"          sourceLength = 1;\n"
-"          if ((char & 64512) === 55296 && index + 1 < end) {\n"
-"            t2 = index + 1;\n"
-"            if (!(t2 < t1))\n"
-"              return A.ioore(host, t2);\n"
-"            tail = host.charCodeAt(t2);\n"
-"            if ((tail & 64512) === 56320) {\n"
-"              char = 65536 + ((char & 1023) << 10) + (tail & 1023);\n"
-"              sourceLength = 2;\n"
-"            }\n"
-"          }\n"
-"          slice = B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"          if (buffer == null) {\n"
-"            buffer = new A.StringBuffer(\"\");\n"
-"            t2 = buffer;\n"
-"          } else\n"
-"            t2 = buffer;\n"
-"          t2._contents += slice;\n"
-"          t3 = A._Uri__escapeChar(char);\n"
-"          t2._contents += t3;\n"
-"          index += sourceLength;\n"
-"          sectionStart = index;\n"
-"        }\n"
-"      }\n"
-"      if (buffer == null)\n"
-"        return B.JSString_methods.substring\$2(host, start, end);\n"
-"      if (sectionStart < end) {\n"
-"        slice = B.JSString_methods.substring\$2(host, sectionStart, end);\n"
-"        buffer._contents += slice;\n"
-"      }\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _Uri__normalizeRegName(host, start, end) {\n"
-"      var t1, index, sectionStart, buffer, isNormalized, char, replacement, t2, slice, t3, sourceLength, tail,\n"
-"        _s128_ = string\$.x00_____;\n"
-"      for (t1 = host.length, index = start, sectionStart = index, buffer = null, isNormalized = true; index < end;) {\n"
-"        if (!(index >= 0 && index < t1))\n"
-"          return A.ioore(host, index);\n"
-"        char = host.charCodeAt(index);\n"
-"        if (char === 37) {\n"
-"          replacement = A._Uri__normalizeEscape(host, index, true);\n"
-"          t2 = replacement == null;\n"
-"          if (t2 && isNormalized) {\n"
-"            index += 3;\n"
-"            continue;\n"
-"          }\n"
-"          if (buffer == null)\n"
-"            buffer = new A.StringBuffer(\"\");\n"
-"          slice = B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"          if (!isNormalized)\n"
-"            slice = slice.toLowerCase();\n"
-"          t3 = buffer._contents += slice;\n"
-"          sourceLength = 3;\n"
-"          if (t2)\n"
-"            replacement = B.JSString_methods.substring\$2(host, index, index + 3);\n"
-"          else if (replacement === \"%\") {\n"
-"            replacement = \"%25\";\n"
-"            sourceLength = 1;\n"
-"          }\n"
-"          buffer._contents = t3 + replacement;\n"
-"          index += sourceLength;\n"
-"          sectionStart = index;\n"
-"          isNormalized = true;\n"
-"        } else if (char < 127 && (_s128_.charCodeAt(char) & 32) !== 0) {\n"
-"          if (isNormalized && 65 <= char && 90 >= char) {\n"
-"            if (buffer == null)\n"
-"              buffer = new A.StringBuffer(\"\");\n"
-"            if (sectionStart < index) {\n"
-"              buffer._contents += B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"              sectionStart = index;\n"
-"            }\n"
-"            isNormalized = false;\n"
-"          }\n"
-"          ++index;\n"
-"        } else if (char <= 93 && (_s128_.charCodeAt(char) & 1024) !== 0)\n"
-"          A._Uri__fail(host, index, \"Invalid character\");\n"
-"        else {\n"
-"          sourceLength = 1;\n"
-"          if ((char & 64512) === 55296 && index + 1 < end) {\n"
-"            t2 = index + 1;\n"
-"            if (!(t2 < t1))\n"
-"              return A.ioore(host, t2);\n"
-"            tail = host.charCodeAt(t2);\n"
-"            if ((tail & 64512) === 56320) {\n"
-"              char = 65536 + ((char & 1023) << 10) + (tail & 1023);\n"
-"              sourceLength = 2;\n"
-"            }\n"
-"          }\n"
-"          slice = B.JSString_methods.substring\$2(host, sectionStart, index);\n"
-"          if (!isNormalized)\n"
-"            slice = slice.toLowerCase();\n"
-"          if (buffer == null) {\n"
-"            buffer = new A.StringBuffer(\"\");\n"
-"            t2 = buffer;\n"
-"          } else\n"
-"            t2 = buffer;\n"
-"          t2._contents += slice;\n"
-"          t3 = A._Uri__escapeChar(char);\n"
-"          t2._contents += t3;\n"
-"          index += sourceLength;\n"
-"          sectionStart = index;\n"
-"        }\n"
-"      }\n"
-"      if (buffer == null)\n"
-"        return B.JSString_methods.substring\$2(host, start, end);\n"
-"      if (sectionStart < end) {\n"
-"        slice = B.JSString_methods.substring\$2(host, sectionStart, end);\n"
-"        if (!isNormalized)\n"
-"          slice = slice.toLowerCase();\n"
-"        buffer._contents += slice;\n"
-"      }\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _Uri__makeScheme(scheme, start, end) {\n"
-"      var t1, i, containsUpperCase, codeUnit;\n"
-"      if (start === end)\n"
-"        return \"\";\n"
-"      t1 = scheme.length;\n"
-"      if (!(start < t1))\n"
-"        return A.ioore(scheme, start);\n"
-"      if (!A._Uri__isAlphabeticCharacter(scheme.charCodeAt(start)))\n"
-"        A._Uri__fail(scheme, start, \"Scheme not starting with alphabetic character\");\n"
-"      for (i = start, containsUpperCase = false; i < end; ++i) {\n"
-"        if (!(i < t1))\n"
-"          return A.ioore(scheme, i);\n"
-"        codeUnit = scheme.charCodeAt(i);\n"
-"        if (!(codeUnit < 128 && (string\$.x00_____.charCodeAt(codeUnit) & 8) !== 0))\n"
-"          A._Uri__fail(scheme, i, \"Illegal scheme character\");\n"
-"        if (65 <= codeUnit && codeUnit <= 90)\n"
-"          containsUpperCase = true;\n"
-"      }\n"
-"      scheme = B.JSString_methods.substring\$2(scheme, start, end);\n"
-"      return A._Uri__canonicalizeScheme(containsUpperCase ? scheme.toLowerCase() : scheme);\n"
-"    },\n"
-"    _Uri__canonicalizeScheme(scheme) {\n"
-"      if (scheme === \"http\")\n"
-"        return \"http\";\n"
-"      if (scheme === \"file\")\n"
-"        return \"file\";\n"
-"      if (scheme === \"https\")\n"
-"        return \"https\";\n"
-"      if (scheme === \"package\")\n"
-"        return \"package\";\n"
-"      return scheme;\n"
-"    },\n"
-"    _Uri__makeUserInfo(userInfo, start, end) {\n"
-"      if (userInfo == null)\n"
-"        return \"\";\n"
-"      return A._Uri__normalizeOrSubstring(userInfo, start, end, 16, false, false);\n"
-"    },\n"
-"    _Uri__makePath(path, start, end, pathSegments, scheme, hasAuthority) {\n"
-"      var t1, result,\n"
-"        isFile = scheme === \"file\",\n"
-"        ensureLeadingSlash = isFile || hasAuthority;\n"
-"      if (path == null) {\n"
-"        if (pathSegments == null)\n"
-"          return isFile ? \"/\" : \"\";\n"
-"        t1 = A._arrayInstanceType(pathSegments);\n"
-"        result = new A.MappedListIterable(pathSegments, t1._eval\$1(\"String(1)\")._as(new A._Uri__makePath_closure()), t1._eval\$1(\"MappedListIterable<1,String>\")).join\$1(0, \"/\");\n"
-"      } else if (pathSegments != null)\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Both path and pathSegments specified\", null));\n"
-"      else\n"
-"        result = A._Uri__normalizeOrSubstring(path, start, end, 128, true, true);\n"
-"      if (result.length === 0) {\n"
-"        if (isFile)\n"
-"          return \"/\";\n"
-"      } else if (ensureLeadingSlash && !B.JSString_methods.startsWith\$1(result, \"/\"))\n"
-"        result = \"/\" + result;\n"
-"      return A._Uri__normalizePath(result, scheme, hasAuthority);\n"
-"    },\n"
-"    _Uri__normalizePath(path, scheme, hasAuthority) {\n"
-"      var t1 = scheme.length === 0;\n"
-"      if (t1 && !hasAuthority && !B.JSString_methods.startsWith\$1(path, \"/\") && !B.JSString_methods.startsWith\$1(path, \"\\\\\"))\n"
-"        return A._Uri__normalizeRelativePath(path, !t1 || hasAuthority);\n"
-"      return A._Uri__removeDotSegments(path);\n"
-"    },\n"
-"    _Uri__makeQuery(query, start, end, queryParameters) {\n"
-"      if (query != null)\n"
-"        return A._Uri__normalizeOrSubstring(query, start, end, 256, true, false);\n"
-"      return null;\n"
-"    },\n"
-"    _Uri__makeFragment(fragment, start, end) {\n"
-"      if (fragment == null)\n"
-"        return null;\n"
-"      return A._Uri__normalizeOrSubstring(fragment, start, end, 256, true, false);\n"
-"    },\n"
-"    _Uri__normalizeEscape(source, index, lowerCase) {\n"
-"      var t3, firstDigit, secondDigit, firstDigitValue, secondDigitValue, value,\n"
-"        _s128_ = string\$.x00_____,\n"
-"        t1 = index + 2,\n"
-"        t2 = source.length;\n"
-"      if (t1 >= t2)\n"
-"        return \"%\";\n"
-"      t3 = index + 1;\n"
-"      if (!(t3 >= 0 && t3 < t2))\n"
-"        return A.ioore(source, t3);\n"
-"      firstDigit = source.charCodeAt(t3);\n"
-"      if (!(t1 >= 0))\n"
-"        return A.ioore(source, t1);\n"
-"      secondDigit = source.charCodeAt(t1);\n"
-"      firstDigitValue = A.hexDigitValue(firstDigit);\n"
-"      secondDigitValue = A.hexDigitValue(secondDigit);\n"
-"      if (firstDigitValue < 0 || secondDigitValue < 0)\n"
-"        return \"%\";\n"
-"      value = firstDigitValue * 16 + secondDigitValue;\n"
-"      if (value < 127) {\n"
-"        if (!(value >= 0))\n"
-"          return A.ioore(_s128_, value);\n"
-"        t1 = (_s128_.charCodeAt(value) & 1) !== 0;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        return A.Primitives_stringFromCharCode(lowerCase && 65 <= value && 90 >= value ? (value | 32) >>> 0 : value);\n"
-"      if (firstDigit >= 97 || secondDigit >= 97)\n"
-"        return B.JSString_methods.substring\$2(source, index, index + 3).toUpperCase();\n"
-"      return null;\n"
-"    },\n"
-"    _Uri__escapeChar(char) {\n"
-"      var codeUnits, t1, flag, encodedBytes, index, byte, t2, t3,\n"
-"        _s16_ = \"0123456789ABCDEF\";\n"
-"      if (char <= 127) {\n"
-"        codeUnits = new Uint8Array(3);\n"
-"        codeUnits[0] = 37;\n"
-"        t1 = char >>> 4;\n"
-"        if (!(t1 < 16))\n"
-"          return A.ioore(_s16_, t1);\n"
-"        codeUnits[1] = _s16_.charCodeAt(t1);\n"
-"        codeUnits[2] = _s16_.charCodeAt(char & 15);\n"
-"      } else {\n"
-"        if (char > 2047)\n"
-"          if (char > 65535) {\n"
-"            flag = 240;\n"
-"            encodedBytes = 4;\n"
-"          } else {\n"
-"            flag = 224;\n"
-"            encodedBytes = 3;\n"
-"          }\n"
-"        else {\n"
-"          flag = 192;\n"
-"          encodedBytes = 2;\n"
-"        }\n"
-"        t1 = 3 * encodedBytes;\n"
-"        codeUnits = new Uint8Array(t1);\n"
-"        for (index = 0; --encodedBytes, encodedBytes >= 0; flag = 128) {\n"
-"          byte = B.JSInt_methods._shrReceiverPositive\$1(char, 6 * encodedBytes) & 63 | flag;\n"
-"          if (!(index < t1))\n"
-"            return A.ioore(codeUnits, index);\n"
-"          codeUnits[index] = 37;\n"
-"          t2 = index + 1;\n"
-"          t3 = byte >>> 4;\n"
-"          if (!(t3 < 16))\n"
-"            return A.ioore(_s16_, t3);\n"
-"          if (!(t2 < t1))\n"
-"            return A.ioore(codeUnits, t2);\n"
-"          codeUnits[t2] = _s16_.charCodeAt(t3);\n"
-"          t3 = index + 2;\n"
-"          if (!(t3 < t1))\n"
-"            return A.ioore(codeUnits, t3);\n"
-"          codeUnits[t3] = _s16_.charCodeAt(byte & 15);\n"
-"          index += 3;\n"
-"        }\n"
-"      }\n"
-"      return A.String_String\$fromCharCodes(codeUnits, 0, null);\n"
-"    },\n"
-"    _Uri__normalizeOrSubstring(component, start, end, charMask, escapeDelimiters, replaceBackslash) {\n"
-"      var t1 = A._Uri__normalize(component, start, end, charMask, escapeDelimiters, replaceBackslash);\n"
-"      return t1 == null ? B.JSString_methods.substring\$2(component, start, end) : t1;\n"
-"    },\n"
-"    _Uri__normalize(component, start, end, charMask, escapeDelimiters, replaceBackslash) {\n"
-"      var t1, t2, index, sectionStart, buffer, char, sourceLength, replacement, t3, tail, _null = null,\n"
-"        _s128_ = string\$.x00_____;\n"
-"      for (t1 = !escapeDelimiters, t2 = component.length, index = start, sectionStart = index, buffer = _null; index < end;) {\n"
-"        if (!(index >= 0 && index < t2))\n"
-"          return A.ioore(component, index);\n"
-"        char = component.charCodeAt(index);\n"
-"        if (char < 127 && (_s128_.charCodeAt(char) & charMask) !== 0)\n"
-"          ++index;\n"
-"        else {\n"
-"          sourceLength = 1;\n"
-"          if (char === 37) {\n"
-"            replacement = A._Uri__normalizeEscape(component, index, false);\n"
-"            if (replacement == null) {\n"
-"              index += 3;\n"
-"              continue;\n"
-"            }\n"
-"            if (\"%\" === replacement)\n"
-"              replacement = \"%25\";\n"
-"            else\n"
-"              sourceLength = 3;\n"
-"          } else if (char === 92 && replaceBackslash)\n"
-"            replacement = \"/\";\n"
-"          else if (t1 && char <= 93 && (_s128_.charCodeAt(char) & 1024) !== 0) {\n"
-"            A._Uri__fail(component, index, \"Invalid character\");\n"
-"            sourceLength = _null;\n"
-"            replacement = sourceLength;\n"
-"          } else {\n"
-"            if ((char & 64512) === 55296) {\n"
-"              t3 = index + 1;\n"
-"              if (t3 < end) {\n"
-"                if (!(t3 < t2))\n"
-"                  return A.ioore(component, t3);\n"
-"                tail = component.charCodeAt(t3);\n"
-"                if ((tail & 64512) === 56320) {\n"
-"                  char = 65536 + ((char & 1023) << 10) + (tail & 1023);\n"
-"                  sourceLength = 2;\n"
-"                }\n"
-"              }\n"
-"            }\n"
-"            replacement = A._Uri__escapeChar(char);\n"
-"          }\n"
-"          if (buffer == null) {\n"
-"            buffer = new A.StringBuffer(\"\");\n"
-"            t3 = buffer;\n"
-"          } else\n"
-"            t3 = buffer;\n"
-"          t3._contents = (t3._contents += B.JSString_methods.substring\$2(component, sectionStart, index)) + replacement;\n"
-"          if (typeof sourceLength !== \"number\")\n"
-"            return A.iae(sourceLength);\n"
-"          index += sourceLength;\n"
-"          sectionStart = index;\n"
-"        }\n"
-"      }\n"
-"      if (buffer == null)\n"
-"        return _null;\n"
-"      if (sectionStart < end) {\n"
-"        t1 = B.JSString_methods.substring\$2(component, sectionStart, end);\n"
-"        buffer._contents += t1;\n"
-"      }\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _Uri__mayContainDotSegments(path) {\n"
-"      if (B.JSString_methods.startsWith\$1(path, \".\"))\n"
-"        return true;\n"
-"      return B.JSString_methods.indexOf\$1(path, \"/.\") !== -1;\n"
-"    },\n"
-"    _Uri__removeDotSegments(path) {\n"
-"      var output, t1, t2, appendSlash, _i, segment, t3;\n"
-"      if (!A._Uri__mayContainDotSegments(path))\n"
-"        return path;\n"
-"      output = A._setArrayType([], type\$.JSArray_String);\n"
-"      for (t1 = path.split(\"/\"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {\n"
-"        segment = t1[_i];\n"
-"        if (segment === \"..\") {\n"
-"          t3 = output.length;\n"
-"          if (t3 !== 0) {\n"
-"            if (0 >= t3)\n"
-"              return A.ioore(output, -1);\n"
-"            output.pop();\n"
-"            if (output.length === 0)\n"
-"              B.JSArray_methods.add\$1(output, \"\");\n"
-"          }\n"
-"          appendSlash = true;\n"
-"        } else {\n"
-"          appendSlash = \".\" === segment;\n"
-"          if (!appendSlash)\n"
-"            B.JSArray_methods.add\$1(output, segment);\n"
-"        }\n"
-"      }\n"
-"      if (appendSlash)\n"
-"        B.JSArray_methods.add\$1(output, \"\");\n"
-"      return B.JSArray_methods.join\$1(output, \"/\");\n"
-"    },\n"
-"    _Uri__normalizeRelativePath(path, allowScheme) {\n"
-"      var output, t1, t2, appendSlash, _i, segment;\n"
-"      if (!A._Uri__mayContainDotSegments(path))\n"
-"        return !allowScheme ? A._Uri__escapeScheme(path) : path;\n"
-"      output = A._setArrayType([], type\$.JSArray_String);\n"
-"      for (t1 = path.split(\"/\"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {\n"
-"        segment = t1[_i];\n"
-"        if (\"..\" === segment) {\n"
-"          if (output.length !== 0 && B.JSArray_methods.get\$last(output) !== \"..\") {\n"
-"            if (0 >= output.length)\n"
-"              return A.ioore(output, -1);\n"
-"            output.pop();\n"
-"          } else\n"
-"            B.JSArray_methods.add\$1(output, \"..\");\n"
-"          appendSlash = true;\n"
-"        } else {\n"
-"          appendSlash = \".\" === segment;\n"
-"          if (!appendSlash)\n"
-"            B.JSArray_methods.add\$1(output, segment.length === 0 && output.length === 0 ? \"./\" : segment);\n"
-"        }\n"
-"      }\n"
-"      if (output.length === 0)\n"
-"        return \"./\";\n"
-"      if (appendSlash)\n"
-"        B.JSArray_methods.add\$1(output, \"\");\n"
-"      if (!allowScheme) {\n"
-"        if (0 >= output.length)\n"
-"          return A.ioore(output, 0);\n"
-"        B.JSArray_methods.\$indexSet(output, 0, A._Uri__escapeScheme(output[0]));\n"
-"      }\n"
-"      return B.JSArray_methods.join\$1(output, \"/\");\n"
-"    },\n"
-"    _Uri__escapeScheme(path) {\n"
-"      var i, char, t2,\n"
-"        _s128_ = string\$.x00_____,\n"
-"        t1 = path.length;\n"
-"      if (t1 >= 2 && A._Uri__isAlphabeticCharacter(path.charCodeAt(0)))\n"
-"        for (i = 1; i < t1; ++i) {\n"
-"          char = path.charCodeAt(i);\n"
-"          if (char === 58)\n"
-"            return B.JSString_methods.substring\$2(path, 0, i) + \"%3A\" + B.JSString_methods.substring\$1(path, i + 1);\n"
-"          if (char <= 127) {\n"
-"            if (!(char < 128))\n"
-"              return A.ioore(_s128_, char);\n"
-"            t2 = (_s128_.charCodeAt(char) & 8) === 0;\n"
-"          } else\n"
-"            t2 = true;\n"
-"          if (t2)\n"
-"            break;\n"
-"        }\n"
-"      return path;\n"
-"    },\n"
-"    _Uri__packageNameEnd(uri, path) {\n"
-"      if (uri.isScheme\$1(\"package\") && uri._host == null)\n"
-"        return A._skipPackageNameChars(path, 0, path.length);\n"
-"      return -1;\n"
-"    },\n"
-"    _Uri__hexCharPairToByte(s, pos) {\n"
-"      var t1, byte, i, t2, charCode;\n"
-"      for (t1 = s.length, byte = 0, i = 0; i < 2; ++i) {\n"
-"        t2 = pos + i;\n"
-"        if (!(t2 < t1))\n"
-"          return A.ioore(s, t2);\n"
-"        charCode = s.charCodeAt(t2);\n"
-"        if (48 <= charCode && charCode <= 57)\n"
-"          byte = byte * 16 + charCode - 48;\n"
-"        else {\n"
-"          charCode |= 32;\n"
-"          if (97 <= charCode && charCode <= 102)\n"
-"            byte = byte * 16 + charCode - 87;\n"
-"          else\n"
-"            throw A.wrapException(A.ArgumentError\$(\"Invalid URL encoding\", null));\n"
-"        }\n"
-"      }\n"
-"      return byte;\n"
-"    },\n"
-"    _Uri__uriDecode(text, start, end, encoding, plusToSpace) {\n"
-"      var simple, codeUnit, t2, bytes,\n"
-"        t1 = text.length,\n"
-"        i = start;\n"
-"      for (;;) {\n"
-"        if (!(i < end)) {\n"
-"          simple = true;\n"
-"          break;\n"
-"        }\n"
-"        if (!(i < t1))\n"
-"          return A.ioore(text, i);\n"
-"        codeUnit = text.charCodeAt(i);\n"
-"        if (codeUnit <= 127)\n"
-"          t2 = codeUnit === 37;\n"
-"        else\n"
-"          t2 = true;\n"
-"        if (t2) {\n"
-"          simple = false;\n"
-"          break;\n"
-"        }\n"
-"        ++i;\n"
-"      }\n"
-"      if (simple)\n"
-"        if (B.C_Utf8Codec === encoding)\n"
-"          return B.JSString_methods.substring\$2(text, start, end);\n"
-"        else\n"
-"          bytes = new A.CodeUnits(B.JSString_methods.substring\$2(text, start, end));\n"
-"      else {\n"
-"        bytes = A._setArrayType([], type\$.JSArray_int);\n"
-"        for (i = start; i < end; ++i) {\n"
-"          if (!(i < t1))\n"
-"            return A.ioore(text, i);\n"
-"          codeUnit = text.charCodeAt(i);\n"
-"          if (codeUnit > 127)\n"
-"            throw A.wrapException(A.ArgumentError\$(\"Illegal percent encoding in URI\", null));\n"
-"          if (codeUnit === 37) {\n"
-"            if (i + 3 > t1)\n"
-"              throw A.wrapException(A.ArgumentError\$(\"Truncated URI\", null));\n"
-"            B.JSArray_methods.add\$1(bytes, A._Uri__hexCharPairToByte(text, i + 1));\n"
-"            i += 2;\n"
-"          } else\n"
-"            B.JSArray_methods.add\$1(bytes, codeUnit);\n"
-"        }\n"
-"      }\n"
-"      return encoding.decode\$1(bytes);\n"
-"    },\n"
-"    _Uri__isAlphabeticCharacter(codeUnit) {\n"
-"      var lowerCase = codeUnit | 32;\n"
-"      return 97 <= lowerCase && lowerCase <= 122;\n"
-"    },\n"
-"    UriData__parse(text, start, sourceUri) {\n"
-"      var t1, i, slashIndex, char, equalsIndex, lastSeparator, t2, data,\n"
-"        _s17_ = \"Invalid MIME type\",\n"
-"        indices = A._setArrayType([start - 1], type\$.JSArray_int);\n"
-"      for (t1 = text.length, i = start, slashIndex = -1, char = null; i < t1; ++i) {\n"
-"        char = text.charCodeAt(i);\n"
-"        if (char === 44 || char === 59)\n"
-"          break;\n"
-"        if (char === 47) {\n"
-"          if (slashIndex < 0) {\n"
-"            slashIndex = i;\n"
-"            continue;\n"
-"          }\n"
-"          throw A.wrapException(A.FormatException\$(_s17_, text, i));\n"
-"        }\n"
-"      }\n"
-"      if (slashIndex < 0 && i > start)\n"
-"        throw A.wrapException(A.FormatException\$(_s17_, text, i));\n"
-"      while (char !== 44) {\n"
-"        B.JSArray_methods.add\$1(indices, i);\n"
-"        ++i;\n"
-"        for (equalsIndex = -1; i < t1; ++i) {\n"
-"          if (!(i >= 0))\n"
-"            return A.ioore(text, i);\n"
-"          char = text.charCodeAt(i);\n"
-"          if (char === 61) {\n"
-"            if (equalsIndex < 0)\n"
-"              equalsIndex = i;\n"
-"          } else if (char === 59 || char === 44)\n"
-"            break;\n"
-"        }\n"
-"        if (equalsIndex >= 0)\n"
-"          B.JSArray_methods.add\$1(indices, equalsIndex);\n"
-"        else {\n"
-"          lastSeparator = B.JSArray_methods.get\$last(indices);\n"
-"          if (char !== 44 || i !== lastSeparator + 7 || !B.JSString_methods.startsWith\$2(text, \"base64\", lastSeparator + 1))\n"
-"            throw A.wrapException(A.FormatException\$(\"Expecting '='\", text, i));\n"
-"          break;\n"
-"        }\n"
-"      }\n"
-"      B.JSArray_methods.add\$1(indices, i);\n"
-"      t2 = i + 1;\n"
-"      if ((indices.length & 1) === 1)\n"
-"        text = B.C_Base64Codec.normalize\$3(text, t2, t1);\n"
-"      else {\n"
-"        data = A._Uri__normalize(text, t2, t1, 256, true, false);\n"
-"        if (data != null)\n"
-"          text = B.JSString_methods.replaceRange\$3(text, t2, t1, data);\n"
-"      }\n"
-"      return new A.UriData(text, indices, sourceUri);\n"
-"    },\n"
-"    _scan(uri, start, end, state, indices) {\n"
-"      var t1, i, char, t2, transition,\n"
-"        _s2112_ = '\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe1\\xe1\\x01\\xe1\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe3\\xe1\\xe1\\x01\\xe1\\x01\\xe1\\xcd\\x01\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x0e\\x03\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\"\\x01\\xe1\\x01\\xe1\\xac\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe1\\xe1\\x01\\xe1\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xea\\xe1\\xe1\\x01\\xe1\\x01\\xe1\\xcd\\x01\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\n\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\"\\x01\\xe1\\x01\\xe1\\xac\\xeb\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\xeb\\xeb\\xeb\\x8b\\xeb\\xeb\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\xeb\\x83\\xeb\\xeb\\x8b\\xeb\\x8b\\xeb\\xcd\\x8b\\xeb\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x92\\x83\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\x8b\\xeb\\x8b\\xeb\\x8b\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xebD\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\x12D\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xe5\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\xe5\\xe5\\xe5\\x05\\xe5D\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe8\\x8a\\xe5\\xe5\\x05\\xe5\\x05\\xe5\\xcd\\x05\\xe5\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x8a\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05f\\x05\\xe5\\x05\\xe5\\xac\\xe5\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\xe5\\xe5\\xe5\\x05\\xe5D\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\xe5\\x8a\\xe5\\xe5\\x05\\xe5\\x05\\xe5\\xcd\\x05\\xe5\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x8a\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05\\x05f\\x05\\xe5\\x05\\xe5\\xac\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7D\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\x8a\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xcd\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\x8a\\xe7\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\xe7\\xe7\\xe7\\xe7\\xe7\\xac\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7D\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\x8a\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xcd\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\xe7\\x8a\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\x07\\xe7\\xe7\\xe7\\xe7\\xe7\\xac\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\x05\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\x10\\xea\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\x12\\n\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\n\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xec\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\xec\\xec\\xec\\f\\xec\\xec\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\xec\\xec\\xec\\xec\\f\\xec\\f\\xec\\xcd\\f\\xec\\f\\f\\f\\f\\f\\f\\f\\f\\f\\xec\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\xec\\f\\xec\\f\\xec\\f\\xed\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\xed\\xed\\xed\\r\\xed\\xed\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\xed\\xed\\xed\\xed\\r\\xed\\r\\xed\\xed\\r\\xed\\r\\r\\r\\r\\r\\r\\r\\r\\r\\xed\\r\\r\\r\\r\\r\\r\\r\\r\\r\\r\\xed\\r\\xed\\r\\xed\\r\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe1\\xe1\\x01\\xe1\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xea\\xe1\\xe1\\x01\\xe1\\x01\\xe1\\xcd\\x01\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x0f\\xea\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\"\\x01\\xe1\\x01\\xe1\\xac\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe1\\xe1\\x01\\xe1\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\xe1\\xe9\\xe1\\xe1\\x01\\xe1\\x01\\xe1\\xcd\\x01\\xe1\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\t\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\"\\x01\\xe1\\x01\\xe1\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\x11\\xea\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xe9\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\t\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\x13\\xea\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xeb\\xeb\\v\\xeb\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\xea\\xeb\\xeb\\v\\xeb\\v\\xeb\\xcd\\v\\xeb\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xea\\v\\v\\v\\v\\v\\v\\v\\v\\v\\v\\xeb\\v\\xeb\\v\\xeb\\xac\\xf5\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5\\x15\\xf5\\x15\\x15\\xf5\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\x15\\xf5\\xf5\\xf5\\xf5\\xf5\\xf5';\n"
-"      for (t1 = uri.length, i = start; i < end; ++i) {\n"
-"        if (!(i < t1))\n"
-"          return A.ioore(uri, i);\n"
-"        char = uri.charCodeAt(i) ^ 96;\n"
-"        if (char > 95)\n"
-"          char = 31;\n"
-"        t2 = state * 96 + char;\n"
-"        if (!(t2 < 2112))\n"
-"          return A.ioore(_s2112_, t2);\n"
-"        transition = _s2112_.charCodeAt(t2);\n"
-"        state = transition & 31;\n"
-"        B.JSArray_methods.\$indexSet(indices, transition >>> 5, i);\n"
-"      }\n"
-"      return state;\n"
-"    },\n"
-"    _SimpleUri__packageNameEnd(uri) {\n"
-"      if (uri._schemeEnd === 7 && B.JSString_methods.startsWith\$1(uri._uri, \"package\") && uri._hostStart <= 0)\n"
-"        return A._skipPackageNameChars(uri._uri, uri._pathStart, uri._queryStart);\n"
-"      return -1;\n"
-"    },\n"
-"    _skipPackageNameChars(source, start, end) {\n"
-"      var t1, i, dots, char;\n"
-"      for (t1 = source.length, i = start, dots = 0; i < end; ++i) {\n"
-"        if (!(i >= 0 && i < t1))\n"
-"          return A.ioore(source, i);\n"
-"        char = source.charCodeAt(i);\n"
-"        if (char === 47)\n"
-"          return dots !== 0 ? i : -1;\n"
-"        if (char === 37 || char === 58)\n"
-"          return -1;\n"
-"        dots |= char ^ 46;\n"
-"      }\n"
-"      return -1;\n"
-"    },\n"
-"    _caseInsensitiveCompareStart(prefix, string, start) {\n"
-"      var t1, t2, result, i, t3, stringChar, delta, lowerChar;\n"
-"      for (t1 = prefix.length, t2 = string.length, result = 0, i = 0; i < t1; ++i) {\n"
-"        t3 = start + i;\n"
-"        if (!(t3 < t2))\n"
-"          return A.ioore(string, t3);\n"
-"        stringChar = string.charCodeAt(t3);\n"
-"        delta = prefix.charCodeAt(i) ^ stringChar;\n"
-"        if (delta !== 0) {\n"
-"          if (delta === 32) {\n"
-"            lowerChar = stringChar | delta;\n"
-"            if (97 <= lowerChar && lowerChar <= 122) {\n"
-"              result = 32;\n"
-"              continue;\n"
-"            }\n"
-"          }\n"
-"          return -1;\n"
-"        }\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    DateTime: function DateTime(t0, t1, t2) {\n"
-"      this._value = t0;\n"
-"      this._microsecond = t1;\n"
-"      this.isUtc = t2;\n"
-"    },\n"
-"    Duration: function Duration(t0) {\n"
-"      this.inMicroseconds = t0;\n"
-"    },\n"
-"    _Enum: function _Enum() {\n"
-"    },\n"
-"    Error: function Error() {\n"
-"    },\n"
-"    AssertionError: function AssertionError(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    TypeError: function TypeError() {\n"
-"    },\n"
-"    ArgumentError: function ArgumentError(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._hasValue = t0;\n"
-"      _.invalidValue = t1;\n"
-"      _.name = t2;\n"
-"      _.message = t3;\n"
-"    },\n"
-"    RangeError: function RangeError(t0, t1, t2, t3, t4, t5) {\n"
-"      var _ = this;\n"
-"      _.start = t0;\n"
-"      _.end = t1;\n"
-"      _._hasValue = t2;\n"
-"      _.invalidValue = t3;\n"
-"      _.name = t4;\n"
-"      _.message = t5;\n"
-"    },\n"
-"    IndexError: function IndexError(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _.length = t0;\n"
-"      _._hasValue = t1;\n"
-"      _.invalidValue = t2;\n"
-"      _.name = t3;\n"
-"      _.message = t4;\n"
-"    },\n"
-"    UnsupportedError: function UnsupportedError(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    UnimplementedError: function UnimplementedError(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    StateError: function StateError(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    ConcurrentModificationError: function ConcurrentModificationError(t0) {\n"
-"      this.modifiedObject = t0;\n"
-"    },\n"
-"    OutOfMemoryError: function OutOfMemoryError() {\n"
-"    },\n"
-"    StackOverflowError: function StackOverflowError() {\n"
-"    },\n"
-"    _Exception: function _Exception(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    FormatException: function FormatException(t0, t1, t2) {\n"
-"      this.message = t0;\n"
-"      this.source = t1;\n"
-"      this.offset = t2;\n"
-"    },\n"
-"    Iterable: function Iterable() {\n"
-"    },\n"
-"    MapEntry: function MapEntry(t0, t1, t2) {\n"
-"      this.key = t0;\n"
-"      this.value = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    Null: function Null() {\n"
-"    },\n"
-"    Object: function Object() {\n"
-"    },\n"
-"    _StringStackTrace: function _StringStackTrace(t0) {\n"
-"      this._stackTrace = t0;\n"
-"    },\n"
-"    StringBuffer: function StringBuffer(t0) {\n"
-"      this._contents = t0;\n"
-"    },\n"
-"    Uri_parseIPv6Address_error: function Uri_parseIPv6Address_error(t0) {\n"
-"      this.host = t0;\n"
-"    },\n"
-"    _Uri: function _Uri(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _.scheme = t0;\n"
-"      _._userInfo = t1;\n"
-"      _._host = t2;\n"
-"      _._port = t3;\n"
-"      _.path = t4;\n"
-"      _._query = t5;\n"
-"      _._fragment = t6;\n"
-"      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = \$;\n"
-"    },\n"
-"    _Uri__makePath_closure: function _Uri__makePath_closure() {\n"
-"    },\n"
-"    UriData: function UriData(t0, t1, t2) {\n"
-"      this._text = t0;\n"
-"      this._separatorIndices = t1;\n"
-"      this._uriCache = t2;\n"
-"    },\n"
-"    _SimpleUri: function _SimpleUri(t0, t1, t2, t3, t4, t5, t6, t7) {\n"
-"      var _ = this;\n"
-"      _._uri = t0;\n"
-"      _._schemeEnd = t1;\n"
-"      _._hostStart = t2;\n"
-"      _._portStart = t3;\n"
-"      _._pathStart = t4;\n"
-"      _._queryStart = t5;\n"
-"      _._fragmentStart = t6;\n"
-"      _._schemeCache = t7;\n"
-"      _._hashCodeCache = null;\n"
-"    },\n"
-"    _DataUri: function _DataUri(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _.scheme = t0;\n"
-"      _._userInfo = t1;\n"
-"      _._host = t2;\n"
-"      _._port = t3;\n"
-"      _.path = t4;\n"
-"      _._query = t5;\n"
-"      _._fragment = t6;\n"
-"      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = \$;\n"
-"    },\n"
-"    JSAnyUtilityExtension_instanceOfString(_this, constructorName) {\n"
-"      var parts, \$constructor, t1, _i, t2;\n"
-"      if (constructorName.length === 0)\n"
-"        return false;\n"
-"      parts = constructorName.split(\".\");\n"
-"      \$constructor = init.G;\n"
-"      for (t1 = parts.length, _i = 0; _i < t1; ++_i, \$constructor = t2) {\n"
-"        t2 = \$constructor[parts[_i]];\n"
-"        A._asJSObjectQ(t2);\n"
-"        if (t2 == null)\n"
-"          return false;\n"
-"      }\n"
-"      return _this instanceof type\$.JavaScriptFunction._as(\$constructor);\n"
-"    },\n"
-"    _convertError(error, stackTrace) {\n"
-"      var errorConstructor, t1, box;\n"
-"      if (type\$.Interceptor._is(error))\n"
-"        return error;\n"
-"      errorConstructor = type\$.JavaScriptFunction._as(init.G.Error);\n"
-"      t1 = A.S(error);\n"
-"      t1 = A.callConstructor(errorConstructor, [\"Wrapped Dart error thrown from converted Future. See 'error'and 'stack' properties.\\n\" + t1], type\$.JSObject);\n"
-"      if (type\$.JavaScriptObject._is(error))\n"
-"        A.throwExpression(\"Attempting to box non-Dart object.\");\n"
-"      box = {};\n"
-"      box[\$.\$get\$_jsBoxedDartObjectProperty()] = error;\n"
-"      t1.error = box;\n"
-"      t1.stack = stackTrace.toString\$0(0);\n"
-"      return t1;\n"
-"    },\n"
-"    FutureOfJSAnyToJSPromise_get_toJS(_this, \$T) {\n"
-"      return A._asJSObject(new init.G.Promise(A._functionToJS2(new A.FutureOfJSAnyToJSPromise_get_toJS_closure(_this))));\n"
-"    },\n"
-"    FutureOfVoidToJSPromise_get_toJS(_this) {\n"
-"      return A._asJSObject(new init.G.Promise(A._functionToJS2(new A.FutureOfVoidToJSPromise_get_toJS_closure(_this))));\n"
-"    },\n"
-"    NullRejectionException: function NullRejectionException(t0) {\n"
-"      this.isUndefined = t0;\n"
-"    },\n"
-"    FutureOfJSAnyToJSPromise_get_toJS_closure: function FutureOfJSAnyToJSPromise_get_toJS_closure(t0) {\n"
-"      this._this = t0;\n"
-"    },\n"
-"    FutureOfJSAnyToJSPromise_get_toJS__closure: function FutureOfJSAnyToJSPromise_get_toJS__closure(t0) {\n"
-"      this.resolve = t0;\n"
-"    },\n"
-"    FutureOfJSAnyToJSPromise_get_toJS__closure0: function FutureOfJSAnyToJSPromise_get_toJS__closure0(t0) {\n"
-"      this.reject = t0;\n"
-"    },\n"
-"    FutureOfVoidToJSPromise_get_toJS_closure: function FutureOfVoidToJSPromise_get_toJS_closure(t0) {\n"
-"      this._this = t0;\n"
-"    },\n"
-"    FutureOfVoidToJSPromise_get_toJS__closure: function FutureOfVoidToJSPromise_get_toJS__closure(t0) {\n"
-"      this.resolve = t0;\n"
-"    },\n"
-"    FutureOfVoidToJSPromise_get_toJS__closure0: function FutureOfVoidToJSPromise_get_toJS__closure0(t0) {\n"
-"      this.reject = t0;\n"
-"    },\n"
-"    _functionToJS0(f) {\n"
-"      var result;\n"
-"      if (typeof f == \"function\")\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Attempting to rewrap a JS function.\", null));\n"
-"      result = function(_call, f) {\n"
-"        return function() {\n"
-"          return _call(f);\n"
-"        };\n"
-"      }(A._callDartFunctionFast0, f);\n"
-"      result[\$.\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME()] = f;\n"
-"      return result;\n"
-"    },\n"
-"    _functionToJS1(f) {\n"
-"      var result;\n"
-"      if (typeof f == \"function\")\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Attempting to rewrap a JS function.\", null));\n"
-"      result = function(_call, f) {\n"
-"        return function(arg1) {\n"
-"          return _call(f, arg1, arguments.length);\n"
-"        };\n"
-"      }(A._callDartFunctionFast1, f);\n"
-"      result[\$.\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME()] = f;\n"
-"      return result;\n"
-"    },\n"
-"    _functionToJS2(f) {\n"
-"      var result;\n"
-"      if (typeof f == \"function\")\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Attempting to rewrap a JS function.\", null));\n"
-"      result = function(_call, f) {\n"
-"        return function(arg1, arg2) {\n"
-"          return _call(f, arg1, arg2, arguments.length);\n"
-"        };\n"
-"      }(A._callDartFunctionFast2, f);\n"
-"      result[\$.\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME()] = f;\n"
-"      return result;\n"
-"    },\n"
-"    _callDartFunctionFast0(callback) {\n"
-"      return type\$.Function._as(callback).call\$0();\n"
-"    },\n"
-"    _callDartFunctionFast1(callback, arg1, \$length) {\n"
-"      type\$.Function._as(callback);\n"
-"      if (A._asInt(\$length) >= 1)\n"
-"        return callback.call\$1(arg1);\n"
-"      return callback.call\$0();\n"
-"    },\n"
-"    _callDartFunctionFast2(callback, arg1, arg2, \$length) {\n"
-"      type\$.Function._as(callback);\n"
-"      A._asInt(\$length);\n"
-"      if (\$length >= 2)\n"
-"        return callback.call\$2(arg1, arg2);\n"
-"      if (\$length === 1)\n"
-"        return callback.call\$1(arg1);\n"
-"      return callback.call\$0();\n"
-"    },\n"
-"    _callDartFunctionFast3(callback, arg1, arg2, arg3, \$length) {\n"
-"      type\$.Function._as(callback);\n"
-"      A._asInt(\$length);\n"
-"      if (\$length >= 3)\n"
-"        return callback.call\$3(arg1, arg2, arg3);\n"
-"      if (\$length === 2)\n"
-"        return callback.call\$2(arg1, arg2);\n"
-"      if (\$length === 1)\n"
-"        return callback.call\$1(arg1);\n"
-"      return callback.call\$0();\n"
-"    },\n"
-"    _noJsifyRequired(o) {\n"
-"      return o == null || A._isBool(o) || typeof o == \"number\" || typeof o == \"string\" || type\$.Int8List._is(o) || type\$.Uint8List._is(o) || type\$.Uint8ClampedList._is(o) || type\$.Int16List._is(o) || type\$.Uint16List._is(o) || type\$.Int32List._is(o) || type\$.Uint32List._is(o) || type\$.Float32List._is(o) || type\$.Float64List._is(o) || type\$.ByteBuffer._is(o) || type\$.ByteData._is(o);\n"
-"    },\n"
-"    jsify(object) {\n"
-"      if (A._noJsifyRequired(object))\n"
-"        return object;\n"
-"      return new A.jsify__convert(new A._IdentityHashMap(type\$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call\$1(object);\n"
-"    },\n"
-"    getProperty(o, \$name, \$T) {\n"
-"      return \$T._as(o[\$name]);\n"
-"    },\n"
-"    callConstructor(constr, \$arguments, \$T) {\n"
-"      var args, factoryFunction;\n"
-"      if (\$arguments == null)\n"
-"        return \$T._as(new constr());\n"
-"      if (\$arguments instanceof Array)\n"
-"        switch (\$arguments.length) {\n"
-"          case 0:\n"
-"            return \$T._as(new constr());\n"
-"          case 1:\n"
-"            return \$T._as(new constr(\$arguments[0]));\n"
-"          case 2:\n"
-"            return \$T._as(new constr(\$arguments[0], \$arguments[1]));\n"
-"          case 3:\n"
-"            return \$T._as(new constr(\$arguments[0], \$arguments[1], \$arguments[2]));\n"
-"          case 4:\n"
-"            return \$T._as(new constr(\$arguments[0], \$arguments[1], \$arguments[2], \$arguments[3]));\n"
-"        }\n"
-"      args = [null];\n"
-"      B.JSArray_methods.addAll\$1(args, \$arguments);\n"
-"      factoryFunction = constr.bind.apply(constr, args);\n"
-"      String(factoryFunction);\n"
-"      return \$T._as(new factoryFunction());\n"
-"    },\n"
-"    promiseToFuture(jsPromise, \$T) {\n"
-"      var t1 = new A._Future(\$.Zone__current, \$T._eval\$1(\"_Future<0>\")),\n"
-"        completer = new A._AsyncCompleter(t1, \$T._eval\$1(\"_AsyncCompleter<0>\"));\n"
-"      jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, \$T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1));\n"
-"      return t1;\n"
-"    },\n"
-"    _noDartifyRequired(o) {\n"
-"      return o == null || typeof o === \"boolean\" || typeof o === \"number\" || typeof o === \"string\" || o instanceof Int8Array || o instanceof Uint8Array || o instanceof Uint8ClampedArray || o instanceof Int16Array || o instanceof Uint16Array || o instanceof Int32Array || o instanceof Uint32Array || o instanceof Float32Array || o instanceof Float64Array || o instanceof ArrayBuffer || o instanceof DataView;\n"
-"    },\n"
-"    dartify(o) {\n"
-"      if (A._noDartifyRequired(o))\n"
-"        return o;\n"
-"      return new A.dartify_convert(new A._IdentityHashMap(type\$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call\$1(o);\n"
-"    },\n"
-"    jsify__convert: function jsify__convert(t0) {\n"
-"      this._convertedObjects = t0;\n"
-"    },\n"
-"    promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {\n"
-"      this.completer = t0;\n"
-"      this.T = t1;\n"
-"    },\n"
-"    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {\n"
-"      this.completer = t0;\n"
-"    },\n"
-"    dartify_convert: function dartify_convert(t0) {\n"
-"      this._convertedObjects = t0;\n"
-"    },\n"
-"    max(a, b, \$T) {\n"
-"      A.checkTypeBound(\$T, type\$.num, \"T\", \"max\");\n"
-"      return Math.max(\$T._as(a), \$T._as(b));\n"
-"    },\n"
-"    _JSRandom: function _JSRandom() {\n"
-"    },\n"
-"    _JSSecureRandom: function _JSSecureRandom(t0) {\n"
-"      this._math\$_buffer = t0;\n"
-"    },\n"
-"    AsyncMemoizer: function AsyncMemoizer(t0, t1) {\n"
-"      this._async_memoizer\$_completer = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    ErrorResult: function ErrorResult(t0, t1) {\n"
-"      this.error = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    ValueResult: function ValueResult(t0, t1) {\n"
-"      this.value = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    StreamQueue: function StreamQueue(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._stream_queue\$_source = t0;\n"
-"      _._stream_queue\$_subscription = null;\n"
-"      _._isDone = false;\n"
-"      _._eventsReceived = 0;\n"
-"      _._eventQueue = t1;\n"
-"      _._requestQueue = t2;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    StreamQueue__ensureListening_closure: function StreamQueue__ensureListening_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    StreamQueue__ensureListening_closure1: function StreamQueue__ensureListening_closure1(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    StreamQueue__ensureListening_closure0: function StreamQueue__ensureListening_closure0(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    _NextRequest: function _NextRequest(t0, t1) {\n"
-"      this._stream_queue\$_completer = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _HasNextRequest: function _HasNextRequest(t0, t1) {\n"
-"      this._stream_queue\$_completer = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    CanonicalizedMap: function CanonicalizedMap() {\n"
-"    },\n"
-"    CanonicalizedMap_addAll_closure: function CanonicalizedMap_addAll_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    CanonicalizedMap_forEach_closure: function CanonicalizedMap_forEach_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.f = t1;\n"
-"    },\n"
-"    CanonicalizedMap_keys_closure: function CanonicalizedMap_keys_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    QueueList__computeInitialCapacity(initialCapacity) {\n"
-"      return 8;\n"
-"    },\n"
-"    QueueList__nextPowerOf2(number) {\n"
-"      var nextNumber;\n"
-"      number = (number << 1 >>> 0) - 1;\n"
-"      for (;; number = nextNumber) {\n"
-"        nextNumber = (number & number - 1) >>> 0;\n"
-"        if (nextNumber === 0)\n"
-"          return number;\n"
-"      }\n"
-"    },\n"
-"    QueueList: function QueueList(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._queue_list\$_table = t0;\n"
-"      _._queue_list\$_head = t1;\n"
-"      _._queue_list\$_tail = t2;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    _CastQueueList: function _CastQueueList(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._queue_list\$_delegate = t0;\n"
-"      _._queue_list\$_table = t1;\n"
-"      _._queue_list\$_head = t2;\n"
-"      _._queue_list\$_tail = t3;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    _QueueList_Object_ListMixin: function _QueueList_Object_ListMixin() {\n"
-"    },\n"
-"    BuildStatus_BuildStatus\$fromJson(json) {\n"
-"      return B.JSArray_methods.firstWhere\$2\$orElse(B.List_crW, new A.BuildStatus_BuildStatus\$fromJson_closure(json), new A.BuildStatus_BuildStatus\$fromJson_closure0(json));\n"
-"    },\n"
-"    BuildStatus: function BuildStatus(t0, t1) {\n"
-"      this.index = t0;\n"
-"      this._name = t1;\n"
-"    },\n"
-"    BuildStatus_BuildStatus\$fromJson_closure: function BuildStatus_BuildStatus\$fromJson_closure(t0) {\n"
-"      this.json = t0;\n"
-"    },\n"
-"    BuildStatus_BuildStatus\$fromJson_closure0: function BuildStatus_BuildStatus\$fromJson_closure0(t0) {\n"
-"      this.json = t0;\n"
-"    },\n"
-"    BuildResult: function BuildResult(t0) {\n"
-"      this.status = t0;\n"
-"    },\n"
-"    ConnectRequest: function ConnectRequest(t0, t1, t2) {\n"
-"      this.appId = t0;\n"
-"      this.instanceId = t1;\n"
-"      this.entrypointPath = t2;\n"
-"    },\n"
-"    _listEquals(a, b, \$T) {\n"
-"      var i,\n"
-"        t1 = J.getInterceptor\$asx(a),\n"
-"        t2 = t1.get\$length(a),\n"
-"        t3 = J.getInterceptor\$asx(b),\n"
-"        t4 = t3.get\$length(b);\n"
-"      if (t2 !== t4)\n"
-"        return false;\n"
-"      for (i = 0; i < t1.get\$length(a); ++i)\n"
-"        if (!J.\$eq\$(t1.\$index(a, i), t3.\$index(b, i)))\n"
-"          return false;\n"
-"      return true;\n"
-"    },\n"
-"    DebugEvent: function DebugEvent(t0, t1, t2) {\n"
-"      this.kind = t0;\n"
-"      this.eventData = t1;\n"
-"      this.timestamp = t2;\n"
-"    },\n"
-"    BatchedDebugEvents: function BatchedDebugEvents(t0) {\n"
-"      this.events = t0;\n"
-"    },\n"
-"    BatchedDebugEvents_toJson_closure: function BatchedDebugEvents_toJson_closure() {\n"
-"    },\n"
-"    DebugInfo: function DebugInfo(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) {\n"
-"      var _ = this;\n"
-"      _.appEntrypointPath = t0;\n"
-"      _.appId = t1;\n"
-"      _.appInstanceId = t2;\n"
-"      _.appOrigin = t3;\n"
-"      _.appUrl = t4;\n"
-"      _.authUrl = t5;\n"
-"      _.extensionUrl = t6;\n"
-"      _.isInternalBuild = t7;\n"
-"      _.isFlutterApp = t8;\n"
-"      _.workspaceName = t9;\n"
-"    },\n"
-"    DevToolsRequest: function DevToolsRequest(t0, t1) {\n"
-"      this.appId = t0;\n"
-"      this.instanceId = t1;\n"
-"    },\n"
-"    DevToolsResponse: function DevToolsResponse(t0, t1, t2) {\n"
-"      this.success = t0;\n"
-"      this.promptExtension = t1;\n"
-"      this.error = t2;\n"
-"    },\n"
-"    ErrorResponse: function ErrorResponse(t0, t1) {\n"
-"      this.error = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    HotReloadRequest: function HotReloadRequest(t0) {\n"
-"      this.id = t0;\n"
-"    },\n"
-"    HotReloadResponse: function HotReloadResponse(t0, t1, t2) {\n"
-"      this.id = t0;\n"
-"      this.success = t1;\n"
-"      this.errorMessage = t2;\n"
-"    },\n"
-"    HotRestartRequest: function HotRestartRequest(t0) {\n"
-"      this.id = t0;\n"
-"    },\n"
-"    HotRestartResponse: function HotRestartResponse(t0, t1, t2) {\n"
-"      this.id = t0;\n"
-"      this.success = t1;\n"
-"      this.errorMessage = t2;\n"
-"    },\n"
-"    PingRequest: function PingRequest() {\n"
-"    },\n"
-"    RegisterEvent: function RegisterEvent(t0, t1) {\n"
-"      this.eventData = t0;\n"
-"      this.timestamp = t1;\n"
-"    },\n"
-"    RunRequest: function RunRequest() {\n"
-"    },\n"
-"    ServiceExtensionRequest: function ServiceExtensionRequest(t0, t1, t2) {\n"
-"      this.id = t0;\n"
-"      this.method = t1;\n"
-"      this.args = t2;\n"
-"    },\n"
-"    ServiceExtensionResponse: function ServiceExtensionResponse(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _.id = t0;\n"
-"      _.success = t1;\n"
-"      _.result = t2;\n"
-"      _.errorCode = t3;\n"
-"      _.errorMessage = t4;\n"
-"    },\n"
-"    BatchedStreamController: function BatchedStreamController(t0, t1, t2, t3, t4, t5) {\n"
-"      var _ = this;\n"
-"      _._checkDelayMilliseconds = t0;\n"
-"      _._batchDelayMilliseconds = t1;\n"
-"      _._inputController = t2;\n"
-"      _.__BatchedStreamController__inputQueue_A = \$;\n"
-"      _._outputController = t3;\n"
-"      _._completer = t4;\n"
-"      _.\$ti = t5;\n"
-"    },\n"
-"    BatchedStreamController__hasEventOrTimeOut_closure: function BatchedStreamController__hasEventOrTimeOut_closure() {\n"
-"    },\n"
-"    BatchedStreamController__hasEventDuring_closure: function BatchedStreamController__hasEventDuring_closure() {\n"
-"    },\n"
-"    PersistentWebSocket_connect(uri, onReconnect) {\n"
-"      return A.BrowserWebSocket_connect(uri, null).then\$1\$1(new A.PersistentWebSocket_connect_closure(uri, 100, 3, null, onReconnect, \"Unknown\"), type\$.PersistentWebSocket);\n"
-"    },\n"
-"    SocketClient: function SocketClient() {\n"
-"    },\n"
-"    SseSocketClient: function SseSocketClient(t0) {\n"
-"      this._sockets\$_client = t0;\n"
-"    },\n"
-"    WebSocketClient: function WebSocketClient(t0) {\n"
-"      this._channel = t0;\n"
-"    },\n"
-"    WebSocketClient_stream_closure: function WebSocketClient_stream_closure() {\n"
-"    },\n"
-"    PersistentWebSocket: function PersistentWebSocket(t0, t1, t2, t3, t4, t5, t6, t7) {\n"
-"      var _ = this;\n"
-"      _.logger = t0;\n"
-"      _.debugName = t1;\n"
-"      _.maxRetryAttempts = t2;\n"
-"      _._doneCompleter = t3;\n"
-"      _.uri = t4;\n"
-"      _.onReconnect = t5;\n"
-"      _._ws = t6;\n"
-"      _.__PersistentWebSocket__incomingStreamController_FI = \$;\n"
-"      _._outgoingStreamController = t7;\n"
-"    },\n"
-"    PersistentWebSocket_connect_closure: function PersistentWebSocket_connect_closure(t0, t1, t2, t3, t4, t5) {\n"
-"      var _ = this;\n"
-"      _.uri = t0;\n"
-"      _.exponentialBackoffDelayMs = t1;\n"
-"      _.maxRetryAttempts = t2;\n"
-"      _.logger = t3;\n"
-"      _.onReconnect = t4;\n"
-"      _.debugName = t5;\n"
-"    },\n"
-"    PersistentWebSocket__listenWithRetry_attemptRetry: function PersistentWebSocket__listenWithRetry_attemptRetry(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"    },\n"
-"    PersistentWebSocket__listenWithRetry_closure: function PersistentWebSocket__listenWithRetry_closure(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.\$this = t0;\n"
-"      _.attemptRetry = t1;\n"
-"      _.eventsSub = t2;\n"
-"      _.wsOnDoneCompleter = t3;\n"
-"    },\n"
-"    _PersistentWebSocket_Object_StreamChannelMixin: function _PersistentWebSocket_Object_StreamChannelMixin() {\n"
-"    },\n"
-"    safeUnawaited(future) {\n"
-"      future.catchError\$1(new A.safeUnawaited_closure());\n"
-"    },\n"
-"    safeUnawaited_closure: function safeUnawaited_closure() {\n"
-"    },\n"
-"    Uuid: function Uuid() {\n"
-"    },\n"
-"    stronglyConnectedComponents(nodes, edges, \$T) {\n"
-"      var t2, t3, t4, node, index, t5, state, iterator, index0, lowLink, t6, next, component, t7, result0, _null = null,\n"
-"        result = A._setArrayType([], \$T._eval\$1(\"JSArray<List<0>>\")),\n"
-"        t1 = type\$.int,\n"
-"        lowLinks = A.HashMap_HashMap(_null, _null, \$T, t1),\n"
-"        indexes = A.HashMap_HashMap(_null, _null, \$T, t1),\n"
-"        onStack = A.HashSet_HashSet(_null, _null, \$T),\n"
-"        lastVisited = A.ListQueue\$(\$T);\n"
-"      t1 = A._setArrayType([], \$T._eval\$1(\"JSArray<_StackState<0>>\"));\n"
-"      for (t2 = nodes.\$ti, t3 = new A.ListIterator(nodes, nodes.get\$length(0), t2._eval\$1(\"ListIterator<ListIterable.E>\")), t4 = \$T._eval\$1(\"_StackState<0>\"), t2 = t2._eval\$1(\"ListIterable.E\"); t3.moveNext\$0();) {\n"
-"        node = t3.__internal\$_current;\n"
-"        t1.push(new A._StackState(node == null ? t2._as(node) : node, _null, t4));\n"
-"      }\n"
-"      \$label0\$0:\n"
-"        for (t2 = lastVisited.\$ti._precomputed1, t3 = \$T._eval\$1(\"JSArray<0>\"), index = 0; t5 = t1.length, t5 !== 0;) {\n"
-"          if (0 >= t5)\n"
-"            return A.ioore(t1, -1);\n"
-"          state = t1.pop();\n"
-"          node = state.node;\n"
-"          iterator = state.iterator;\n"
-"          if (iterator == null) {\n"
-"            if (indexes.containsKey\$1(node))\n"
-"              continue \$label0\$0;\n"
-"            indexes.\$indexSet(0, node, index);\n"
-"            lowLinks.\$indexSet(0, node, index);\n"
-"            index0 = index + 1;\n"
-"            iterator = J.get\$iterator\$ax(edges.call\$1(node));\n"
-"            if (!iterator.moveNext\$0()) {\n"
-"              B.JSArray_methods.add\$1(result, A._setArrayType([node], t3));\n"
-"              index = index0;\n"
-"              continue \$label0\$0;\n"
-"            }\n"
-"            lastVisited._collection\$_add\$1(t2._as(node));\n"
-"            onStack.add\$1(0, node);\n"
-"            lowLink = index;\n"
-"            index = index0;\n"
-"          } else {\n"
-"            t5 = lowLinks.\$index(0, node);\n"
-"            t5.toString;\n"
-"            t6 = lowLinks.\$index(0, iterator.get\$current());\n"
-"            t6.toString;\n"
-"            lowLink = Math.min(t5, t6);\n"
-"          }\n"
-"          do {\n"
-"            next = iterator.get\$current();\n"
-"            if (!indexes.containsKey\$1(next)) {\n"
-"              B.JSArray_methods.add\$1(t1, new A._StackState(node, iterator, t4));\n"
-"              B.JSArray_methods.add\$1(t1, new A._StackState(next, _null, t4));\n"
-"              continue \$label0\$0;\n"
-"            } else if (onStack.contains\$1(0, next)) {\n"
-"              t5 = indexes.\$index(0, next);\n"
-"              t5.toString;\n"
-"              lowLink = Math.min(lowLink, t5);\n"
-"              lowLinks.\$indexSet(0, node, lowLink);\n"
-"            }\n"
-"          } while (iterator.moveNext\$0());\n"
-"          if (lowLink === indexes.\$index(0, node)) {\n"
-"            component = A._setArrayType([], t3);\n"
-"            do {\n"
-"              t5 = lastVisited._head;\n"
-"              t6 = lastVisited._tail;\n"
-"              if (t5 === t6)\n"
-"                A.throwExpression(A.IterableElementError_noElement());\n"
-"              ++lastVisited._modificationCount;\n"
-"              t5 = lastVisited._table;\n"
-"              t7 = t5.length;\n"
-"              t6 = (t6 - 1 & t7 - 1) >>> 0;\n"
-"              lastVisited._tail = t6;\n"
-"              if (!(t6 >= 0 && t6 < t7))\n"
-"                return A.ioore(t5, t6);\n"
-"              result0 = t5[t6];\n"
-"              if (result0 == null)\n"
-"                result0 = t2._as(result0);\n"
-"              B.JSArray_methods.\$indexSet(t5, t6, _null);\n"
-"              onStack.remove\$1(0, result0);\n"
-"              B.JSArray_methods.add\$1(component, result0);\n"
-"            } while (!A._defaultEquals(result0, node));\n"
-"            B.JSArray_methods.add\$1(result, component);\n"
-"          }\n"
-"        }\n"
-"      return result;\n"
-"    },\n"
-"    _defaultEquals(a, b) {\n"
-"      return J.\$eq\$(a, b);\n"
-"    },\n"
-"    _StackState: function _StackState(t0, t1, t2) {\n"
-"      this.node = t0;\n"
-"      this.iterator = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    RequestAbortedException: function RequestAbortedException(t0, t1) {\n"
-"      this.message = t0;\n"
-"      this.uri = t1;\n"
-"    },\n"
-"    BaseClient: function BaseClient() {\n"
-"    },\n"
-"    BaseRequest: function BaseRequest() {\n"
-"    },\n"
-"    BaseRequest_closure: function BaseRequest_closure() {\n"
-"    },\n"
-"    BaseRequest_closure0: function BaseRequest_closure0() {\n"
-"    },\n"
-"    BaseResponse: function BaseResponse() {\n"
-"    },\n"
-"    _toClientException(e, request) {\n"
-"      var message;\n"
-"      if (type\$.JSObject._is(e) && \"AbortError\" === A._asString(e.name))\n"
-"        return new A.RequestAbortedException(\"Request aborted by `abortTrigger`\", request.url);\n"
-"      if (!(e instanceof A.ClientException)) {\n"
-"        message = J.toString\$0\$(e);\n"
-"        if (B.JSString_methods.startsWith\$1(message, \"TypeError: \"))\n"
-"          message = B.JSString_methods.substring\$1(message, 11);\n"
-"        e = new A.ClientException(message, request.url);\n"
-"      }\n"
-"      return e;\n"
-"    },\n"
-"    _rethrowAsClientException(e, st, request) {\n"
-"      A.Error_throwWithStackTrace(A._toClientException(e, request), st);\n"
-"    },\n"
-"    _bodyToStream(request, response) {\n"
-"      return new A._MultiStream(false, new A._bodyToStream_closure(request, response), type\$._MultiStream_List_int);\n"
-"    },\n"
-"    _readStreamBody(request, response, controller) {\n"
-"      return A._readStreamBody\$body(request, response, controller);\n"
-"    },\n"
-"    _readStreamBody\$body(request, response, controller) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$returnValue, \$async\$handler = 2, \$async\$errorStack = [], chunk, e, s, t2, t3, t4, t5, exception, t6, t7, _box_0, t1, reader, \$async\$exception;\n"
-"      var \$async\$_readStreamBody = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              _box_0 = {};\n"
-"              t1 = A._asJSObjectQ(response.body);\n"
-"              reader = t1 == null ? null : A._asJSObject(t1.getReader());\n"
-"              \$async\$goto = reader == null ? 3 : 4;\n"
-"              break;\n"
-"            case 3:\n"
-"              // then\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(controller.close\$0(), \$async\$_readStreamBody);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 4:\n"
-"              // join\n"
-"              _box_0.resumeSignal = null;\n"
-"              _box_0.hadError = _box_0.cancelled = false;\n"
-"              controller.set\$onResume(new A._readStreamBody_closure(_box_0));\n"
-"              controller.set\$onCancel(new A._readStreamBody_closure0(_box_0, reader, request));\n"
-"              t1 = type\$.NativeUint8List, t2 = controller.\$ti._precomputed1, t3 = type\$.JSObject, t4 = type\$._Future_void, t5 = type\$._AsyncCompleter_void;\n"
-"            case 6:\n"
-"              // for condition\n"
-"              // trivial condition\n"
-"              chunk = null;\n"
-"              \$async\$handler = 9;\n"
-"              \$async\$goto = 12;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(reader.read()), t3), \$async\$_readStreamBody);\n"
-"            case 12:\n"
-"              // returning from await.\n"
-"              chunk = \$async\$result;\n"
-"              \$async\$handler = 2;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 11;\n"
-"              break;\n"
-"            case 9:\n"
-"              // catch\n"
-"              \$async\$handler = 8;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              s = A.getTraceFromException(\$async\$exception);\n"
-"              \$async\$goto = !_box_0.cancelled ? 13 : 14;\n"
-"              break;\n"
-"            case 13:\n"
-"              // then\n"
-"              _box_0.hadError = true;\n"
-"              t1 = A._toClientException(e, request);\n"
-"              t2 = type\$.nullable_StackTrace._as(s);\n"
-"              t3 = controller._state;\n"
-"              if (t3 >= 4)\n"
-"                A.throwExpression(controller._badEventState\$0());\n"
-"              if ((t3 & 1) !== 0) {\n"
-"                t3 = controller.get\$_subscription();\n"
-"                t3._addError\$2(t1, t2 == null ? B._StringStackTrace_OdL : t2);\n"
-"              }\n"
-"              \$async\$goto = 15;\n"
-"              return A._asyncAwait(controller.close\$0(), \$async\$_readStreamBody);\n"
-"            case 15:\n"
-"              // returning from await.\n"
-"            case 14:\n"
-"              // join\n"
-"              // goto after for\n"
-"              \$async\$goto = 7;\n"
-"              break;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 11;\n"
-"              break;\n"
-"            case 8:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 2;\n"
-"              break;\n"
-"            case 11:\n"
-"              // after finally\n"
-"              if (A._asBool(chunk.done)) {\n"
-"                controller.closeSync\$0();\n"
-"                // goto after for\n"
-"                \$async\$goto = 7;\n"
-"                break;\n"
-"              } else {\n"
-"                t6 = chunk.value;\n"
-"                t6.toString;\n"
-"                t6 = t2._as(t1._as(t6));\n"
-"                t7 = controller._state;\n"
-"                if (t7 >= 4)\n"
-"                  A.throwExpression(controller._badEventState\$0());\n"
-"                if ((t7 & 1) !== 0)\n"
-"                  controller.get\$_subscription()._add\$1(t6);\n"
-"              }\n"
-"              t6 = controller._state;\n"
-"              \$async\$goto = ((t6 & 1) !== 0 ? (controller.get\$_subscription()._state & 4) !== 0 : (t6 & 2) === 0) ? 16 : 17;\n"
-"              break;\n"
-"            case 16:\n"
-"              // then\n"
-"              t6 = _box_0.resumeSignal;\n"
-"              \$async\$goto = 18;\n"
-"              return A._asyncAwait((t6 == null ? _box_0.resumeSignal = new A._AsyncCompleter(new A._Future(\$.Zone__current, t4), t5) : t6).future, \$async\$_readStreamBody);\n"
-"            case 18:\n"
-"              // returning from await.\n"
-"            case 17:\n"
-"              // join\n"
-"              if ((controller._state & 1) === 0) {\n"
-"                // goto after for\n"
-"                \$async\$goto = 7;\n"
-"                break;\n"
-"              }\n"
-"              // goto for condition\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 7:\n"
-"              // after for\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"            case 2:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_readStreamBody, \$async\$completer);\n"
-"    },\n"
-"    BrowserClient: function BrowserClient(t0) {\n"
-"      this.withCredentials = false;\n"
-"      this._openRequestAbortControllers = t0;\n"
-"    },\n"
-"    BrowserClient_send_closure: function BrowserClient_send_closure(t0) {\n"
-"      this.headers = t0;\n"
-"    },\n"
-"    _bodyToStream_closure: function _bodyToStream_closure(t0, t1) {\n"
-"      this.request = t0;\n"
-"      this.response = t1;\n"
-"    },\n"
-"    _readStreamBody_closure: function _readStreamBody_closure(t0) {\n"
-"      this._box_0 = t0;\n"
-"    },\n"
-"    _readStreamBody_closure0: function _readStreamBody_closure0(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.reader = t1;\n"
-"      this.request = t2;\n"
-"    },\n"
-"    ByteStream: function ByteStream(t0) {\n"
-"      this._stream = t0;\n"
-"    },\n"
-"    ByteStream_toBytes_closure: function ByteStream_toBytes_closure(t0) {\n"
-"      this.completer = t0;\n"
-"    },\n"
-"    ClientException\$(message, uri) {\n"
-"      return new A.ClientException(message, uri);\n"
-"    },\n"
-"    ClientException: function ClientException(t0, t1) {\n"
-"      this.message = t0;\n"
-"      this.uri = t1;\n"
-"    },\n"
-"    Request\$(method, url) {\n"
-"      var t1 = new Uint8Array(0),\n"
-"        t2 = \$.\$get\$BaseRequest__tokenRE();\n"
-"      if (!t2._nativeRegExp.test(method))\n"
-"        A.throwExpression(A.ArgumentError\$value(method, \"method\", \"Not a valid method\"));\n"
-"      t2 = type\$.String;\n"
-"      return new A.Request(B.C_Utf8Codec, t1, method, url, A.LinkedHashMap_LinkedHashMap(new A.BaseRequest_closure(), new A.BaseRequest_closure0(), t2, t2));\n"
-"    },\n"
-"    Request: function Request(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._defaultEncoding = t0;\n"
-"      _._bodyBytes = t1;\n"
-"      _.method = t2;\n"
-"      _.url = t3;\n"
-"      _.headers = t4;\n"
-"      _._finalized = false;\n"
-"    },\n"
-"    Response_fromStream(response) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Response),\n"
-"        \$async\$returnValue, body, t1, t2, t3, t4, t5, t6;\n"
-"      var \$async\$Response_fromStream = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(response.stream.toBytes\$0(), \$async\$Response_fromStream);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              body = \$async\$result;\n"
-"              t1 = response.statusCode;\n"
-"              t2 = response.request;\n"
-"              t3 = response.headers;\n"
-"              t4 = response.reasonPhrase;\n"
-"              t5 = A.toUint8List(body);\n"
-"              t6 = body.length;\n"
-"              t5 = new A.Response(t5, t2, t1, t4, t6, t3, false, true);\n"
-"              t5.BaseResponse\$7\$contentLength\$headers\$isRedirect\$persistentConnection\$reasonPhrase\$request(t1, t6, t3, false, true, t4, t2);\n"
-"              \$async\$returnValue = t5;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$Response_fromStream, \$async\$completer);\n"
-"    },\n"
-"    _contentTypeForHeaders(headers) {\n"
-"      var contentType = headers.\$index(0, \"content-type\");\n"
-"      if (contentType != null)\n"
-"        return A.MediaType_MediaType\$parse(contentType);\n"
-"      return A.MediaType\$(\"application\", \"octet-stream\", null);\n"
-"    },\n"
-"    Response: function Response(t0, t1, t2, t3, t4, t5, t6, t7) {\n"
-"      var _ = this;\n"
-"      _.bodyBytes = t0;\n"
-"      _.request = t1;\n"
-"      _.statusCode = t2;\n"
-"      _.reasonPhrase = t3;\n"
-"      _.contentLength = t4;\n"
-"      _.headers = t5;\n"
-"      _.isRedirect = t6;\n"
-"      _.persistentConnection = t7;\n"
-"    },\n"
-"    StreamedResponse: function StreamedResponse() {\n"
-"    },\n"
-"    StreamedResponseV2: function StreamedResponseV2(t0, t1, t2, t3, t4, t5, t6, t7) {\n"
-"      var _ = this;\n"
-"      _.stream = t0;\n"
-"      _.request = t1;\n"
-"      _.statusCode = t2;\n"
-"      _.reasonPhrase = t3;\n"
-"      _.contentLength = t4;\n"
-"      _.headers = t5;\n"
-"      _.isRedirect = t6;\n"
-"      _.persistentConnection = t7;\n"
-"    },\n"
-"    CaseInsensitiveMap__canonicalizer(key) {\n"
-"      return A._asString(key).toLowerCase();\n"
-"    },\n"
-"    CaseInsensitiveMap: function CaseInsensitiveMap(t0, t1, t2) {\n"
-"      this._canonicalize = t0;\n"
-"      this._base = t1;\n"
-"      this.\$ti = t2;\n"
-"    },\n"
-"    MediaType_MediaType\$parse(mediaType) {\n"
-"      return A.wrapFormatException(\"media type\", mediaType, new A.MediaType_MediaType\$parse_closure(mediaType), type\$.MediaType);\n"
-"    },\n"
-"    MediaType\$(type, subtype, parameters) {\n"
-"      var t1 = type\$.String;\n"
-"      if (parameters == null)\n"
-"        t1 = A.LinkedHashMap_LinkedHashMap\$_empty(t1, t1);\n"
-"      else {\n"
-"        t1 = new A.CaseInsensitiveMap(A.case_insensitive_map_CaseInsensitiveMap__canonicalizer\$closure(), A.LinkedHashMap_LinkedHashMap\$_empty(t1, type\$.MapEntry_String_String), type\$.CaseInsensitiveMap_String);\n"
-"        t1.addAll\$1(0, parameters);\n"
-"      }\n"
-"      return new A.MediaType(type.toLowerCase(), subtype.toLowerCase(), new A.UnmodifiableMapView(t1, type\$.UnmodifiableMapView_String_String));\n"
-"    },\n"
-"    MediaType: function MediaType(t0, t1, t2) {\n"
-"      this.type = t0;\n"
-"      this.subtype = t1;\n"
-"      this.parameters = t2;\n"
-"    },\n"
-"    MediaType_MediaType\$parse_closure: function MediaType_MediaType\$parse_closure(t0) {\n"
-"      this.mediaType = t0;\n"
-"    },\n"
-"    MediaType_toString_closure: function MediaType_toString_closure(t0) {\n"
-"      this.buffer = t0;\n"
-"    },\n"
-"    MediaType_toString__closure: function MediaType_toString__closure() {\n"
-"    },\n"
-"    expectQuotedString(scanner) {\n"
-"      var string;\n"
-"      scanner.expect\$2\$name(\$.\$get\$_quotedString(), \"quoted string\");\n"
-"      string = scanner.get\$lastMatch().\$index(0, 0);\n"
-"      return A.stringReplaceAllFuncUnchecked(B.JSString_methods.substring\$2(string, 1, string.length - 1), \$.\$get\$_quotedPair(), type\$.nullable_String_Function_Match._as(type\$.String_Function_Match._as(new A.expectQuotedString_closure())), null);\n"
-"    },\n"
-"    expectQuotedString_closure: function expectQuotedString_closure() {\n"
-"    },\n"
-"    Level: function Level(t0, t1) {\n"
-"      this.name = t0;\n"
-"      this.value = t1;\n"
-"    },\n"
-"    LogRecord: function LogRecord(t0, t1, t2) {\n"
-"      this.level = t0;\n"
-"      this.message = t1;\n"
-"      this.loggerName = t2;\n"
-"    },\n"
-"    Logger_Logger(\$name) {\n"
-"      return \$.Logger__loggers.putIfAbsent\$2(\$name, new A.Logger_Logger_closure(\$name));\n"
-"    },\n"
-"    Logger: function Logger(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _.name = t0;\n"
-"      _.parent = t1;\n"
-"      _._level = null;\n"
-"      _._children = t2;\n"
-"    },\n"
-"    Logger_Logger_closure: function Logger_Logger_closure(t0) {\n"
-"      this.name = t0;\n"
-"    },\n"
-"    _parseUri(uri) {\n"
-"      return uri;\n"
-"    },\n"
-"    _validateArgList(method, args) {\n"
-"      var numArgs, i, numArgs0, message, t1, t2, t3, t4;\n"
-"      for (numArgs = args.length, i = 1; i < numArgs; ++i) {\n"
-"        if (args[i] == null || args[i - 1] != null)\n"
-"          continue;\n"
-"        for (; numArgs >= 1; numArgs = numArgs0) {\n"
-"          numArgs0 = numArgs - 1;\n"
-"          if (args[numArgs0] != null)\n"
-"            break;\n"
-"        }\n"
-"        message = new A.StringBuffer(\"\");\n"
-"        t1 = method + \"(\";\n"
-"        message._contents = t1;\n"
-"        t2 = A._arrayInstanceType(args);\n"
-"        t3 = t2._eval\$1(\"SubListIterable<1>\");\n"
-"        t4 = new A.SubListIterable(args, 0, numArgs, t3);\n"
-"        t4.SubListIterable\$3(args, 0, numArgs, t2._precomputed1);\n"
-"        t3 = t1 + new A.MappedListIterable(t4, t3._eval\$1(\"String(ListIterable.E)\")._as(new A._validateArgList_closure()), t3._eval\$1(\"MappedListIterable<ListIterable.E,String>\")).join\$1(0, \", \");\n"
-"        message._contents = t3;\n"
-"        message._contents = t3 + (\"): part \" + (i - 1) + \" was null, but part \" + i + \" was not.\");\n"
-"        throw A.wrapException(A.ArgumentError\$(message.toString\$0(0), null));\n"
-"      }\n"
-"    },\n"
-"    Context: function Context(t0, t1) {\n"
-"      this.style = t0;\n"
-"      this._context\$_current = t1;\n"
-"    },\n"
-"    Context_joinAll_closure: function Context_joinAll_closure() {\n"
-"    },\n"
-"    Context_split_closure: function Context_split_closure() {\n"
-"    },\n"
-"    _validateArgList_closure: function _validateArgList_closure() {\n"
-"    },\n"
-"    InternalStyle: function InternalStyle() {\n"
-"    },\n"
-"    ParsedPath_ParsedPath\$parse(path, style) {\n"
-"      var t1, parts, separators, t2, start, i,\n"
-"        root = style.getRoot\$1(path);\n"
-"      style.isRootRelative\$1(path);\n"
-"      if (root != null)\n"
-"        path = B.JSString_methods.substring\$1(path, root.length);\n"
-"      t1 = type\$.JSArray_String;\n"
-"      parts = A._setArrayType([], t1);\n"
-"      separators = A._setArrayType([], t1);\n"
-"      t1 = path.length;\n"
-"      if (t1 !== 0) {\n"
-"        if (0 >= t1)\n"
-"          return A.ioore(path, 0);\n"
-"        t2 = style.isSeparator\$1(path.charCodeAt(0));\n"
-"      } else\n"
-"        t2 = false;\n"
-"      if (t2) {\n"
-"        if (0 >= t1)\n"
-"          return A.ioore(path, 0);\n"
-"        B.JSArray_methods.add\$1(separators, path[0]);\n"
-"        start = 1;\n"
-"      } else {\n"
-"        B.JSArray_methods.add\$1(separators, \"\");\n"
-"        start = 0;\n"
-"      }\n"
-"      for (i = start; i < t1; ++i)\n"
-"        if (style.isSeparator\$1(path.charCodeAt(i))) {\n"
-"          B.JSArray_methods.add\$1(parts, B.JSString_methods.substring\$2(path, start, i));\n"
-"          B.JSArray_methods.add\$1(separators, path[i]);\n"
-"          start = i + 1;\n"
-"        }\n"
-"      if (start < t1) {\n"
-"        B.JSArray_methods.add\$1(parts, B.JSString_methods.substring\$1(path, start));\n"
-"        B.JSArray_methods.add\$1(separators, \"\");\n"
-"      }\n"
-"      return new A.ParsedPath(style, root, parts, separators);\n"
-"    },\n"
-"    ParsedPath: function ParsedPath(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.style = t0;\n"
-"      _.root = t1;\n"
-"      _.parts = t2;\n"
-"      _.separators = t3;\n"
-"    },\n"
-"    PathException\$(message) {\n"
-"      return new A.PathException(message);\n"
-"    },\n"
-"    PathException: function PathException(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    Style__getPlatformStyle() {\n"
-"      if (A.Uri_base().get\$scheme() !== \"file\")\n"
-"        return \$.\$get\$Style_url();\n"
-"      if (!B.JSString_methods.endsWith\$1(A.Uri_base().get\$path(), \"/\"))\n"
-"        return \$.\$get\$Style_url();\n"
-"      if (A._Uri__Uri(null, \"a/b\", null, null).toFilePath\$0() === \"a\\\\b\")\n"
-"        return \$.\$get\$Style_windows();\n"
-"      return \$.\$get\$Style_posix();\n"
-"    },\n"
-"    Style: function Style() {\n"
-"    },\n"
-"    PosixStyle: function PosixStyle(t0, t1, t2) {\n"
-"      this.separatorPattern = t0;\n"
-"      this.needsSeparatorPattern = t1;\n"
-"      this.rootPattern = t2;\n"
-"    },\n"
-"    UrlStyle: function UrlStyle(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.separatorPattern = t0;\n"
-"      _.needsSeparatorPattern = t1;\n"
-"      _.rootPattern = t2;\n"
-"      _.relativeRootPattern = t3;\n"
-"    },\n"
-"    WindowsStyle: function WindowsStyle(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.separatorPattern = t0;\n"
-"      _.needsSeparatorPattern = t1;\n"
-"      _.rootPattern = t2;\n"
-"      _.relativeRootPattern = t3;\n"
-"    },\n"
-"    Pool: function Pool(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._requestedResources = t0;\n"
-"      _._onReleaseCallbacks = t1;\n"
-"      _._onReleaseCompleters = t2;\n"
-"      _._maxAllocatedResources = t3;\n"
-"      _._allocatedResources = 0;\n"
-"      _._timer = null;\n"
-"      _._closeMemo = t4;\n"
-"    },\n"
-"    Pool__runOnRelease_closure: function Pool__runOnRelease_closure() {\n"
-"    },\n"
-"    Pool__runOnRelease_closure0: function Pool__runOnRelease_closure0(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    PoolResource: function PoolResource(t0) {\n"
-"      this._pool = t0;\n"
-"      this._released = false;\n"
-"    },\n"
-"    FileLocation\$_(file, offset) {\n"
-"      if (offset < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"Offset may not be negative, was \" + offset + \".\"));\n"
-"      else if (offset > file._decodedChars.length)\n"
-"        A.throwExpression(A.RangeError\$(\"Offset \" + offset + string\$.x20must_ + file.get\$length(0) + \".\"));\n"
-"      return new A.FileLocation(file, offset);\n"
-"    },\n"
-"    SourceFile: function SourceFile(t0, t1, t2) {\n"
-"      var _ = this;\n"
-"      _.url = t0;\n"
-"      _._lineStarts = t1;\n"
-"      _._decodedChars = t2;\n"
-"      _._cachedLine = null;\n"
-"    },\n"
-"    FileLocation: function FileLocation(t0, t1) {\n"
-"      this.file = t0;\n"
-"      this.offset = t1;\n"
-"    },\n"
-"    _FileSpan: function _FileSpan(t0, t1, t2) {\n"
-"      this.file = t0;\n"
-"      this._file\$_start = t1;\n"
-"      this._file\$_end = t2;\n"
-"    },\n"
-"    Highlighter\$(span, color) {\n"
-"      var t1 = A.Highlighter__collateLines(A._setArrayType([A._Highlight\$(span, true)], type\$.JSArray__Highlight)),\n"
-"        t2 = new A.Highlighter_closure(color).call\$0(),\n"
-"        t3 = B.JSInt_methods.toString\$0(B.JSArray_methods.get\$last(t1).number + 1),\n"
-"        t4 = A.Highlighter__contiguous(t1) ? 0 : 3,\n"
-"        t5 = A._arrayInstanceType(t1);\n"
-"      return new A.Highlighter(t1, t2, null, 1 + Math.max(t3.length, t4), new A.MappedListIterable(t1, t5._eval\$1(\"int(1)\")._as(new A.Highlighter\$__closure()), t5._eval\$1(\"MappedListIterable<1,int>\")).reduce\$1(0, B.CONSTANT), !A.isAllTheSame(new A.MappedListIterable(t1, t5._eval\$1(\"Object?(1)\")._as(new A.Highlighter\$__closure0()), t5._eval\$1(\"MappedListIterable<1,Object?>\"))), new A.StringBuffer(\"\"));\n"
-"    },\n"
-"    Highlighter__contiguous(lines) {\n"
-"      var i, thisLine, nextLine;\n"
-"      for (i = 0; i < lines.length - 1;) {\n"
-"        thisLine = lines[i];\n"
-"        ++i;\n"
-"        nextLine = lines[i];\n"
-"        if (thisLine.number + 1 !== nextLine.number && J.\$eq\$(thisLine.url, nextLine.url))\n"
-"          return false;\n"
-"      }\n"
-"      return true;\n"
-"    },\n"
-"    Highlighter__collateLines(highlights) {\n"
-"      var t1, t2,\n"
-"        highlightsByUrl = A.groupBy(highlights, new A.Highlighter__collateLines_closure(), type\$._Highlight, type\$.Object);\n"
-"      for (t1 = A._instanceType(highlightsByUrl), t2 = new A.LinkedHashMapValueIterator(highlightsByUrl, highlightsByUrl._modifications, highlightsByUrl._first, t1._eval\$1(\"LinkedHashMapValueIterator<2>\")); t2.moveNext\$0();)\n"
-"        J.sort\$1\$ax(t2.__js_helper\$_current, new A.Highlighter__collateLines_closure0());\n"
-"      t1 = t1._eval\$1(\"LinkedHashMapEntriesIterable<1,2>\");\n"
-"      t2 = t1._eval\$1(\"ExpandIterable<Iterable.E,_Line>\");\n"
-"      t1 = A.List_List\$_of(new A.ExpandIterable(new A.LinkedHashMapEntriesIterable(highlightsByUrl, t1), t1._eval\$1(\"Iterable<_Line>(Iterable.E)\")._as(new A.Highlighter__collateLines_closure1()), t2), t2._eval\$1(\"Iterable.E\"));\n"
-"      return t1;\n"
-"    },\n"
-"    _Highlight\$(span, primary) {\n"
-"      var t1 = new A._Highlight_closure(span).call\$0();\n"
-"      return new A._Highlight(t1, true, null);\n"
-"    },\n"
-"    _Highlight__normalizeNewlines(span) {\n"
-"      var endOffset, t1, i, t2, t3, t4,\n"
-"        text = span.get\$text();\n"
-"      if (!B.JSString_methods.contains\$1(text, \"\\r\\n\"))\n"
-"        return span;\n"
-"      endOffset = span.get\$end().get\$offset();\n"
-"      for (t1 = text.length - 1, i = 0; i < t1; ++i)\n"
-"        if (text.charCodeAt(i) === 13 && text.charCodeAt(i + 1) === 10)\n"
-"          --endOffset;\n"
-"      t1 = span.get\$start();\n"
-"      t2 = span.get\$sourceUrl();\n"
-"      t3 = span.get\$end().get\$line();\n"
-"      t2 = A.SourceLocation\$(endOffset, span.get\$end().get\$column(), t3, t2);\n"
-"      t3 = A.stringReplaceAllUnchecked(text, \"\\r\\n\", \"\\n\");\n"
-"      t4 = span.get\$context();\n"
-"      return A.SourceSpanWithContext\$(t1, t2, t3, A.stringReplaceAllUnchecked(t4, \"\\r\\n\", \"\\n\"));\n"
-"    },\n"
-"    _Highlight__normalizeTrailingNewline(span) {\n"
-"      var context, text, start, end, t1, t2, t3;\n"
-"      if (!B.JSString_methods.endsWith\$1(span.get\$context(), \"\\n\"))\n"
-"        return span;\n"
-"      if (B.JSString_methods.endsWith\$1(span.get\$text(), \"\\n\\n\"))\n"
-"        return span;\n"
-"      context = B.JSString_methods.substring\$2(span.get\$context(), 0, span.get\$context().length - 1);\n"
-"      text = span.get\$text();\n"
-"      start = span.get\$start();\n"
-"      end = span.get\$end();\n"
-"      if (B.JSString_methods.endsWith\$1(span.get\$text(), \"\\n\")) {\n"
-"        t1 = A.findLineStart(span.get\$context(), span.get\$text(), span.get\$start().get\$column());\n"
-"        t1.toString;\n"
-"        t1 = t1 + span.get\$start().get\$column() + span.get\$length(span) === span.get\$context().length;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1) {\n"
-"        text = B.JSString_methods.substring\$2(span.get\$text(), 0, span.get\$text().length - 1);\n"
-"        if (text.length === 0)\n"
-"          end = start;\n"
-"        else {\n"
-"          t1 = span.get\$end().get\$offset();\n"
-"          t2 = span.get\$sourceUrl();\n"
-"          t3 = span.get\$end().get\$line();\n"
-"          end = A.SourceLocation\$(t1 - 1, A._Highlight__lastLineLength(context), t3 - 1, t2);\n"
-"          start = span.get\$start().get\$offset() === span.get\$end().get\$offset() ? end : span.get\$start();\n"
-"        }\n"
-"      }\n"
-"      return A.SourceSpanWithContext\$(start, end, text, context);\n"
-"    },\n"
-"    _Highlight__normalizeEndOfLine(span) {\n"
-"      var text, t1, t2, t3, t4;\n"
-"      if (span.get\$end().get\$column() !== 0)\n"
-"        return span;\n"
-"      if (span.get\$end().get\$line() === span.get\$start().get\$line())\n"
-"        return span;\n"
-"      text = B.JSString_methods.substring\$2(span.get\$text(), 0, span.get\$text().length - 1);\n"
-"      t1 = span.get\$start();\n"
-"      t2 = span.get\$end().get\$offset();\n"
-"      t3 = span.get\$sourceUrl();\n"
-"      t4 = span.get\$end().get\$line();\n"
-"      t3 = A.SourceLocation\$(t2 - 1, text.length - B.JSString_methods.lastIndexOf\$1(text, \"\\n\") - 1, t4 - 1, t3);\n"
-"      return A.SourceSpanWithContext\$(t1, t3, text, B.JSString_methods.endsWith\$1(span.get\$context(), \"\\n\") ? B.JSString_methods.substring\$2(span.get\$context(), 0, span.get\$context().length - 1) : span.get\$context());\n"
-"    },\n"
-"    _Highlight__lastLineLength(text) {\n"
-"      var t2,\n"
-"        t1 = text.length;\n"
-"      if (t1 === 0)\n"
-"        return 0;\n"
-"      else {\n"
-"        t2 = t1 - 1;\n"
-"        if (!(t2 >= 0))\n"
-"          return A.ioore(text, t2);\n"
-"        if (text.charCodeAt(t2) === 10)\n"
-"          return t1 === 1 ? 0 : t1 - B.JSString_methods.lastIndexOf\$2(text, \"\\n\", t1 - 2) - 1;\n"
-"        else\n"
-"          return t1 - B.JSString_methods.lastIndexOf\$1(text, \"\\n\") - 1;\n"
-"      }\n"
-"    },\n"
-"    Highlighter: function Highlighter(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _._lines = t0;\n"
-"      _._primaryColor = t1;\n"
-"      _._secondaryColor = t2;\n"
-"      _._paddingBeforeSidebar = t3;\n"
-"      _._maxMultilineSpans = t4;\n"
-"      _._multipleFiles = t5;\n"
-"      _._buffer = t6;\n"
-"    },\n"
-"    Highlighter_closure: function Highlighter_closure(t0) {\n"
-"      this.color = t0;\n"
-"    },\n"
-"    Highlighter\$__closure: function Highlighter\$__closure() {\n"
-"    },\n"
-"    Highlighter\$___closure: function Highlighter\$___closure() {\n"
-"    },\n"
-"    Highlighter\$__closure0: function Highlighter\$__closure0() {\n"
-"    },\n"
-"    Highlighter__collateLines_closure: function Highlighter__collateLines_closure() {\n"
-"    },\n"
-"    Highlighter__collateLines_closure0: function Highlighter__collateLines_closure0() {\n"
-"    },\n"
-"    Highlighter__collateLines_closure1: function Highlighter__collateLines_closure1() {\n"
-"    },\n"
-"    Highlighter__collateLines__closure: function Highlighter__collateLines__closure(t0) {\n"
-"      this.line = t0;\n"
-"    },\n"
-"    Highlighter_highlight_closure: function Highlighter_highlight_closure() {\n"
-"    },\n"
-"    Highlighter__writeFileStart_closure: function Highlighter__writeFileStart_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights_closure: function Highlighter__writeMultilineHighlights_closure(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.startLine = t1;\n"
-"      this.line = t2;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights_closure0: function Highlighter__writeMultilineHighlights_closure0(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.highlight = t1;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights_closure1: function Highlighter__writeMultilineHighlights_closure1(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights_closure2: function Highlighter__writeMultilineHighlights_closure2(t0, t1, t2, t3, t4, t5, t6) {\n"
-"      var _ = this;\n"
-"      _._box_0 = t0;\n"
-"      _.\$this = t1;\n"
-"      _.current = t2;\n"
-"      _.startLine = t3;\n"
-"      _.line = t4;\n"
-"      _.highlight = t5;\n"
-"      _.endLine = t6;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights__closure: function Highlighter__writeMultilineHighlights__closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"    },\n"
-"    Highlighter__writeMultilineHighlights__closure0: function Highlighter__writeMultilineHighlights__closure0(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.vertical = t1;\n"
-"    },\n"
-"    Highlighter__writeHighlightedText_closure: function Highlighter__writeHighlightedText_closure(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.\$this = t0;\n"
-"      _.text = t1;\n"
-"      _.startColumn = t2;\n"
-"      _.endColumn = t3;\n"
-"    },\n"
-"    Highlighter__writeIndicator_closure: function Highlighter__writeIndicator_closure(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.line = t1;\n"
-"      this.highlight = t2;\n"
-"    },\n"
-"    Highlighter__writeIndicator_closure0: function Highlighter__writeIndicator_closure0(t0, t1, t2) {\n"
-"      this.\$this = t0;\n"
-"      this.line = t1;\n"
-"      this.highlight = t2;\n"
-"    },\n"
-"    Highlighter__writeIndicator_closure1: function Highlighter__writeIndicator_closure1(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.\$this = t0;\n"
-"      _.coversWholeLine = t1;\n"
-"      _.line = t2;\n"
-"      _.highlight = t3;\n"
-"    },\n"
-"    Highlighter__writeSidebar_closure: function Highlighter__writeSidebar_closure(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"      this.end = t2;\n"
-"    },\n"
-"    _Highlight: function _Highlight(t0, t1, t2) {\n"
-"      this.span = t0;\n"
-"      this.isPrimary = t1;\n"
-"      this.label = t2;\n"
-"    },\n"
-"    _Highlight_closure: function _Highlight_closure(t0) {\n"
-"      this.span = t0;\n"
-"    },\n"
-"    _Line: function _Line(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.text = t0;\n"
-"      _.number = t1;\n"
-"      _.url = t2;\n"
-"      _.highlights = t3;\n"
-"    },\n"
-"    SourceLocation\$(offset, column, line, sourceUrl) {\n"
-"      if (offset < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"Offset may not be negative, was \" + offset + \".\"));\n"
-"      else if (line < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"Line may not be negative, was \" + line + \".\"));\n"
-"      else if (column < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"Column may not be negative, was \" + column + \".\"));\n"
-"      return new A.SourceLocation(sourceUrl, offset, line, column);\n"
-"    },\n"
-"    SourceLocation: function SourceLocation(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _.sourceUrl = t0;\n"
-"      _.offset = t1;\n"
-"      _.line = t2;\n"
-"      _.column = t3;\n"
-"    },\n"
-"    SourceLocationMixin: function SourceLocationMixin() {\n"
-"    },\n"
-"    SourceSpanBase: function SourceSpanBase() {\n"
-"    },\n"
-"    SourceSpanFormatException\$(message, span, source) {\n"
-"      return new A.SourceSpanFormatException(source, message, span);\n"
-"    },\n"
-"    SourceSpanException: function SourceSpanException() {\n"
-"    },\n"
-"    SourceSpanFormatException: function SourceSpanFormatException(t0, t1, t2) {\n"
-"      this.source = t0;\n"
-"      this._span_exception\$_message = t1;\n"
-"      this._span = t2;\n"
-"    },\n"
-"    SourceSpanMixin: function SourceSpanMixin() {\n"
-"    },\n"
-"    SourceSpanWithContext\$(start, end, text, _context) {\n"
-"      var t1 = new A.SourceSpanWithContext(_context, start, end, text);\n"
-"      t1.SourceSpanBase\$3(start, end, text);\n"
-"      if (!B.JSString_methods.contains\$1(_context, text))\n"
-"        A.throwExpression(A.ArgumentError\$('The context line \"' + _context + '\" must contain \"' + text + '\".', null));\n"
-"      if (A.findLineStart(_context, text, start.get\$column()) == null)\n"
-"        A.throwExpression(A.ArgumentError\$('The span text \"' + text + '\" must start at column ' + (start.get\$column() + 1) + ' in a line within \"' + _context + '\".', null));\n"
-"      return t1;\n"
-"    },\n"
-"    SourceSpanWithContext: function SourceSpanWithContext(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._context = t0;\n"
-"      _.start = t1;\n"
-"      _.end = t2;\n"
-"      _.text = t3;\n"
-"    },\n"
-"    SseClient\$(serverUrl, debugKey) {\n"
-"      var t3, t4, t5,\n"
-"        t1 = type\$.String,\n"
-"        t2 = A.StreamController_StreamController(t1);\n"
-"      t1 = A.StreamController_StreamController(t1);\n"
-"      t3 = A.Logger_Logger(\"SseClient\");\n"
-"      t4 = \$.Zone__current;\n"
-"      t5 = A.generateId();\n"
-"      t1 = new A.SseClient(debugKey + \"-\" + t5, t2, t1, t3, new A._AsyncCompleter(new A._Future(t4, type\$._Future_void), type\$._AsyncCompleter_void));\n"
-"      t1.SseClient\$2\$debugKey(serverUrl, debugKey);\n"
-"      return t1;\n"
-"    },\n"
-"    SseClient: function SseClient(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._clientId = t0;\n"
-"      _._incomingController = t1;\n"
-"      _._outgoingController = t2;\n"
-"      _._logger = t3;\n"
-"      _._onConnected = t4;\n"
-"      _._lastMessageId = -1;\n"
-"      _.__SseClient__serverUrl_A = _.__SseClient__eventSource_A = \$;\n"
-"      _._errorTimer = null;\n"
-"    },\n"
-"    SseClient_closure: function SseClient_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    SseClient_closure0: function SseClient_closure0(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    SseClient_closure1: function SseClient_closure1(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    SseClient__closure: function SseClient__closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.error = t1;\n"
-"    },\n"
-"    SseClient__onOutgoingMessage_closure: function SseClient__onOutgoingMessage_closure(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.\$this = t1;\n"
-"      this.message = t2;\n"
-"    },\n"
-"    StreamChannelMixin: function StreamChannelMixin() {\n"
-"    },\n"
-"    StringScannerException: function StringScannerException(t0, t1, t2) {\n"
-"      this.source = t0;\n"
-"      this._span_exception\$_message = t1;\n"
-"      this._span = t2;\n"
-"    },\n"
-"    StringScanner: function StringScanner(t0, t1) {\n"
-"      var _ = this;\n"
-"      _.sourceUrl = t0;\n"
-"      _.string = t1;\n"
-"      _._string_scanner\$_position = 0;\n"
-"      _._lastMatchPosition = _._lastMatch = null;\n"
-"    },\n"
-"    _EventStreamSubscription\$(_target, _eventType, onData, _useCapture, \$T) {\n"
-"      var t1;\n"
-"      if (onData == null)\n"
-"        t1 = null;\n"
-"      else {\n"
-"        t1 = A._wrapZone(new A._EventStreamSubscription_closure(onData), type\$.JSObject);\n"
-"        t1 = t1 == null ? null : A._functionToJS1(t1);\n"
-"      }\n"
-"      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, \$T._eval\$1(\"_EventStreamSubscription<0>\"));\n"
-"      t1._tryResume\$0();\n"
-"      return t1;\n"
-"    },\n"
-"    _wrapZone(callback, \$T) {\n"
-"      var t1 = \$.Zone__current;\n"
-"      if (t1 === B.Zone_jYP)\n"
-"        return callback;\n"
-"      return t1.bindUnaryCallbackGuarded\$1\$1(callback, \$T);\n"
-"    },\n"
-"    EventStreamProvider: function EventStreamProvider(t0, t1) {\n"
-"      this._eventType = t0;\n"
-"      this.\$ti = t1;\n"
-"    },\n"
-"    _EventStream: function _EventStream(t0, t1, t2, t3) {\n"
-"      var _ = this;\n"
-"      _._target = t0;\n"
-"      _._eventType = t1;\n"
-"      _._useCapture = t2;\n"
-"      _.\$ti = t3;\n"
-"    },\n"
-"    _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) {\n"
-"      var _ = this;\n"
-"      _._pauseCount = 0;\n"
-"      _._target = t0;\n"
-"      _._eventType = t1;\n"
-"      _._onData = t2;\n"
-"      _._useCapture = t3;\n"
-"      _.\$ti = t4;\n"
-"    },\n"
-"    _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) {\n"
-"      this.onData = t0;\n"
-"    },\n"
-"    _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {\n"
-"      this.handleData = t0;\n"
-"    },\n"
-"    BrowserWebSocket_connect(url, protocols) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.BrowserWebSocket),\n"
-"        \$async\$returnValue, t1, t2, t3, webSocket, browserSocket, webSocketConnected;\n"
-"      var \$async\$BrowserWebSocket_connect = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              if (!url.isScheme\$1(\"ws\") && !url.isScheme\$1(\"wss\"))\n"
-"                throw A.wrapException(A.ArgumentError\$value(url, \"url\", \"only ws: and wss: schemes are supported\"));\n"
-"              t1 = init.G;\n"
-"              t2 = t1.WebSocket;\n"
-"              t3 = url.toString\$0(0);\n"
-"              t1 = t1.Array;\n"
-"              t1 = type\$.JSArray_nullable_Object._as(new t1());\n"
-"              webSocket = A._asJSObject(new t2(t3, t1));\n"
-"              webSocket.binaryType = \"arraybuffer\";\n"
-"              browserSocket = new A.BrowserWebSocket(webSocket, A.StreamController_StreamController(type\$.WebSocketEvent));\n"
-"              t1 = new A._Future(\$.Zone__current, type\$._Future_BrowserWebSocket);\n"
-"              webSocketConnected = new A._AsyncCompleter(t1, type\$._AsyncCompleter_BrowserWebSocket);\n"
-"              if (A._asInt(webSocket.readyState) === 1)\n"
-"                webSocketConnected.complete\$1(browserSocket);\n"
-"              else if (A._asInt(webSocket.readyState) === 2 || A._asInt(webSocket.readyState) === 3)\n"
-"                webSocketConnected.completeError\$1(new A.WebSocketException(\"Unexpected WebSocket state: \" + A._asInt(webSocket.readyState) + \", expected CONNECTING (0) or OPEN (1)\"));\n"
-"              else\n"
-"                new A._EventStream(webSocket, \"open\", false, type\$._EventStream_JSObject).get\$first(0).then\$1\$1(new A.BrowserWebSocket_connect_closure(webSocketConnected, browserSocket), type\$.void);\n"
-"              t2 = type\$._EventStream_JSObject;\n"
-"              t3 = type\$.void;\n"
-"              new A._EventStream(webSocket, \"error\", false, t2).get\$first(0).then\$1\$1(new A.BrowserWebSocket_connect_closure0(webSocketConnected, browserSocket), t3);\n"
-"              A._EventStreamSubscription\$(webSocket, \"message\", type\$.nullable_void_Function_JSObject._as(new A.BrowserWebSocket_connect_closure1(browserSocket)), false, type\$.JSObject);\n"
-"              new A._EventStream(webSocket, \"close\", false, t2).get\$first(0).then\$1\$1(new A.BrowserWebSocket_connect_closure2(webSocketConnected, browserSocket), t3);\n"
-"              \$async\$returnValue = t1;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$BrowserWebSocket_connect, \$async\$completer);\n"
-"    },\n"
-"    BrowserWebSocket: function BrowserWebSocket(t0, t1) {\n"
-"      this._webSocket = t0;\n"
-"      this._events = t1;\n"
-"    },\n"
-"    BrowserWebSocket_connect_closure: function BrowserWebSocket_connect_closure(t0, t1) {\n"
-"      this.webSocketConnected = t0;\n"
-"      this.browserSocket = t1;\n"
-"    },\n"
-"    BrowserWebSocket_connect_closure0: function BrowserWebSocket_connect_closure0(t0, t1) {\n"
-"      this.webSocketConnected = t0;\n"
-"      this.browserSocket = t1;\n"
-"    },\n"
-"    BrowserWebSocket_connect_closure1: function BrowserWebSocket_connect_closure1(t0) {\n"
-"      this.browserSocket = t0;\n"
-"    },\n"
-"    BrowserWebSocket_connect_closure2: function BrowserWebSocket_connect_closure2(t0, t1) {\n"
-"      this.webSocketConnected = t0;\n"
-"      this.browserSocket = t1;\n"
-"    },\n"
-"    WebSocketConnectionClosed\$() {\n"
-"      return new A.WebSocketConnectionClosed(\"Connection Closed\");\n"
-"    },\n"
-"    WebSocketEvent: function WebSocketEvent() {\n"
-"    },\n"
-"    TextDataReceived: function TextDataReceived(t0) {\n"
-"      this.text = t0;\n"
-"    },\n"
-"    BinaryDataReceived: function BinaryDataReceived(t0) {\n"
-"      this.data = t0;\n"
-"    },\n"
-"    CloseReceived: function CloseReceived(t0, t1) {\n"
-"      this.code = t0;\n"
-"      this.reason = t1;\n"
-"    },\n"
-"    WebSocketException: function WebSocketException(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    WebSocketConnectionClosed: function WebSocketConnectionClosed(t0) {\n"
-"      this.message = t0;\n"
-"    },\n"
-"    main() {\n"
-"      return A.runZonedGuarded(new A.main_closure(), new A.main_closure0(), type\$.Future_void);\n"
-"    },\n"
-"    initializeConnection(clientSink) {\n"
-"      var t2,\n"
-"        t1 = init.G;\n"
-"      if (A._asString(t1.\$dartModuleStrategy) !== \"ddc-library-bundle\")\n"
-"        if (A._isChromium())\n"
-"          A._sendConnectRequest(clientSink);\n"
-"        else\n"
-"          A.runMain();\n"
-"      else\n"
-"        A._sendConnectRequest(clientSink);\n"
-"      A._asJSObject(t1.window).addEventListener(\"message\", A._functionToJS1(A.client___handleAuthRequest\$closure()));\n"
-"      t2 = type\$.JavaScriptObject;\n"
-"      A._dispatchEvent(\"dart-app-ready\", B.C_JsonCodec.encode\$2\$toEncodable(new A.DebugInfo(A._asString(t1.\$dartEntrypointPath), A._asStringQ(t2._as(t1.window).\$dartAppId), A._asStringQ(t1.\$dartAppInstanceId), A._asString(A._asJSObject(A._asJSObject(t1.window).location).origin), A._asString(A._asJSObject(A._asJSObject(t1.window).location).href), A._authUrl(), A._asStringQ(t2._as(t1.window).\$dartExtensionUri), A._asBoolQ(t2._as(t1.window).\$isInternalBuild), A._asBoolQ(t2._as(t1.window).\$isFlutterApp), A._asStringQ(t1.\$dartWorkspaceName)), null));\n"
-"    },\n"
-"    _trySendEvent(sink, serialized, \$T) {\n"
-"      var exception;\n"
-"      try {\n"
-"        sink._async\$_target.add\$1(0, sink.\$ti._precomputed1._as(serialized));\n"
-"      } catch (exception) {\n"
-"        if (A.unwrapException(exception) instanceof A.StateError)\n"
-"          A.print(\"Cannot send event \" + A.S(serialized) + \". Injected client connection is closed.\");\n"
-"        else\n"
-"          throw exception;\n"
-"      }\n"
-"    },\n"
-"    _deserializeEvent(decoded) {\n"
-"      var t2, _0_6_isSet, typeName, _1_5_isSet, _1_5, json, t3, _null = null,\n"
-"        _s16_ = \"DevToolsResponse\",\n"
-"        _0_6 = _null,\n"
-"        t1 = false;\n"
-"      if (type\$.List_dynamic._is(decoded)) {\n"
-"        t2 = J.getInterceptor\$asx(decoded);\n"
-"        _0_6_isSet = t2.get\$length(decoded) >= 1;\n"
-"        if (_0_6_isSet) {\n"
-"          _0_6 = t2.\$index(decoded, 0);\n"
-"          t1 = typeof _0_6 == \"string\";\n"
-"        }\n"
-"      } else\n"
-"        _0_6_isSet = false;\n"
-"      if (t1) {\n"
-"        typeName = A._asString(_0_6_isSet ? _0_6 : J.\$index\$asx(decoded, 0));\n"
-"        \$label0\$0: {\n"
-"          t1 = J.getInterceptor\$asx(decoded);\n"
-"          _1_5_isSet = t1.get\$length(decoded) === 2;\n"
-"          if (_1_5_isSet) {\n"
-"            _1_5 = t1.\$index(decoded, 1);\n"
-"            t2 = type\$.Map_String_dynamic._is(_1_5);\n"
-"          } else {\n"
-"            _1_5 = _null;\n"
-"            t2 = false;\n"
-"          }\n"
-"          if (t2) {\n"
-"            t1 = _1_5_isSet ? _1_5 : t1.\$index(decoded, 1);\n"
-"            type\$.Map_String_dynamic._as(t1);\n"
-"            break \$label0\$0;\n"
-"          }\n"
-"          t1 = B.Map_empty;\n"
-"          break \$label0\$0;\n"
-"        }\n"
-"        switch (typeName) {\n"
-"          case \"DevToolsResponse\":\n"
-"            json = A.listToMap(decoded, _s16_);\n"
-"            t1 = new A.DevToolsResponse(A._asBool(json.\$index(0, \"success\")), A._asBool(json.\$index(0, \"promptExtension\")), A._asStringQ(json.\$index(0, \"error\")));\n"
-"            break;\n"
-"          case \"ConnectRequest\":\n"
-"            t1 = new A.ConnectRequest(A._asString(t1.\$index(0, \"appId\")), A._asString(t1.\$index(0, \"instanceId\")), A._asString(t1.\$index(0, \"entrypointPath\")));\n"
-"            break;\n"
-"          case \"RunRequest\":\n"
-"            t1 = new A.RunRequest();\n"
-"            break;\n"
-"          case \"HotReloadRequest\":\n"
-"            t1 = new A.HotReloadRequest(A._asString(t1.\$index(0, \"id\")));\n"
-"            break;\n"
-"          case \"HotRestartRequest\":\n"
-"            t1 = new A.HotRestartRequest(A._asString(t1.\$index(0, \"id\")));\n"
-"            break;\n"
-"          case \"ServiceExtensionRequest\":\n"
-"            t2 = A._asString(t1.\$index(0, \"id\"));\n"
-"            t3 = A._asString(t1.\$index(0, \"method\"));\n"
-"            t1 = type\$.nullable_Map_dynamic_dynamic._as(t1.\$index(0, \"args\"));\n"
-"            t1 = t1 == null ? _null : t1.cast\$2\$0(0, type\$.String, type\$.dynamic);\n"
-"            if (t1 == null)\n"
-"              t1 = B.Map_empty;\n"
-"            t1 = new A.ServiceExtensionRequest(t2, t3, t1);\n"
-"            break;\n"
-"          case \"BuildResult\":\n"
-"            t1 = new A.BuildResult(A.BuildStatus_BuildStatus\$fromJson(A._asString(t1.\$index(0, \"status\"))));\n"
-"            break;\n"
-"          case \"ErrorResponse\":\n"
-"            t1 = new A.ErrorResponse(A._asString(t1.\$index(0, \"error\")), A._asString(t1.\$index(0, \"stackTrace\")));\n"
-"            break;\n"
-"          case \"PingRequest\":\n"
-"            t1 = new A.PingRequest();\n"
-"            break;\n"
-"          default:\n"
-"            t1 = _null;\n"
-"            break;\n"
-"        }\n"
-"        return t1;\n"
-"      }\n"
-"      return _null;\n"
-"    },\n"
-"    _sendConnectRequest(clientSink) {\n"
-"      var t1 = init.G,\n"
-"        t2 = A._asString(t1.\$dartAppId),\n"
-"        t3 = A._asStringQ(t1.\$dartAppInstanceId);\n"
-"      t3.toString;\n"
-"      A._trySendEvent(clientSink, B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"ConnectRequest\", new A.ConnectRequest(t2, t3, A._asString(t1.\$dartEntrypointPath)).toJson\$0()], type\$.JSArray_Object), null), type\$.dynamic);\n"
-"    },\n"
-"    _dispatchEvent(message, detail) {\n"
-"      var t1 = init.G,\n"
-"        \$event = A._asJSObject(new t1.CustomEvent(message, {detail: detail}));\n"
-"      A._asBool(A._asJSObject(t1.document).dispatchEvent(\$event));\n"
-"    },\n"
-"    _handleAuthRequest(\$event) {\n"
-"      var t1,\n"
-"        data = A._asJSObject(\$event).data;\n"
-"      if (!(typeof data === \"string\"))\n"
-"        return;\n"
-"      if (A._asString(data) !== \"dart-auth-request\")\n"
-"        return;\n"
-"      if (A._authUrl() != null) {\n"
-"        t1 = A._authUrl();\n"
-"        t1.toString;\n"
-"        A._authenticateUser(t1).then\$1\$1(new A._handleAuthRequest_closure(), type\$.void);\n"
-"      }\n"
-"    },\n"
-"    _authenticateUser(authUrl) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.bool),\n"
-"        \$async\$returnValue, response, client;\n"
-"      var \$async\$_authenticateUser = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              client = new A.BrowserClient(A._setArrayType([], type\$.JSArray_JSObject));\n"
-"              client.withCredentials = true;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(client._sendUnstreamed\$3(\"GET\", A.Uri_parse(authUrl), null), \$async\$_authenticateUser);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              response = \$async\$result;\n"
-"              \$async\$returnValue = B.JSString_methods.contains\$1(A.encodingForContentTypeHeader(A._contentTypeForHeaders(response.headers)).decode\$1(response.bodyBytes), \"Dart Debug Authentication Success!\");\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_authenticateUser, \$async\$completer);\n"
-"    },\n"
-"    _sendResponse(clientSink, \$constructor, requestId, errorMessage, success, \$T) {\n"
-"      var t1,\n"
-"        response = \$constructor.call\$3(requestId, success, errorMessage);\n"
-"      \$label0\$0: {\n"
-"        if (response instanceof A.HotReloadResponse) {\n"
-"          t1 = A._setArrayType([\"HotReloadResponse\", response.toJson\$0()], type\$.JSArray_Object);\n"
-"          break \$label0\$0;\n"
-"        }\n"
-"        if (response instanceof A.HotRestartResponse) {\n"
-"          t1 = A._setArrayType([\"HotRestartResponse\", response.toJson\$0()], type\$.JSArray_Object);\n"
-"          break \$label0\$0;\n"
-"        }\n"
-"        t1 = A.throwExpression(A.UnsupportedError\$(\"Unknown response type: \" + A.S(response)));\n"
-"      }\n"
-"      A._trySendEvent(clientSink, B.C_JsonCodec.encode\$2\$toEncodable(t1, null), type\$.dynamic);\n"
-"    },\n"
-"    _sendHotReloadResponse(clientSink, requestId, errorMessage, success) {\n"
-"      A._sendResponse(clientSink, new A._sendHotReloadResponse_closure(), requestId, errorMessage, success, type\$.HotReloadResponse);\n"
-"    },\n"
-"    _sendHotRestartResponse(clientSink, requestId, errorMessage, success) {\n"
-"      A._sendResponse(clientSink, new A._sendHotRestartResponse_closure(), requestId, errorMessage, success, type\$.HotRestartResponse);\n"
-"    },\n"
-"    _sendServiceExtensionResponse(clientSink, requestId, errorCode, errorMessage, result, success) {\n"
-"      A._trySendEvent(clientSink, B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"ServiceExtensionResponse\", new A.ServiceExtensionResponse(requestId, success, result, errorCode, errorMessage).toJson\$0()], type\$.JSArray_Object), null), type\$.dynamic);\n"
-"    },\n"
-"    handleWebSocketHotReloadRequest(\$event, manager, clientSink) {\n"
-"      return A.handleWebSocketHotReloadRequest\$body(\$event, manager, clientSink);\n"
-"    },\n"
-"    handleWebSocketHotReloadRequest\$body(\$event, manager, clientSink) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], e, path, exception, requestId, \$async\$exception;\n"
-"      var \$async\$handleWebSocketHotReloadRequest = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              requestId = \$event.id;\n"
-"              \$async\$handler = 3;\n"
-"              path = A._asStringQ(init.G.\$reloadedSourcesPath);\n"
-"              path.toString;\n"
-"              \$async\$goto = 6;\n"
-"              return A._asyncAwait(manager._restarter.hotReloadStart\$1(path), \$async\$handleWebSocketHotReloadRequest);\n"
-"            case 6:\n"
-"              // returning from await.\n"
-"              \$async\$goto = 7;\n"
-"              return A._asyncAwait(manager.hotReloadEnd\$0(), \$async\$handleWebSocketHotReloadRequest);\n"
-"            case 7:\n"
-"              // returning from await.\n"
-"              A._sendHotReloadResponse(clientSink, requestId, null, true);\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // catch\n"
-"              \$async\$handler = 2;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              A._sendHotReloadResponse(clientSink, requestId, J.toString\$0\$(e), false);\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 2:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 5:\n"
-"              // after finally\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$handleWebSocketHotReloadRequest, \$async\$completer);\n"
-"    },\n"
-"    handleWebSocketHotRestartRequest(\$event, manager, clientSink) {\n"
-"      return A.handleWebSocketHotRestartRequest\$body(\$event, manager, clientSink);\n"
-"    },\n"
-"    handleWebSocketHotRestartRequest\$body(\$event, manager, clientSink) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], runId, e, t1, t2, exception, requestId, \$async\$exception;\n"
-"      var \$async\$handleWebSocketHotRestartRequest = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              requestId = \$event.id;\n"
-"              \$async\$handler = 3;\n"
-"              runId = B.C_Uuid.v4\$0();\n"
-"              t1 = init.G;\n"
-"              \$async\$goto = manager._restarter instanceof A.DdcLibraryBundleRestarter ? 6 : 8;\n"
-"              break;\n"
-"            case 6:\n"
-"              // then\n"
-"              t2 = A._asStringQ(t1.\$reloadedSourcesPath);\n"
-"              t2.toString;\n"
-"              \$async\$goto = 9;\n"
-"              return A._asyncAwait(manager.hotRestartBegin\$1(t2), \$async\$handleWebSocketHotRestartRequest);\n"
-"            case 9:\n"
-"              // returning from await.\n"
-"              A._asJSObject(t1.dartDevEmbedder).hotRestartEnd();\n"
-"              // goto join\n"
-"              \$async\$goto = 7;\n"
-"              break;\n"
-"            case 8:\n"
-"              // else\n"
-"              \$async\$goto = 10;\n"
-"              return A._asyncAwait(manager.hotRestart\$2\$reloadedSourcesPath\$runId(A._asStringQ(t1.\$reloadedSourcesPath), runId), \$async\$handleWebSocketHotRestartRequest);\n"
-"            case 10:\n"
-"              // returning from await.\n"
-"            case 7:\n"
-"              // join\n"
-"              A._sendHotRestartResponse(clientSink, requestId, null, true);\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // catch\n"
-"              \$async\$handler = 2;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              A._sendHotRestartResponse(clientSink, requestId, J.toString\$0\$(e), false);\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 2:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 5:\n"
-"              // after finally\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$handleWebSocketHotRestartRequest, \$async\$completer);\n"
-"    },\n"
-"    handleServiceExtensionRequest(request, clientSink, manager) {\n"
-"      return A.handleServiceExtensionRequest\$body(request, clientSink, manager);\n"
-"    },\n"
-"    handleServiceExtensionRequest\$body(request, clientSink, manager) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], result, e, t1, exception, \$async\$exception;\n"
-"      var \$async\$handleServiceExtensionRequest = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$handler = 3;\n"
-"              \$async\$goto = 6;\n"
-"              return A._asyncAwait(manager.handleServiceExtension\$2(request.method, request.args), \$async\$handleServiceExtensionRequest);\n"
-"            case 6:\n"
-"              // returning from await.\n"
-"              result = \$async\$result;\n"
-"              t1 = request.id;\n"
-"              if (result != null)\n"
-"                A._sendServiceExtensionResponse(clientSink, t1, null, null, result, true);\n"
-"              else\n"
-"                A._sendServiceExtensionResponse(clientSink, t1, -32601, \"Service extension not supported\", null, false);\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // catch\n"
-"              \$async\$handler = 2;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              A._sendServiceExtensionResponse(clientSink, request.id, null, J.toString\$0\$(e), null, false);\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 2:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 5:\n"
-"              // after finally\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$handleServiceExtensionRequest, \$async\$completer);\n"
-"    },\n"
-"    _isChromium() {\n"
-"      return B.JSString_methods.contains\$1(A._asString(A._asJSObject(A._asJSObject(init.G.window).navigator).vendor), \"Google\");\n"
-"    },\n"
-"    _isPageReload() {\n"
-"      var entries, entries0, t1, exception;\n"
-"      try {\n"
-"        entries0 = type\$.JSArray_nullable_Object._as(A._asJSObject(A._asJSObject(init.G.window).performance).getEntriesByType(\"navigation\"));\n"
-"        entries = type\$.List_JSObject._is(entries0) ? entries0 : new A.CastList(entries0, A._arrayInstanceType(entries0)._eval\$1(\"CastList<1,JSObject>\"));\n"
-"        if (J.get\$isEmpty\$asx(entries))\n"
-"          return false;\n"
-"        t1 = A._asString(J.get\$first\$ax(entries).type);\n"
-"        return t1 === \"reload\";\n"
-"      } catch (exception) {\n"
-"        return false;\n"
-"      }\n"
-"    },\n"
-"    _authUrl() {\n"
-"      var authUrl,\n"
-"        extensionUrl = A._asStringQ(type\$.JavaScriptObject._as(init.G.window).\$dartExtensionUri);\n"
-"      if (extensionUrl == null)\n"
-"        return null;\n"
-"      authUrl = A.Uri_parse(extensionUrl).replace\$1\$path(\"\$dwdsExtensionAuthentication\");\n"
-"      switch (authUrl.scheme) {\n"
-"        case \"ws\":\n"
-"          return authUrl.replace\$1\$scheme(\"http\").get\$_text();\n"
-"        case \"wss\":\n"
-"          return authUrl.replace\$1\$scheme(\"https\").get\$_text();\n"
-"        default:\n"
-"          return authUrl.get\$_text();\n"
-"      }\n"
-"    },\n"
-"    main_closure: function main_closure() {\n"
-"    },\n"
-"    main__closure: function main__closure(t0) {\n"
-"      this.manager = t0;\n"
-"    },\n"
-"    main__closure0: function main__closure0(t0) {\n"
-"      this.manager = t0;\n"
-"    },\n"
-"    main__closure1: function main__closure1(t0) {\n"
-"      this.manager = t0;\n"
-"    },\n"
-"    main__closure2: function main__closure2(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.manager = t1;\n"
-"    },\n"
-"    main__closure3: function main__closure3(t0) {\n"
-"      this.client = t0;\n"
-"    },\n"
-"    main__closure4: function main__closure4(t0) {\n"
-"      this._box_0 = t0;\n"
-"    },\n"
-"    main__closure5: function main__closure5(t0) {\n"
-"      this.client = t0;\n"
-"    },\n"
-"    main__closure6: function main__closure6(t0) {\n"
-"      this.debugEventController = t0;\n"
-"    },\n"
-"    main__closure7: function main__closure7(t0) {\n"
-"      this.client = t0;\n"
-"    },\n"
-"    main__closure8: function main__closure8(t0) {\n"
-"      this.client = t0;\n"
-"    },\n"
-"    main__closure9: function main__closure9(t0, t1, t2) {\n"
-"      this._box_0 = t0;\n"
-"      this.manager = t1;\n"
-"      this.client = t2;\n"
-"    },\n"
-"    main__closure10: function main__closure10() {\n"
-"    },\n"
-"    main__closure11: function main__closure11() {\n"
-"    },\n"
-"    main_closure0: function main_closure0() {\n"
-"    },\n"
-"    _handleAuthRequest_closure: function _handleAuthRequest_closure() {\n"
-"    },\n"
-"    _sendHotReloadResponse_closure: function _sendHotReloadResponse_closure() {\n"
-"    },\n"
-"    _sendHotRestartResponse_closure: function _sendHotRestartResponse_closure() {\n"
-"    },\n"
-"    _Debugger_maybeInvokeFlutterDisassemble(_this) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        t1;\n"
-"      var \$async\$_Debugger_maybeInvokeFlutterDisassemble = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = type\$.JSArray_nullable_Object._as(_this.extensionNames);\n"
-"              \$async\$goto = J.contains\$1\$asx(type\$.List_String._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval\$1(\"CastList<1,String>\")), \"ext.flutter.disassemble\") ? 2 : 3;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(_this.invokeExtension(\"ext.flutter.disassemble\", \"{}\")), type\$.String), \$async\$_Debugger_maybeInvokeFlutterDisassemble);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"            case 3:\n"
-"              // join\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_Debugger_maybeInvokeFlutterDisassemble, \$async\$completer);\n"
-"    },\n"
-"    _Debugger_maybeInvokeFlutterReassemble(_this) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        t1;\n"
-"      var \$async\$_Debugger_maybeInvokeFlutterReassemble = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = type\$.JSArray_nullable_Object._as(_this.extensionNames);\n"
-"              \$async\$goto = J.contains\$1\$asx(type\$.List_String._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval\$1(\"CastList<1,String>\")), \"ext.flutter.reassemble\") ? 2 : 3;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(_this.invokeExtension(\"ext.flutter.reassemble\", \"{}\")), type\$.String), \$async\$_Debugger_maybeInvokeFlutterReassemble);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"            case 3:\n"
-"              // join\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_Debugger_maybeInvokeFlutterReassemble, \$async\$completer);\n"
-"    },\n"
-"    DdcLibraryBundleRestarter: function DdcLibraryBundleRestarter() {\n"
-"      this._capturedHotReloadEndCallback = null;\n"
-"    },\n"
-"    DdcLibraryBundleRestarter__getSrcModuleLibraries_closure: function DdcLibraryBundleRestarter__getSrcModuleLibraries_closure(t0, t1, t2) {\n"
-"      this.xhr = t0;\n"
-"      this.completer = t1;\n"
-"      this.reloadedSourcesPath = t2;\n"
-"    },\n"
-"    DdcLibraryBundleRestarter_restart_closure: function DdcLibraryBundleRestarter_restart_closure(t0, t1) {\n"
-"      this.\$this = t0;\n"
-"      this.readyToRunMain = t1;\n"
-"    },\n"
-"    DdcLibraryBundleRestarter_hotReloadStart_closure: function DdcLibraryBundleRestarter_hotReloadStart_closure(t0) {\n"
-"      this.\$this = t0;\n"
-"    },\n"
-"    DdcRestarter: function DdcRestarter() {\n"
-"    },\n"
-"    DdcRestarter_restart_closure0: function DdcRestarter_restart_closure0(t0) {\n"
-"      this.reloadCompleter = t0;\n"
-"    },\n"
-"    DdcRestarter_restart_closure: function DdcRestarter_restart_closure(t0) {\n"
-"      this.sub = t0;\n"
-"    },\n"
-"    ReloadingManager: function ReloadingManager(t0, t1) {\n"
-"      this._client = t0;\n"
-"      this._restarter = t1;\n"
-"    },\n"
-"    SdkDeveloperExtension_maybeInvokeFlutterDisassemble(_this) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void);\n"
-"      var \$async\$SdkDeveloperExtension_maybeInvokeFlutterDisassemble = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = A._asBool(type\$.JavaScriptObject._as(_this._extensions).containsKey(\"ext.flutter.disassemble\")) ? 2 : 3;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(_this.invokeExtension(\"ext.flutter.disassemble\", \"{}\")), type\$.String), \$async\$SdkDeveloperExtension_maybeInvokeFlutterDisassemble);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"            case 3:\n"
-"              // join\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$SdkDeveloperExtension_maybeInvokeFlutterDisassemble, \$async\$completer);\n"
-"    },\n"
-"    HotReloadFailedException\$(_s) {\n"
-"      return new A.HotReloadFailedException(_s);\n"
-"    },\n"
-"    RequireRestarter_create() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.RequireRestarter),\n"
-"        \$async\$returnValue, reloader, t1, t2;\n"
-"      var \$async\$RequireRestarter_create = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = A.HashMap_HashMap(null, null, type\$.String, type\$.int);\n"
-"              t2 = new A._AsyncCompleter(new A._Future(\$.Zone__current, type\$._Future_bool), type\$._AsyncCompleter_bool);\n"
-"              t2.complete\$1(true);\n"
-"              reloader = new A.RequireRestarter(t1, t2);\n"
-"              t1 = type\$.SplayTreeSet_String;\n"
-"              reloader.__RequireRestarter__dirtyModules_A = t1._as(new A.SplayTreeSet(reloader.get\$_moduleTopologicalCompare(), t1));\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(reloader._initialize\$0(), \$async\$RequireRestarter_create);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = reloader;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$RequireRestarter_create, \$async\$completer);\n"
-"    },\n"
-"    HotReloadFailedException: function HotReloadFailedException(t0) {\n"
-"      this._s = t0;\n"
-"    },\n"
-"    RequireRestarter: function RequireRestarter(t0, t1) {\n"
-"      this._moduleOrdering = t0;\n"
-"      this.__RequireRestarter__dirtyModules_A = \$;\n"
-"      this._running = t1;\n"
-"    },\n"
-"    RequireRestarter__reload_closure: function RequireRestarter__reload_closure(t0, t1) {\n"
-"      this._box_0 = t0;\n"
-"      this.dart = t1;\n"
-"    },\n"
-"    RequireRestarter__reloadModule_closure: function RequireRestarter__reloadModule_closure(t0) {\n"
-"      this.completer = t0;\n"
-"    },\n"
-"    RequireRestarter__reloadModule_closure0: function RequireRestarter__reloadModule_closure0(t0, t1) {\n"
-"      this.completer = t0;\n"
-"      this.stackTrace = t1;\n"
-"    },\n"
-"    _findNonce() {\n"
-"      var i, element, t1, nonceValue,\n"
-"        elements = A._asJSObject(A._asJSObject(A._asJSObject(init.G.window).document).querySelectorAll(\"script\"));\n"
-"      for (i = 0; i < A._asInt(elements.length); ++i) {\n"
-"        element = A._asJSObjectQ(elements.item(i));\n"
-"        t1 = element == null ? A._asJSObject(element) : element;\n"
-"        nonceValue = A._asString(t1.nonce);\n"
-"        t1 = \$.\$get\$_noncePattern();\n"
-"        if (t1._nativeRegExp.test(nonceValue))\n"
-"          return nonceValue;\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    runMain() {\n"
-"      var t1, t2,\n"
-"        scriptElement = \$.\$get\$_createScript().call\$0();\n"
-"      scriptElement.innerHTML = \"window.\$dartRunMain();\";\n"
-"      t1 = A._asJSObjectQ(A._asJSObject(init.G.document).body);\n"
-"      t1.toString;\n"
-"      t2 = A.jsify(scriptElement);\n"
-"      t2.toString;\n"
-"      t1.append(t2);\n"
-"      A.Future_Future\$microtask(new A.runMain_closure(scriptElement), type\$.void);\n"
-"    },\n"
-"    _createScript_closure: function _createScript_closure() {\n"
-"    },\n"
-"    _createScript__closure: function _createScript__closure() {\n"
-"    },\n"
-"    _createScript__closure0: function _createScript__closure0(t0) {\n"
-"      this.nonce = t0;\n"
-"    },\n"
-"    runMain_closure: function runMain_closure(t0) {\n"
-"      this.scriptElement = t0;\n"
-"    },\n"
-"    JSArrayExtension_toDartIterable(_this, \$T) {\n"
-"      return B.JSArray_methods.map\$1\$1(_this, new A.JSArrayExtension_toDartIterable_closure(\$T), \$T);\n"
-"    },\n"
-"    JSArrayExtension_toDartIterable_closure: function JSArrayExtension_toDartIterable_closure(t0) {\n"
-"      this.T = t0;\n"
-"    },\n"
-"    unmangleGlobalNameIfPreservedAnyways(\$name) {\n"
-"      return init.mangledGlobalNames[\$name];\n"
-"    },\n"
-"    printString(string) {\n"
-"      if (typeof dartPrint == \"function\") {\n"
-"        dartPrint(string);\n"
-"        return;\n"
-"      }\n"
-"      if (typeof console == \"object\" && typeof console.log != \"undefined\") {\n"
-"        console.log(string);\n"
-"        return;\n"
-"      }\n"
-"      if (typeof print == \"function\") {\n"
-"        print(string);\n"
-"        return;\n"
-"      }\n"
-"      throw \"Unable to print message: \" + String(string);\n"
-"    },\n"
-"    groupBy(values, key, \$S, \$T) {\n"
-"      var t1, _i, element, t2, t3,\n"
-"        map = A.LinkedHashMap_LinkedHashMap\$_empty(\$T, \$S._eval\$1(\"List<0>\"));\n"
-"      for (t1 = \$S._eval\$1(\"JSArray<0>\"), _i = 0; _i < 1; ++_i) {\n"
-"        element = values[_i];\n"
-"        t2 = key.call\$1(element);\n"
-"        t3 = map.\$index(0, t2);\n"
-"        if (t3 == null) {\n"
-"          t3 = A._setArrayType([], t1);\n"
-"          map.\$indexSet(0, t2, t3);\n"
-"          t2 = t3;\n"
-"        } else\n"
-"          t2 = t3;\n"
-"        J.add\$1\$ax(t2, element);\n"
-"      }\n"
-"      return map;\n"
-"    },\n"
-"    listToMap(list, type) {\n"
-"      var map, i,\n"
-"        t1 = J.getInterceptor\$asx(list);\n"
-"      if (t1.get\$isEmpty(list) || !J.\$eq\$(t1.get\$first(list), type))\n"
-"        throw A.wrapException(A.FormatException\$('Expected \"' + type + '\" as first element', list, null));\n"
-"      t1 = J.getInterceptor\$asx(list);\n"
-"      if ((t1.get\$length(list) - 1 & 1) === 1)\n"
-"        throw A.wrapException(A.FormatException\$(\"Expected an even number of elements\" + (\" after \" + type), list, null));\n"
-"      map = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"      for (i = 1; i < t1.get\$length(list) - 1;) {\n"
-"        map.\$indexSet(0, A._asString(t1.\$index(list, i)), t1.\$index(list, i + 1));\n"
-"        i += 2;\n"
-"      }\n"
-"      return map;\n"
-"    },\n"
-"    encodingForContentTypeHeader(contentTypeHeader) {\n"
-"      var t1,\n"
-"        charset = contentTypeHeader.parameters._map.\$index(0, \"charset\");\n"
-"      if (contentTypeHeader.type === \"application\" && contentTypeHeader.subtype === \"json\" && charset == null)\n"
-"        return B.C_Utf8Codec;\n"
-"      if (charset != null) {\n"
-"        t1 = A.Encoding_getByName(charset);\n"
-"        if (t1 == null)\n"
-"          t1 = B.C_Latin1Codec;\n"
-"      } else\n"
-"        t1 = B.C_Latin1Codec;\n"
-"      return t1;\n"
-"    },\n"
-"    toUint8List(input) {\n"
-"      return input;\n"
-"    },\n"
-"    toByteStream(stream) {\n"
-"      return new A.ByteStream(stream);\n"
-"    },\n"
-"    wrapFormatException(\$name, value, body, \$T) {\n"
-"      var error, error0, t1, exception;\n"
-"      try {\n"
-"        t1 = body.call\$0();\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        t1 = A.unwrapException(exception);\n"
-"        if (t1 instanceof A.SourceSpanFormatException) {\n"
-"          error = t1;\n"
-"          throw A.wrapException(A.SourceSpanFormatException\$(\"Invalid \" + \$name + \": \" + error._span_exception\$_message, error._span, error.get\$source()));\n"
-"        } else if (type\$.FormatException._is(t1)) {\n"
-"          error0 = t1;\n"
-"          throw A.wrapException(A.FormatException\$(\"Invalid \" + \$name + ' \"' + value + '\": ' + error0.get\$message(), error0.get\$source(), error0.get\$offset()));\n"
-"        } else\n"
-"          throw exception;\n"
-"      }\n"
-"    },\n"
-"    current() {\n"
-"      var exception, t1, path, lastIndex, uri = null;\n"
-"      try {\n"
-"        uri = A.Uri_base();\n"
-"      } catch (exception) {\n"
-"        if (type\$.Exception._is(A.unwrapException(exception))) {\n"
-"          t1 = \$._current;\n"
-"          if (t1 != null)\n"
-"            return t1;\n"
-"          throw exception;\n"
-"        } else\n"
-"          throw exception;\n"
-"      }\n"
-"      if (J.\$eq\$(uri, \$._currentUriBase)) {\n"
-"        t1 = \$._current;\n"
-"        t1.toString;\n"
-"        return t1;\n"
-"      }\n"
-"      \$._currentUriBase = uri;\n"
-"      if (\$.\$get\$Style_platform() === \$.\$get\$Style_url())\n"
-"        t1 = \$._current = uri.resolve\$1(\".\").toString\$0(0);\n"
-"      else {\n"
-"        path = uri.toFilePath\$0();\n"
-"        lastIndex = path.length - 1;\n"
-"        t1 = \$._current = lastIndex === 0 ? path : B.JSString_methods.substring\$2(path, 0, lastIndex);\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    isAlphabetic(char) {\n"
-"      var t1;\n"
-"      if (!(char >= 65 && char <= 90))\n"
-"        t1 = char >= 97 && char <= 122;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    driveLetterEnd(path, index) {\n"
-"      var t2, t3, _null = null,\n"
-"        t1 = path.length,\n"
-"        index0 = index + 2;\n"
-"      if (t1 < index0)\n"
-"        return _null;\n"
-"      if (!(index >= 0 && index < t1))\n"
-"        return A.ioore(path, index);\n"
-"      if (!A.isAlphabetic(path.charCodeAt(index)))\n"
-"        return _null;\n"
-"      t2 = index + 1;\n"
-"      if (!(t2 < t1))\n"
-"        return A.ioore(path, t2);\n"
-"      if (path.charCodeAt(t2) !== 58) {\n"
-"        t3 = index + 4;\n"
-"        if (t1 < t3)\n"
-"          return _null;\n"
-"        if (B.JSString_methods.substring\$2(path, t2, t3).toLowerCase() !== \"%3a\")\n"
-"          return _null;\n"
-"        index = index0;\n"
-"      }\n"
-"      t2 = index + 2;\n"
-"      if (t1 === t2)\n"
-"        return t2;\n"
-"      if (!(t2 >= 0 && t2 < t1))\n"
-"        return A.ioore(path, t2);\n"
-"      if (path.charCodeAt(t2) !== 47)\n"
-"        return _null;\n"
-"      return index + 3;\n"
-"    },\n"
-"    isAllTheSame(iter) {\n"
-"      var firstValue, t1, t2, value;\n"
-"      if (iter.get\$length(0) === 0)\n"
-"        return true;\n"
-"      firstValue = iter.get\$first(0);\n"
-"      for (t1 = A.SubListIterable\$(iter, 1, null, iter.\$ti._eval\$1(\"ListIterable.E\")), t2 = t1.\$ti, t1 = new A.ListIterator(t1, t1.get\$length(0), t2._eval\$1(\"ListIterator<ListIterable.E>\")), t2 = t2._eval\$1(\"ListIterable.E\"); t1.moveNext\$0();) {\n"
-"        value = t1.__internal\$_current;\n"
-"        if (!J.\$eq\$(value == null ? t2._as(value) : value, firstValue))\n"
-"          return false;\n"
-"      }\n"
-"      return true;\n"
-"    },\n"
-"    replaceFirstNull(list, element, \$E) {\n"
-"      var index = B.JSArray_methods.indexOf\$1(list, null);\n"
-"      if (index < 0)\n"
-"        throw A.wrapException(A.ArgumentError\$(A.S(list) + \" contains no null elements.\", null));\n"
-"      B.JSArray_methods.\$indexSet(list, index, element);\n"
-"    },\n"
-"    replaceWithNull(list, element, \$E) {\n"
-"      var index = B.JSArray_methods.indexOf\$1(list, element);\n"
-"      if (index < 0)\n"
-"        throw A.wrapException(A.ArgumentError\$(A.S(list) + \" contains no elements matching \" + element.toString\$0(0) + \".\", null));\n"
-"      B.JSArray_methods.\$indexSet(list, index, null);\n"
-"    },\n"
-"    countCodeUnits(string, codeUnit) {\n"
-"      var t1, t2, count, t3;\n"
-"      for (t1 = new A.CodeUnits(string), t2 = type\$.CodeUnits, t1 = new A.ListIterator(t1, t1.get\$length(0), t2._eval\$1(\"ListIterator<ListBase.E>\")), t2 = t2._eval\$1(\"ListBase.E\"), count = 0; t1.moveNext\$0();) {\n"
-"        t3 = t1.__internal\$_current;\n"
-"        if ((t3 == null ? t2._as(t3) : t3) === codeUnit)\n"
-"          ++count;\n"
-"      }\n"
-"      return count;\n"
-"    },\n"
-"    findLineStart(context, text, column) {\n"
-"      var beginningOfLine, index, lineStart;\n"
-"      if (text.length === 0)\n"
-"        for (beginningOfLine = 0;;) {\n"
-"          index = B.JSString_methods.indexOf\$2(context, \"\\n\", beginningOfLine);\n"
-"          if (index === -1)\n"
-"            return context.length - beginningOfLine >= column ? beginningOfLine : null;\n"
-"          if (index - beginningOfLine >= column)\n"
-"            return beginningOfLine;\n"
-"          beginningOfLine = index + 1;\n"
-"        }\n"
-"      index = B.JSString_methods.indexOf\$1(context, text);\n"
-"      while (index !== -1) {\n"
-"        lineStart = index === 0 ? 0 : B.JSString_methods.lastIndexOf\$2(context, \"\\n\", index - 1) + 1;\n"
-"        if (column === index - lineStart)\n"
-"          return lineStart;\n"
-"        index = B.JSString_methods.indexOf\$2(context, text, index + 1);\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    generateId() {\n"
-"      var i,\n"
-"        chars = A.List_List\$filled(6, 0, false, type\$.int),\n"
-"        bits = B.C__JSRandom.nextInt\$1(4294967296);\n"
-"      for (i = 0; i < 6; ++i) {\n"
-"        B.JSArray_methods.\$indexSet(chars, i, string\$.ABCDEF.charCodeAt(bits & 63));\n"
-"        bits = bits >>> 6;\n"
-"      }\n"
-"      return A.String_String\$fromCharCodes(chars, 0, null);\n"
-"    }\n"
-"  },\n"
-"  B = {};\n"
-"  var holders = [A, J, B];\n"
-"  var \$ = {};\n"
-"  A.JS_CONST.prototype = {};\n"
-"  J.Interceptor.prototype = {\n"
-"    \$eq(receiver, other) {\n"
-"      return receiver === other;\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      return A.Primitives_objectHashCode(receiver);\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return \"Instance of '\" + A.Primitives_objectTypeName(receiver) + \"'\";\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(A._instanceTypeFromConstructor(this));\n"
-"    }\n"
-"  };\n"
-"  J.JSBool.prototype = {\n"
-"    toString\$0(receiver) {\n"
-"      return String(receiver);\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      return receiver ? 519018 : 218159;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.bool);\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isbool: 1\n"
-"  };\n"
-"  J.JSNull.prototype = {\n"
-"    \$eq(receiver, other) {\n"
-"      return null == other;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return \"null\";\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      return 0;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.Null);\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isNull: 1\n"
-"  };\n"
-"  J.JavaScriptObject.prototype = {\$isJSObject: 1};\n"
-"  J.LegacyJavaScriptObject.prototype = {\n"
-"    get\$hashCode(receiver) {\n"
-"      return 0;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_JSObject_ttY;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return String(receiver);\n"
-"    }\n"
-"  };\n"
-"  J.PlainJavaScriptObject.prototype = {};\n"
-"  J.UnknownJavaScriptObject.prototype = {};\n"
-"  J.JavaScriptFunction.prototype = {\n"
-"    toString\$0(receiver) {\n"
-"      var dartClosure = receiver[\$.\$get\$DART_CLOSURE_PROPERTY_NAME()];\n"
-"      if (dartClosure == null)\n"
-"        dartClosure = receiver[\$.\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME()];\n"
-"      if (dartClosure == null)\n"
-"        return this.super\$LegacyJavaScriptObject\$toString(receiver);\n"
-"      return \"JavaScript function for \" + J.toString\$0\$(dartClosure);\n"
-"    },\n"
-"    \$isFunction: 1\n"
-"  };\n"
-"  J.JavaScriptBigInt.prototype = {\n"
-"    get\$hashCode(receiver) {\n"
-"      return 0;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return String(receiver);\n"
-"    }\n"
-"  };\n"
-"  J.JavaScriptSymbol.prototype = {\n"
-"    get\$hashCode(receiver) {\n"
-"      return 0;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return String(receiver);\n"
-"    }\n"
-"  };\n"
-"  J.JSArray.prototype = {\n"
-"    cast\$1\$0(receiver, \$R) {\n"
-"      return new A.CastList(receiver, A._arrayInstanceType(receiver)._eval\$1(\"@<1>\")._bind\$1(\$R)._eval\$1(\"CastList<1,2>\"));\n"
-"    },\n"
-"    add\$1(receiver, value) {\n"
-"      A._arrayInstanceType(receiver)._precomputed1._as(value);\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, 29);\n"
-"      receiver.push(value);\n"
-"    },\n"
-"    removeAt\$1(receiver, index) {\n"
-"      var t1;\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"removeAt\", 1);\n"
-"      t1 = receiver.length;\n"
-"      if (index >= t1)\n"
-"        throw A.wrapException(A.RangeError\$value(index, null));\n"
-"      return receiver.splice(index, 1)[0];\n"
-"    },\n"
-"    insert\$2(receiver, index, value) {\n"
-"      var t1;\n"
-"      A._arrayInstanceType(receiver)._precomputed1._as(value);\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"insert\", 2);\n"
-"      t1 = receiver.length;\n"
-"      if (index > t1)\n"
-"        throw A.wrapException(A.RangeError\$value(index, null));\n"
-"      receiver.splice(index, 0, value);\n"
-"    },\n"
-"    insertAll\$2(receiver, index, iterable) {\n"
-"      var insertionLength, end;\n"
-"      A._arrayInstanceType(receiver)._eval\$1(\"Iterable<1>\")._as(iterable);\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"insertAll\", 2);\n"
-"      A.RangeError_checkValueInInterval(index, 0, receiver.length, \"index\");\n"
-"      if (!type\$.EfficientLengthIterable_dynamic._is(iterable))\n"
-"        iterable = J.toList\$0\$ax(iterable);\n"
-"      insertionLength = J.get\$length\$asx(iterable);\n"
-"      receiver.length = receiver.length + insertionLength;\n"
-"      end = index + insertionLength;\n"
-"      this.setRange\$4(receiver, end, receiver.length, receiver, index);\n"
-"      this.setRange\$3(receiver, index, end, iterable);\n"
-"    },\n"
-"    removeLast\$0(receiver) {\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"removeLast\", 1);\n"
-"      if (receiver.length === 0)\n"
-"        throw A.wrapException(A.diagnoseIndexError(receiver, -1));\n"
-"      return receiver.pop();\n"
-"    },\n"
-"    remove\$1(receiver, element) {\n"
-"      var i;\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"remove\", 1);\n"
-"      for (i = 0; i < receiver.length; ++i)\n"
-"        if (J.\$eq\$(receiver[i], element)) {\n"
-"          receiver.splice(i, 1);\n"
-"          return true;\n"
-"        }\n"
-"      return false;\n"
-"    },\n"
-"    _removeWhere\$2(receiver, test, removeMatching) {\n"
-"      var retained, end, i, element, t1;\n"
-"      A._arrayInstanceType(receiver)._eval\$1(\"bool(1)\")._as(test);\n"
-"      retained = [];\n"
-"      end = receiver.length;\n"
-"      for (i = 0; i < end; ++i) {\n"
-"        element = receiver[i];\n"
-"        if (!test.call\$1(element))\n"
-"          retained.push(element);\n"
-"        if (receiver.length !== end)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(receiver));\n"
-"      }\n"
-"      t1 = retained.length;\n"
-"      if (t1 === end)\n"
-"        return;\n"
-"      this.set\$length(receiver, t1);\n"
-"      for (i = 0; i < retained.length; ++i)\n"
-"        receiver[i] = retained[i];\n"
-"    },\n"
-"    addAll\$1(receiver, collection) {\n"
-"      var t1;\n"
-"      A._arrayInstanceType(receiver)._eval\$1(\"Iterable<1>\")._as(collection);\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"addAll\", 2);\n"
-"      if (Array.isArray(collection)) {\n"
-"        this._addAllFromArray\$1(receiver, collection);\n"
-"        return;\n"
-"      }\n"
-"      for (t1 = J.get\$iterator\$ax(collection); t1.moveNext\$0();)\n"
-"        receiver.push(t1.get\$current());\n"
-"    },\n"
-"    _addAllFromArray\$1(receiver, array) {\n"
-"      var len, i;\n"
-"      type\$.JSArray_dynamic._as(array);\n"
-"      len = array.length;\n"
-"      if (len === 0)\n"
-"        return;\n"
-"      if (receiver === array)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(receiver));\n"
-"      for (i = 0; i < len; ++i)\n"
-"        receiver.push(array[i]);\n"
-"    },\n"
-"    clear\$0(receiver) {\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"clear\", \"clear\");\n"
-"      receiver.length = 0;\n"
-"    },\n"
-"    map\$1\$1(receiver, f, \$T) {\n"
-"      var t1 = A._arrayInstanceType(receiver);\n"
-"      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>\"));\n"
-"    },\n"
-"    join\$1(receiver, separator) {\n"
-"      var i,\n"
-"        list = A.List_List\$filled(receiver.length, \"\", false, type\$.String);\n"
-"      for (i = 0; i < receiver.length; ++i)\n"
-"        this.\$indexSet(list, i, A.S(receiver[i]));\n"
-"      return list.join(separator);\n"
-"    },\n"
-"    take\$1(receiver, n) {\n"
-"      return A.SubListIterable\$(receiver, 0, A.checkNotNullable(n, \"count\", type\$.int), A._arrayInstanceType(receiver)._precomputed1);\n"
-"    },\n"
-"    skip\$1(receiver, n) {\n"
-"      return A.SubListIterable\$(receiver, n, null, A._arrayInstanceType(receiver)._precomputed1);\n"
-"    },\n"
-"    firstWhere\$2\$orElse(receiver, test, orElse) {\n"
-"      var end, i, element,\n"
-"        t1 = A._arrayInstanceType(receiver);\n"
-"      t1._eval\$1(\"bool(1)\")._as(test);\n"
-"      t1._eval\$1(\"1()?\")._as(orElse);\n"
-"      end = receiver.length;\n"
-"      for (i = 0; i < end; ++i) {\n"
-"        element = receiver[i];\n"
-"        if (test.call\$1(element))\n"
-"          return element;\n"
-"        if (receiver.length !== end)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(receiver));\n"
-"      }\n"
-"      if (orElse != null)\n"
-"        return orElse.call\$0();\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    },\n"
-"    elementAt\$1(receiver, index) {\n"
-"      if (!(index >= 0 && index < receiver.length))\n"
-"        return A.ioore(receiver, index);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    get\$first(receiver) {\n"
-"      if (receiver.length > 0)\n"
-"        return receiver[0];\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    },\n"
-"    get\$last(receiver) {\n"
-"      var t1 = receiver.length;\n"
-"      if (t1 > 0)\n"
-"        return receiver[t1 - 1];\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    },\n"
-"    setRange\$4(receiver, start, end, iterable, skipCount) {\n"
-"      var \$length, otherList, otherStart, t1, i;\n"
-"      A._arrayInstanceType(receiver)._eval\$1(\"Iterable<1>\")._as(iterable);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver, 5);\n"
-"      A.RangeError_checkValidRange(start, end, receiver.length);\n"
-"      \$length = end - start;\n"
-"      if (\$length === 0)\n"
-"        return;\n"
-"      A.RangeError_checkNotNegative(skipCount, \"skipCount\");\n"
-"      if (type\$.List_dynamic._is(iterable)) {\n"
-"        otherList = iterable;\n"
-"        otherStart = skipCount;\n"
-"      } else {\n"
-"        otherList = J.skip\$1\$ax(iterable, skipCount).toList\$1\$growable(0, false);\n"
-"        otherStart = 0;\n"
-"      }\n"
-"      t1 = J.getInterceptor\$asx(otherList);\n"
-"      if (otherStart + \$length > t1.get\$length(otherList))\n"
-"        throw A.wrapException(A.IterableElementError_tooFew());\n"
-"      if (otherStart < start)\n"
-"        for (i = \$length - 1; i >= 0; --i)\n"
-"          receiver[start + i] = t1.\$index(otherList, otherStart + i);\n"
-"      else\n"
-"        for (i = 0; i < \$length; ++i)\n"
-"          receiver[start + i] = t1.\$index(otherList, otherStart + i);\n"
-"    },\n"
-"    setRange\$3(receiver, start, end, iterable) {\n"
-"      return this.setRange\$4(receiver, start, end, iterable, 0);\n"
-"    },\n"
-"    fillRange\$3(receiver, start, end, fillValue) {\n"
-"      var i;\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver, \"fillRange\");\n"
-"      A.RangeError_checkValidRange(start, end, receiver.length);\n"
-"      A._arrayInstanceType(receiver)._precomputed1._as(fillValue);\n"
-"      for (i = start; i < end; ++i)\n"
-"        receiver[i] = fillValue;\n"
-"    },\n"
-"    sort\$1(receiver, compare) {\n"
-"      var len, a, b, undefineds, i,\n"
-"        t1 = A._arrayInstanceType(receiver);\n"
-"      t1._eval\$1(\"int(1,1)?\")._as(compare);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver, \"sort\");\n"
-"      len = receiver.length;\n"
-"      if (len < 2)\n"
-"        return;\n"
-"      if (compare == null)\n"
-"        compare = J._interceptors_JSArray__compareAny\$closure();\n"
-"      if (len === 2) {\n"
-"        a = receiver[0];\n"
-"        b = receiver[1];\n"
-"        t1 = compare.call\$2(a, b);\n"
-"        if (typeof t1 !== \"number\")\n"
-"          return t1.\$gt();\n"
-"        if (t1 > 0) {\n"
-"          receiver[0] = b;\n"
-"          receiver[1] = a;\n"
-"        }\n"
-"        return;\n"
-"      }\n"
-"      undefineds = 0;\n"
-"      if (t1._precomputed1._is(null))\n"
-"        for (i = 0; i < receiver.length; ++i)\n"
-"          if (receiver[i] === void 0) {\n"
-"            receiver[i] = null;\n"
-"            ++undefineds;\n"
-"          }\n"
-"      receiver.sort(A.convertDartClosureToJS(compare, 2));\n"
-"      if (undefineds > 0)\n"
-"        this._replaceSomeNullsWithUndefined\$1(receiver, undefineds);\n"
-"    },\n"
-"    _replaceSomeNullsWithUndefined\$1(receiver, count) {\n"
-"      var i0,\n"
-"        i = receiver.length;\n"
-"      for (; i0 = i - 1, i > 0; i = i0)\n"
-"        if (receiver[i0] === null) {\n"
-"          receiver[i0] = void 0;\n"
-"          --count;\n"
-"          if (count === 0)\n"
-"            break;\n"
-"        }\n"
-"    },\n"
-"    indexOf\$1(receiver, element) {\n"
-"      var i,\n"
-"        \$length = receiver.length;\n"
-"      if (0 >= \$length)\n"
-"        return -1;\n"
-"      for (i = 0; i < \$length; ++i) {\n"
-"        if (!(i < receiver.length))\n"
-"          return A.ioore(receiver, i);\n"
-"        if (J.\$eq\$(receiver[i], element))\n"
-"          return i;\n"
-"      }\n"
-"      return -1;\n"
-"    },\n"
-"    contains\$1(receiver, other) {\n"
-"      var i;\n"
-"      for (i = 0; i < receiver.length; ++i)\n"
-"        if (J.\$eq\$(receiver[i], other))\n"
-"          return true;\n"
-"      return false;\n"
-"    },\n"
-"    get\$isEmpty(receiver) {\n"
-"      return receiver.length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(receiver) {\n"
-"      return receiver.length !== 0;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return A.Iterable_iterableToFullString(receiver, \"[\", \"]\");\n"
-"    },\n"
-"    toList\$1\$growable(receiver, growable) {\n"
-"      var t1 = A._setArrayType(receiver.slice(0), A._arrayInstanceType(receiver));\n"
-"      return t1;\n"
-"    },\n"
-"    toList\$0(receiver) {\n"
-"      return this.toList\$1\$growable(receiver, true);\n"
-"    },\n"
-"    get\$iterator(receiver) {\n"
-"      return new J.ArrayIterator(receiver, receiver.length, A._arrayInstanceType(receiver)._eval\$1(\"ArrayIterator<1>\"));\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      return A.Primitives_objectHashCode(receiver);\n"
-"    },\n"
-"    get\$length(receiver) {\n"
-"      return receiver.length;\n"
-"    },\n"
-"    set\$length(receiver, newLength) {\n"
-"      receiver.\$flags & 1 && A.throwUnsupportedOperation(receiver, \"set length\", \"change the length of\");\n"
-"      if (newLength < 0)\n"
-"        throw A.wrapException(A.RangeError\$range(newLength, 0, null, \"newLength\", null));\n"
-"      if (newLength > receiver.length)\n"
-"        A._arrayInstanceType(receiver)._precomputed1._as(null);\n"
-"      receiver.length = newLength;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      if (!(index >= 0 && index < receiver.length))\n"
-"        throw A.wrapException(A.diagnoseIndexError(receiver, index));\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$indexSet(receiver, index, value) {\n"
-"      A._arrayInstanceType(receiver)._precomputed1._as(value);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver);\n"
-"      if (!(index >= 0 && index < receiver.length))\n"
-"        throw A.wrapException(A.diagnoseIndexError(receiver, index));\n"
-"      receiver[index] = value;\n"
-"    },\n"
-"    indexWhere\$1(receiver, test) {\n"
-"      var i;\n"
-"      A._arrayInstanceType(receiver)._eval\$1(\"bool(1)\")._as(test);\n"
-"      if (0 >= receiver.length)\n"
-"        return -1;\n"
-"      for (i = 0; i < receiver.length; ++i)\n"
-"        if (test.call\$1(receiver[i]))\n"
-"          return i;\n"
-"      return -1;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(A._arrayInstanceType(receiver));\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isIterable: 1,\n"
-"    \$isList: 1\n"
-"  };\n"
-"  J.JSArraySafeToStringHook.prototype = {\n"
-"    tryFormat\$1(array) {\n"
-"      var flags, info, base;\n"
-"      if (!Array.isArray(array))\n"
-"        return null;\n"
-"      flags = array.\$flags | 0;\n"
-"      if ((flags & 4) !== 0)\n"
-"        info = \"const, \";\n"
-"      else if ((flags & 2) !== 0)\n"
-"        info = \"unmodifiable, \";\n"
-"      else\n"
-"        info = (flags & 1) !== 0 ? \"fixed, \" : \"\";\n"
-"      base = \"Instance of '\" + A.Primitives_objectTypeName(array) + \"'\";\n"
-"      if (info === \"\")\n"
-"        return base;\n"
-"      return base + \" (\" + info + \"length: \" + array.length + \")\";\n"
-"    }\n"
-"  };\n"
-"  J.JSUnmodifiableArray.prototype = {};\n"
-"  J.ArrayIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this._current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this._iterable,\n"
-"        \$length = t1.length;\n"
-"      if (_this._length !== \$length) {\n"
-"        t1 = A.throwConcurrentModificationError(t1);\n"
-"        throw A.wrapException(t1);\n"
-"      }\n"
-"      t2 = _this._index;\n"
-"      if (t2 >= \$length) {\n"
-"        _this._current = null;\n"
-"        return false;\n"
-"      }\n"
-"      _this._current = t1[t2];\n"
-"      _this._index = t2 + 1;\n"
-"      return true;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  J.JSNumber.prototype = {\n"
-"    compareTo\$1(receiver, b) {\n"
-"      var bIsNegative;\n"
-"      A._asNum(b);\n"
-"      if (receiver < b)\n"
-"        return -1;\n"
-"      else if (receiver > b)\n"
-"        return 1;\n"
-"      else if (receiver === b) {\n"
-"        if (receiver === 0) {\n"
-"          bIsNegative = this.get\$isNegative(b);\n"
-"          if (this.get\$isNegative(receiver) === bIsNegative)\n"
-"            return 0;\n"
-"          if (this.get\$isNegative(receiver))\n"
-"            return -1;\n"
-"          return 1;\n"
-"        }\n"
-"        return 0;\n"
-"      } else if (isNaN(receiver)) {\n"
-"        if (isNaN(b))\n"
-"          return 0;\n"
-"        return 1;\n"
-"      } else\n"
-"        return -1;\n"
-"    },\n"
-"    get\$isNegative(receiver) {\n"
-"      return receiver === 0 ? 1 / receiver < 0 : receiver < 0;\n"
-"    },\n"
-"    toRadixString\$1(receiver, radix) {\n"
-"      var result, t1, t2, match, exponent;\n"
-"      if (radix < 2 || radix > 36)\n"
-"        throw A.wrapException(A.RangeError\$range(radix, 2, 36, \"radix\", null));\n"
-"      result = receiver.toString(radix);\n"
-"      t1 = result.length;\n"
-"      t2 = t1 - 1;\n"
-"      if (!(t2 >= 0))\n"
-"        return A.ioore(result, t2);\n"
-"      if (result.charCodeAt(t2) !== 41)\n"
-"        return result;\n"
-"      match = /^([\\da-z]+)(?:\\.([\\da-z]+))?\\(e\\+(\\d+)\\)\$/.exec(result);\n"
-"      if (match == null)\n"
-"        A.throwExpression(A.UnsupportedError\$(\"Unexpected toString result: \" + result));\n"
-"      t1 = match.length;\n"
-"      if (1 >= t1)\n"
-"        return A.ioore(match, 1);\n"
-"      result = match[1];\n"
-"      if (3 >= t1)\n"
-"        return A.ioore(match, 3);\n"
-"      exponent = +match[3];\n"
-"      t1 = match[2];\n"
-"      if (t1 != null) {\n"
-"        result += t1;\n"
-"        exponent -= t1.length;\n"
-"      }\n"
-"      return result + B.JSString_methods.\$mul(\"0\", exponent);\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      if (receiver === 0 && 1 / receiver < 0)\n"
-"        return \"-0.0\";\n"
-"      else\n"
-"        return \"\" + receiver;\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      var absolute, floorLog2, factor, scaled,\n"
-"        intValue = receiver | 0;\n"
-"      if (receiver === intValue)\n"
-"        return intValue & 536870911;\n"
-"      absolute = Math.abs(receiver);\n"
-"      floorLog2 = Math.log(absolute) / 0.6931471805599453 | 0;\n"
-"      factor = Math.pow(2, floorLog2);\n"
-"      scaled = absolute < 1 ? absolute / factor : factor / absolute;\n"
-"      return ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259 & 536870911;\n"
-"    },\n"
-"    \$add(receiver, other) {\n"
-"      return receiver + other;\n"
-"    },\n"
-"    \$mod(receiver, other) {\n"
-"      var result = receiver % other;\n"
-"      if (result === 0)\n"
-"        return 0;\n"
-"      if (result > 0)\n"
-"        return result;\n"
-"      return result + other;\n"
-"    },\n"
-"    _tdivFast\$1(receiver, other) {\n"
-"      return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow\$1(receiver, other);\n"
-"    },\n"
-"    _tdivSlow\$1(receiver, other) {\n"
-"      var quotient = receiver / other;\n"
-"      if (quotient >= -2147483648 && quotient <= 2147483647)\n"
-"        return quotient | 0;\n"
-"      if (quotient > 0) {\n"
-"        if (quotient !== 1 / 0)\n"
-"          return Math.floor(quotient);\n"
-"      } else if (quotient > -1 / 0)\n"
-"        return Math.ceil(quotient);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Result of truncating division is \" + A.S(quotient) + \": \" + A.S(receiver) + \" ~/ \" + other));\n"
-"    },\n"
-"    _shlPositive\$1(receiver, other) {\n"
-"      return other > 31 ? 0 : receiver << other >>> 0;\n"
-"    },\n"
-"    _shrOtherPositive\$1(receiver, other) {\n"
-"      var t1;\n"
-"      if (receiver > 0)\n"
-"        t1 = this._shrBothPositive\$1(receiver, other);\n"
-"      else {\n"
-"        t1 = other > 31 ? 31 : other;\n"
-"        t1 = receiver >> t1 >>> 0;\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    _shrReceiverPositive\$1(receiver, other) {\n"
-"      if (0 > other)\n"
-"        throw A.wrapException(A.argumentErrorValue(other));\n"
-"      return this._shrBothPositive\$1(receiver, other);\n"
-"    },\n"
-"    _shrBothPositive\$1(receiver, other) {\n"
-"      return other > 31 ? 0 : receiver >>> other;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.num);\n"
-"    },\n"
-"    \$isComparable: 1,\n"
-"    \$isdouble: 1,\n"
-"    \$isnum: 1\n"
-"  };\n"
-"  J.JSInt.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.int);\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isint: 1\n"
-"  };\n"
-"  J.JSNumNotInt.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.double);\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1\n"
-"  };\n"
-"  J.JSString.prototype = {\n"
-"    allMatches\$2(receiver, string, start) {\n"
-"      var t1 = string.length;\n"
-"      if (start > t1)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, t1, null, null));\n"
-"      return new A._StringAllMatchesIterable(string, receiver, start);\n"
-"    },\n"
-"    allMatches\$1(receiver, string) {\n"
-"      return this.allMatches\$2(receiver, string, 0);\n"
-"    },\n"
-"    matchAsPrefix\$2(receiver, string, start) {\n"
-"      var t1, t2, i, t3, _null = null;\n"
-"      if (start < 0 || start > string.length)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, string.length, _null, _null));\n"
-"      t1 = receiver.length;\n"
-"      t2 = string.length;\n"
-"      if (start + t1 > t2)\n"
-"        return _null;\n"
-"      for (i = 0; i < t1; ++i) {\n"
-"        t3 = start + i;\n"
-"        if (!(t3 >= 0 && t3 < t2))\n"
-"          return A.ioore(string, t3);\n"
-"        if (string.charCodeAt(t3) !== receiver.charCodeAt(i))\n"
-"          return _null;\n"
-"      }\n"
-"      return new A.StringMatch(start, receiver);\n"
-"    },\n"
-"    endsWith\$1(receiver, other) {\n"
-"      var otherLength = other.length,\n"
-"        t1 = receiver.length;\n"
-"      if (otherLength > t1)\n"
-"        return false;\n"
-"      return other === this.substring\$1(receiver, t1 - otherLength);\n"
-"    },\n"
-"    replaceFirst\$2(receiver, from, to) {\n"
-"      A.RangeError_checkValueInInterval(0, 0, receiver.length, \"startIndex\");\n"
-"      return A.stringReplaceFirstUnchecked(receiver, from, to, 0);\n"
-"    },\n"
-"    replaceRange\$3(receiver, start, end, replacement) {\n"
-"      var e = A.RangeError_checkValidRange(start, end, receiver.length);\n"
-"      return A.stringReplaceRangeUnchecked(receiver, start, e, replacement);\n"
-"    },\n"
-"    startsWith\$2(receiver, pattern, index) {\n"
-"      var endIndex;\n"
-"      if (index < 0 || index > receiver.length)\n"
-"        throw A.wrapException(A.RangeError\$range(index, 0, receiver.length, null, null));\n"
-"      if (typeof pattern == \"string\") {\n"
-"        endIndex = index + pattern.length;\n"
-"        if (endIndex > receiver.length)\n"
-"          return false;\n"
-"        return pattern === receiver.substring(index, endIndex);\n"
-"      }\n"
-"      return J.matchAsPrefix\$2\$s(pattern, receiver, index) != null;\n"
-"    },\n"
-"    startsWith\$1(receiver, pattern) {\n"
-"      return this.startsWith\$2(receiver, pattern, 0);\n"
-"    },\n"
-"    substring\$2(receiver, start, end) {\n"
-"      return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length));\n"
-"    },\n"
-"    substring\$1(receiver, start) {\n"
-"      return this.substring\$2(receiver, start, null);\n"
-"    },\n"
-"    \$mul(receiver, times) {\n"
-"      var s, result;\n"
-"      if (0 >= times)\n"
-"        return \"\";\n"
-"      if (times === 1 || receiver.length === 0)\n"
-"        return receiver;\n"
-"      if (times !== times >>> 0)\n"
-"        throw A.wrapException(B.C_OutOfMemoryError);\n"
-"      for (s = receiver, result = \"\";;) {\n"
-"        if ((times & 1) === 1)\n"
-"          result = s + result;\n"
-"        times = times >>> 1;\n"
-"        if (times === 0)\n"
-"          break;\n"
-"        s += s;\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    padLeft\$2(receiver, width, padding) {\n"
-"      var delta = width - receiver.length;\n"
-"      if (delta <= 0)\n"
-"        return receiver;\n"
-"      return this.\$mul(padding, delta) + receiver;\n"
-"    },\n"
-"    padRight\$1(receiver, width) {\n"
-"      var delta = width - receiver.length;\n"
-"      if (delta <= 0)\n"
-"        return receiver;\n"
-"      return receiver + this.\$mul(\" \", delta);\n"
-"    },\n"
-"    indexOf\$2(receiver, pattern, start) {\n"
-"      var t1;\n"
-"      if (start < 0 || start > receiver.length)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, receiver.length, null, null));\n"
-"      t1 = receiver.indexOf(pattern, start);\n"
-"      return t1;\n"
-"    },\n"
-"    indexOf\$1(receiver, pattern) {\n"
-"      return this.indexOf\$2(receiver, pattern, 0);\n"
-"    },\n"
-"    lastIndexOf\$2(receiver, pattern, start) {\n"
-"      var t1, t2;\n"
-"      if (start == null)\n"
-"        start = receiver.length;\n"
-"      else if (start < 0 || start > receiver.length)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, receiver.length, null, null));\n"
-"      t1 = pattern.length;\n"
-"      t2 = receiver.length;\n"
-"      if (start + t1 > t2)\n"
-"        start = t2 - t1;\n"
-"      return receiver.lastIndexOf(pattern, start);\n"
-"    },\n"
-"    lastIndexOf\$1(receiver, pattern) {\n"
-"      return this.lastIndexOf\$2(receiver, pattern, null);\n"
-"    },\n"
-"    contains\$1(receiver, other) {\n"
-"      return A.stringContainsUnchecked(receiver, other, 0);\n"
-"    },\n"
-"    compareTo\$1(receiver, other) {\n"
-"      var t1;\n"
-"      A._asString(other);\n"
-"      if (receiver === other)\n"
-"        t1 = 0;\n"
-"      else\n"
-"        t1 = receiver < other ? -1 : 1;\n"
-"      return t1;\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return receiver;\n"
-"    },\n"
-"    get\$hashCode(receiver) {\n"
-"      var t1, hash, i;\n"
-"      for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {\n"
-"        hash = hash + receiver.charCodeAt(i) & 536870911;\n"
-"        hash = hash + ((hash & 524287) << 10) & 536870911;\n"
-"        hash ^= hash >> 6;\n"
-"      }\n"
-"      hash = hash + ((hash & 67108863) << 3) & 536870911;\n"
-"      hash ^= hash >> 11;\n"
-"      return hash + ((hash & 16383) << 15) & 536870911;\n"
-"    },\n"
-"    get\$runtimeType(receiver) {\n"
-"      return A.createRuntimeType(type\$.String);\n"
-"    },\n"
-"    get\$length(receiver) {\n"
-"      return receiver.length;\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isComparable: 1,\n"
-"    \$isPattern: 1,\n"
-"    \$isString: 1\n"
-"  };\n"
-"  A.CastStream.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var t2,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(2)?\")._as(onData);\n"
-"      t2 = this.__internal\$_source.listen\$3\$cancelOnError\$onDone(null, cancelOnError, type\$.nullable_void_Function._as(onDone));\n"
-"      t1 = new A.CastStreamSubscription(t2, \$.Zone__current, t1._eval\$1(\"CastStreamSubscription<1,2>\"));\n"
-"      t2.onData\$1(t1.get\$__internal\$_onData());\n"
-"      t1.onData\$1(onData);\n"
-"      t1.onError\$1(onError);\n"
-"      return t1;\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A.CastStreamSubscription.prototype = {\n"
-"    cancel\$0() {\n"
-"      return this.__internal\$_source.cancel\$0();\n"
-"    },\n"
-"    onData\$1(handleData) {\n"
-"      var t2,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(2)?\")._as(handleData);\n"
-"      if (handleData == null)\n"
-"        t1 = null;\n"
-"      else {\n"
-"        t2 = this.__internal\$_zone;\n"
-"        t1 = t1._rest[1];\n"
-"        t1 = t2._registerUnaryCallbackZoned\$2\$2(t2, type\$.\$env_1_1_dynamic._bind\$1(t1)._eval\$1(\"1(2)\")._as(handleData), type\$.dynamic, t1);\n"
-"      }\n"
-"      this.__internal\$_handleData = t1;\n"
-"    },\n"
-"    onError\$1(handleError) {\n"
-"      var t1, _this = this;\n"
-"      _this.__internal\$_source.onError\$1(handleError);\n"
-"      if (handleError == null)\n"
-"        _this.__internal\$_handleError = null;\n"
-"      else if (type\$.void_Function_Object_StackTrace._is(handleError)) {\n"
-"        t1 = _this.__internal\$_zone;\n"
-"        _this.__internal\$_handleError = t1._registerBinaryCallbackZoned\$3\$2(t1, type\$.dynamic_Function_Object_StackTrace._as(handleError), type\$.dynamic, type\$.Object, type\$.StackTrace);\n"
-"      } else if (type\$.void_Function_Object._is(handleError)) {\n"
-"        t1 = _this.__internal\$_zone;\n"
-"        _this.__internal\$_handleError = t1._registerUnaryCallbackZoned\$2\$2(t1, type\$.dynamic_Function_Object._as(handleError), type\$.dynamic, type\$.Object);\n"
-"      } else\n"
-"        throw A.wrapException(A.ArgumentError\$(string\$.handle, null));\n"
-"    },\n"
-"    __internal\$_onData\$1(data) {\n"
-"      var targetData, error, stack, handleError, t2, exception, _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._precomputed1._as(data);\n"
-"      t2 = _this.__internal\$_handleData;\n"
-"      if (t2 == null)\n"
-"        return;\n"
-"      targetData = null;\n"
-"      try {\n"
-"        targetData = t1._rest[1]._as(data);\n"
-"      } catch (exception) {\n"
-"        error = A.unwrapException(exception);\n"
-"        stack = A.getTraceFromException(exception);\n"
-"        handleError = _this.__internal\$_handleError;\n"
-"        if (handleError == null) {\n"
-"          t1 = _this.__internal\$_zone;\n"
-"          t1._handleUncaughtErrorZoned\$3(t1, A._asObject(error), type\$.StackTrace._as(stack));\n"
-"        } else {\n"
-"          t1 = type\$.Object;\n"
-"          t2 = _this.__internal\$_zone;\n"
-"          if (type\$.void_Function_Object_StackTrace._is(handleError))\n"
-"            t2.runBinaryGuarded\$2\$3(handleError, error, stack, t1, type\$.StackTrace);\n"
-"          else\n"
-"            t2.runUnaryGuarded\$1\$2(type\$.void_Function_Object._as(handleError), error, t1);\n"
-"        }\n"
-"        return;\n"
-"      }\n"
-"      _this.__internal\$_zone.runUnaryGuarded\$1\$2(t2, targetData, t1._rest[1]);\n"
-"    },\n"
-"    pause\$1(resumeSignal) {\n"
-"      this.__internal\$_source.pause\$1(resumeSignal);\n"
-"    },\n"
-"    pause\$0() {\n"
-"      return this.pause\$1(null);\n"
-"    },\n"
-"    resume\$0() {\n"
-"      this.__internal\$_source.resume\$0();\n"
-"    },\n"
-"    \$isStreamSubscription: 1\n"
-"  };\n"
-"  A._CastIterableBase.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.CastIterator(J.get\$iterator\$ax(this.get\$__internal\$_source()), A._instanceType(this)._eval\$1(\"CastIterator<1,2>\"));\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return J.get\$length\$asx(this.get\$__internal\$_source());\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return J.get\$isEmpty\$asx(this.get\$__internal\$_source());\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return J.get\$isNotEmpty\$asx(this.get\$__internal\$_source());\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      return A.CastIterable_CastIterable(J.skip\$1\$ax(this.get\$__internal\$_source(), count), t1._precomputed1, t1._rest[1]);\n"
-"    },\n"
-"    take\$1(_, count) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      return A.CastIterable_CastIterable(J.take\$1\$ax(this.get\$__internal\$_source(), count), t1._precomputed1, t1._rest[1]);\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      return A._instanceType(this)._rest[1]._as(J.elementAt\$1\$ax(this.get\$__internal\$_source(), index));\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      return A._instanceType(this)._rest[1]._as(J.get\$first\$ax(this.get\$__internal\$_source()));\n"
-"    },\n"
-"    contains\$1(_, other) {\n"
-"      return J.contains\$1\$asx(this.get\$__internal\$_source(), other);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return J.toString\$0\$(this.get\$__internal\$_source());\n"
-"    }\n"
-"  };\n"
-"  A.CastIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      return this.__internal\$_source.moveNext\$0();\n"
-"    },\n"
-"    get\$current() {\n"
-"      return this.\$ti._rest[1]._as(this.__internal\$_source.get\$current());\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.CastIterable.prototype = {\n"
-"    get\$__internal\$_source() {\n"
-"      return this.__internal\$_source;\n"
-"    }\n"
-"  };\n"
-"  A._EfficientLengthCastIterable.prototype = {\$isEfficientLengthIterable: 1};\n"
-"  A._CastListBase.prototype = {\n"
-"    \$index(_, index) {\n"
-"      return this.\$ti._rest[1]._as(J.\$index\$asx(this.__internal\$_source, index));\n"
-"    },\n"
-"    \$indexSet(_, index, value) {\n"
-"      var t1 = this.\$ti;\n"
-"      J.\$indexSet\$ax(this.__internal\$_source, index, t1._precomputed1._as(t1._rest[1]._as(value)));\n"
-"    },\n"
-"    set\$length(_, \$length) {\n"
-"      J.set\$length\$asx(this.__internal\$_source, \$length);\n"
-"    },\n"
-"    add\$1(_, value) {\n"
-"      var t1 = this.\$ti;\n"
-"      J.add\$1\$ax(this.__internal\$_source, t1._precomputed1._as(t1._rest[1]._as(value)));\n"
-"    },\n"
-"    sort\$1(_, compare) {\n"
-"      var t1;\n"
-"      this.\$ti._eval\$1(\"int(2,2)?\")._as(compare);\n"
-"      t1 = compare == null ? null : new A._CastListBase_sort_closure(this, compare);\n"
-"      J.sort\$1\$ax(this.__internal\$_source, t1);\n"
-"    },\n"
-"    fillRange\$3(_, start, end, fillValue) {\n"
-"      J.fillRange\$3\$ax(this.__internal\$_source, start, end, this.\$ti._precomputed1._as(fillValue));\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isList: 1\n"
-"  };\n"
-"  A._CastListBase_sort_closure.prototype = {\n"
-"    call\$2(v1, v2) {\n"
-"      var t1 = this.\$this.\$ti,\n"
-"        t2 = t1._precomputed1;\n"
-"      t2._as(v1);\n"
-"      t2._as(v2);\n"
-"      t1 = t1._rest[1];\n"
-"      return this.compare.call\$2(t1._as(v1), t1._as(v2));\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"int(1,1)\");\n"
-"    }\n"
-"  };\n"
-"  A.CastList.prototype = {\n"
-"    cast\$1\$0(_, \$R) {\n"
-"      return new A.CastList(this.__internal\$_source, this.\$ti._eval\$1(\"@<1>\")._bind\$1(\$R)._eval\$1(\"CastList<1,2>\"));\n"
-"    },\n"
-"    get\$__internal\$_source() {\n"
-"      return this.__internal\$_source;\n"
-"    }\n"
-"  };\n"
-"  A.CastMap.prototype = {\n"
-"    cast\$2\$0(_, \$RK, \$RV) {\n"
-"      return new A.CastMap(this.__internal\$_source, this.\$ti._eval\$1(\"@<1,2>\")._bind\$1(\$RK)._bind\$1(\$RV)._eval\$1(\"CastMap<1,2,3,4>\"));\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      return this.__internal\$_source.containsKey\$1(key);\n"
-"    },\n"
-"    \$index(_, key) {\n"
-"      return this.\$ti._eval\$1(\"4?\")._as(this.__internal\$_source.\$index(0, key));\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var t1 = this.\$ti;\n"
-"      t1._rest[2]._as(key);\n"
-"      t1._rest[3]._as(value);\n"
-"      this.__internal\$_source.\$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value));\n"
-"    },\n"
-"    forEach\$1(_, f) {\n"
-"      this.__internal\$_source.forEach\$1(0, new A.CastMap_forEach_closure(this, this.\$ti._eval\$1(\"~(3,4)\")._as(f)));\n"
-"    },\n"
-"    get\$keys() {\n"
-"      var t1 = this.\$ti;\n"
-"      return A.CastIterable_CastIterable(this.__internal\$_source.get\$keys(), t1._precomputed1, t1._rest[2]);\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      var t1 = this.__internal\$_source;\n"
-"      return t1.get\$length(t1);\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      var t1 = this.__internal\$_source;\n"
-"      return t1.get\$isEmpty(t1);\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      var t1 = this.__internal\$_source;\n"
-"      return t1.get\$isNotEmpty(t1);\n"
-"    }\n"
-"  };\n"
-"  A.CastMap_forEach_closure.prototype = {\n"
-"    call\$2(key, value) {\n"
-"      var t1 = this.\$this.\$ti;\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      this.f.call\$2(t1._rest[2]._as(key), t1._rest[3]._as(value));\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"~(1,2)\");\n"
-"    }\n"
-"  };\n"
-"  A.LateError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"LateInitializationError: \" + this._message;\n"
-"    }\n"
-"  };\n"
-"  A.CodeUnits.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this.__internal\$_string.length;\n"
-"    },\n"
-"    \$index(_, i) {\n"
-"      var t1 = this.__internal\$_string;\n"
-"      if (!(i >= 0 && i < t1.length))\n"
-"        return A.ioore(t1, i);\n"
-"      return t1.charCodeAt(i);\n"
-"    }\n"
-"  };\n"
-"  A.nullFuture_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return A.Future_Future\$value(null, type\$.void);\n"
-"    },\n"
-"    \$signature: 5\n"
-"  };\n"
-"  A.SentinelValue.prototype = {};\n"
-"  A.EfficientLengthIterable.prototype = {};\n"
-"  A.ListIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      var _this = this;\n"
-"      return new A.ListIterator(_this, _this.get\$length(_this), A._instanceType(_this)._eval\$1(\"ListIterator<ListIterable.E>\"));\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.get\$length(this) === 0;\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      if (this.get\$length(this) === 0)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      return this.elementAt\$1(0, 0);\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      var i, _this = this,\n"
-"        \$length = _this.get\$length(_this);\n"
-"      for (i = 0; i < \$length; ++i) {\n"
-"        if (J.\$eq\$(_this.elementAt\$1(0, i), element))\n"
-"          return true;\n"
-"        if (\$length !== _this.get\$length(_this))\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    join\$1(_, separator) {\n"
-"      var first, t1, i, _this = this,\n"
-"        \$length = _this.get\$length(_this);\n"
-"      if (separator.length !== 0) {\n"
-"        if (\$length === 0)\n"
-"          return \"\";\n"
-"        first = A.S(_this.elementAt\$1(0, 0));\n"
-"        if (\$length !== _this.get\$length(_this))\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"        for (t1 = first, i = 1; i < \$length; ++i) {\n"
-"          t1 = t1 + separator + A.S(_this.elementAt\$1(0, i));\n"
-"          if (\$length !== _this.get\$length(_this))\n"
-"            throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"        }\n"
-"        return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"      } else {\n"
-"        for (i = 0, t1 = \"\"; i < \$length; ++i) {\n"
-"          t1 += A.S(_this.elementAt\$1(0, i));\n"
-"          if (\$length !== _this.get\$length(_this))\n"
-"            throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"        }\n"
-"        return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"      }\n"
-"    },\n"
-"    map\$1\$1(_, toElement, \$T) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      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>\"));\n"
-"    },\n"
-"    reduce\$1(_, combine) {\n"
-"      var \$length, value, i, _this = this;\n"
-"      A._instanceType(_this)._eval\$1(\"ListIterable.E(ListIterable.E,ListIterable.E)\")._as(combine);\n"
-"      \$length = _this.get\$length(_this);\n"
-"      if (\$length === 0)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      value = _this.elementAt\$1(0, 0);\n"
-"      for (i = 1; i < \$length; ++i) {\n"
-"        value = combine.call\$2(value, _this.elementAt\$1(0, i));\n"
-"        if (\$length !== _this.get\$length(_this))\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"      }\n"
-"      return value;\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      return A.SubListIterable\$(this, count, null, A._instanceType(this)._eval\$1(\"ListIterable.E\"));\n"
-"    },\n"
-"    take\$1(_, count) {\n"
-"      return A.SubListIterable\$(this, 0, A.checkNotNullable(count, \"count\", type\$.int), A._instanceType(this)._eval\$1(\"ListIterable.E\"));\n"
-"    }\n"
-"  };\n"
-"  A.SubListIterable.prototype = {\n"
-"    SubListIterable\$3(_iterable, _start, _endOrLength, \$E) {\n"
-"      var endOrLength,\n"
-"        t1 = this._start;\n"
-"      A.RangeError_checkNotNegative(t1, \"start\");\n"
-"      endOrLength = this._endOrLength;\n"
-"      if (endOrLength != null) {\n"
-"        A.RangeError_checkNotNegative(endOrLength, \"end\");\n"
-"        if (t1 > endOrLength)\n"
-"          throw A.wrapException(A.RangeError\$range(t1, 0, endOrLength, \"start\", null));\n"
-"      }\n"
-"    },\n"
-"    get\$_endIndex() {\n"
-"      var \$length = J.get\$length\$asx(this.__internal\$_iterable),\n"
-"        endOrLength = this._endOrLength;\n"
-"      if (endOrLength == null || endOrLength > \$length)\n"
-"        return \$length;\n"
-"      return endOrLength;\n"
-"    },\n"
-"    get\$_startIndex() {\n"
-"      var \$length = J.get\$length\$asx(this.__internal\$_iterable),\n"
-"        t1 = this._start;\n"
-"      if (t1 > \$length)\n"
-"        return \$length;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      var endOrLength,\n"
-"        \$length = J.get\$length\$asx(this.__internal\$_iterable),\n"
-"        t1 = this._start;\n"
-"      if (t1 >= \$length)\n"
-"        return 0;\n"
-"      endOrLength = this._endOrLength;\n"
-"      if (endOrLength == null || endOrLength >= \$length)\n"
-"        return \$length - t1;\n"
-"      return endOrLength - t1;\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var _this = this,\n"
-"        realIndex = _this.get\$_startIndex() + index;\n"
-"      if (index < 0 || realIndex >= _this.get\$_endIndex())\n"
-"        throw A.wrapException(A.IndexError\$withLength(index, _this.get\$length(0), _this, null, \"index\"));\n"
-"      return J.elementAt\$1\$ax(_this.__internal\$_iterable, realIndex);\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      var newStart, endOrLength, _this = this;\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      newStart = _this._start + count;\n"
-"      endOrLength = _this._endOrLength;\n"
-"      if (endOrLength != null && newStart >= endOrLength)\n"
-"        return new A.EmptyIterable(_this.\$ti._eval\$1(\"EmptyIterable<1>\"));\n"
-"      return A.SubListIterable\$(_this.__internal\$_iterable, newStart, endOrLength, _this.\$ti._precomputed1);\n"
-"    },\n"
-"    take\$1(_, count) {\n"
-"      var endOrLength, t1, newEnd, _this = this;\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      endOrLength = _this._endOrLength;\n"
-"      t1 = _this._start;\n"
-"      if (endOrLength == null)\n"
-"        return A.SubListIterable\$(_this.__internal\$_iterable, t1, B.JSInt_methods.\$add(t1, count), _this.\$ti._precomputed1);\n"
-"      else {\n"
-"        newEnd = B.JSInt_methods.\$add(t1, count);\n"
-"        if (endOrLength < newEnd)\n"
-"          return _this;\n"
-"        return A.SubListIterable\$(_this.__internal\$_iterable, t1, newEnd, _this.\$ti._precomputed1);\n"
-"      }\n"
-"    },\n"
-"    toList\$1\$growable(_, growable) {\n"
-"      var \$length, result, i, _this = this,\n"
-"        start = _this._start,\n"
-"        t1 = _this.__internal\$_iterable,\n"
-"        t2 = J.getInterceptor\$asx(t1),\n"
-"        end = t2.get\$length(t1),\n"
-"        endOrLength = _this._endOrLength;\n"
-"      if (endOrLength != null && endOrLength < end)\n"
-"        end = endOrLength;\n"
-"      \$length = end - start;\n"
-"      if (\$length <= 0) {\n"
-"        t1 = _this.\$ti._precomputed1;\n"
-"        return growable ? J.JSArray_JSArray\$growable(0, t1) : J.JSArray_JSArray\$fixed(0, t1);\n"
-"      }\n"
-"      result = A.List_List\$filled(\$length, t2.elementAt\$1(t1, start), growable, _this.\$ti._precomputed1);\n"
-"      for (i = 1; i < \$length; ++i) {\n"
-"        B.JSArray_methods.\$indexSet(result, i, t2.elementAt\$1(t1, start + i));\n"
-"        if (t2.get\$length(t1) < end)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"      }\n"
-"      return result;\n"
-"    }\n"
-"  };\n"
-"  A.ListIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this.__internal\$_current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var t3, _this = this,\n"
-"        t1 = _this.__internal\$_iterable,\n"
-"        t2 = J.getInterceptor\$asx(t1),\n"
-"        \$length = t2.get\$length(t1);\n"
-"      if (_this.__internal\$_length !== \$length)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      t3 = _this.__internal\$_index;\n"
-"      if (t3 >= \$length) {\n"
-"        _this.__internal\$_current = null;\n"
-"        return false;\n"
-"      }\n"
-"      _this.__internal\$_current = t2.elementAt\$1(t1, t3);\n"
-"      ++_this.__internal\$_index;\n"
-"      return true;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.MappedIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.MappedIterator(J.get\$iterator\$ax(this.__internal\$_iterable), this._f, A._instanceType(this)._eval\$1(\"MappedIterator<1,2>\"));\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return J.get\$length\$asx(this.__internal\$_iterable);\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return J.get\$isEmpty\$asx(this.__internal\$_iterable);\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      return this._f.call\$1(J.get\$first\$ax(this.__internal\$_iterable));\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      return this._f.call\$1(J.elementAt\$1\$ax(this.__internal\$_iterable, index));\n"
-"    }\n"
-"  };\n"
-"  A.EfficientLengthMappedIterable.prototype = {\$isEfficientLengthIterable: 1};\n"
-"  A.MappedIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._iterator;\n"
-"      if (t1.moveNext\$0()) {\n"
-"        _this.__internal\$_current = _this._f.call\$1(t1.get\$current());\n"
-"        return true;\n"
-"      }\n"
-"      _this.__internal\$_current = null;\n"
-"      return false;\n"
-"    },\n"
-"    get\$current() {\n"
-"      var t1 = this.__internal\$_current;\n"
-"      return t1 == null ? this.\$ti._rest[1]._as(t1) : t1;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.MappedListIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return J.get\$length\$asx(this.__internal\$_source);\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      return this._f.call\$1(J.elementAt\$1\$ax(this.__internal\$_source, index));\n"
-"    }\n"
-"  };\n"
-"  A.WhereIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.WhereIterator(J.get\$iterator\$ax(this.__internal\$_iterable), this._f, this.\$ti._eval\$1(\"WhereIterator<1>\"));\n"
-"    },\n"
-"    map\$1\$1(_, toElement, \$T) {\n"
-"      var t1 = this.\$ti;\n"
-"      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>\"));\n"
-"    }\n"
-"  };\n"
-"  A.WhereIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      var t1, t2;\n"
-"      for (t1 = this._iterator, t2 = this._f; t1.moveNext\$0();)\n"
-"        if (t2.call\$1(t1.get\$current()))\n"
-"          return true;\n"
-"      return false;\n"
-"    },\n"
-"    get\$current() {\n"
-"      return this._iterator.get\$current();\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.ExpandIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.ExpandIterator(J.get\$iterator\$ax(this.__internal\$_iterable), this._f, B.C_EmptyIterator, this.\$ti._eval\$1(\"ExpandIterator<1,2>\"));\n"
-"    }\n"
-"  };\n"
-"  A.ExpandIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this.__internal\$_current;\n"
-"      return t1 == null ? this.\$ti._rest[1]._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var t2, t3, _this = this,\n"
-"        t1 = _this._currentExpansion;\n"
-"      if (t1 == null)\n"
-"        return false;\n"
-"      for (t2 = _this._iterator, t3 = _this._f; !t1.moveNext\$0();) {\n"
-"        _this.__internal\$_current = null;\n"
-"        if (t2.moveNext\$0()) {\n"
-"          _this._currentExpansion = null;\n"
-"          t1 = J.get\$iterator\$ax(t3.call\$1(t2.get\$current()));\n"
-"          _this._currentExpansion = t1;\n"
-"        } else\n"
-"          return false;\n"
-"      }\n"
-"      _this.__internal\$_current = _this._currentExpansion.get\$current();\n"
-"      return true;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.TakeIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.TakeIterator(J.get\$iterator\$ax(this.__internal\$_iterable), this._takeCount, A._instanceType(this)._eval\$1(\"TakeIterator<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A.EfficientLengthTakeIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      var iterableLength = J.get\$length\$asx(this.__internal\$_iterable),\n"
-"        t1 = this._takeCount;\n"
-"      if (iterableLength > t1)\n"
-"        return t1;\n"
-"      return iterableLength;\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1\n"
-"  };\n"
-"  A.TakeIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      if (--this._remaining >= 0)\n"
-"        return this._iterator.moveNext\$0();\n"
-"      this._remaining = -1;\n"
-"      return false;\n"
-"    },\n"
-"    get\$current() {\n"
-"      if (this._remaining < 0) {\n"
-"        this.\$ti._precomputed1._as(null);\n"
-"        return null;\n"
-"      }\n"
-"      return this._iterator.get\$current();\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.SkipIterable.prototype = {\n"
-"    skip\$1(_, count) {\n"
-"      A.ArgumentError_checkNotNull(count, \"count\", type\$.int);\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      return new A.SkipIterable(this.__internal\$_iterable, this._skipCount + count, A._instanceType(this)._eval\$1(\"SkipIterable<1>\"));\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      return new A.SkipIterator(J.get\$iterator\$ax(this.__internal\$_iterable), this._skipCount, A._instanceType(this)._eval\$1(\"SkipIterator<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A.EfficientLengthSkipIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      var \$length = J.get\$length\$asx(this.__internal\$_iterable) - this._skipCount;\n"
-"      if (\$length >= 0)\n"
-"        return \$length;\n"
-"      return 0;\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      A.ArgumentError_checkNotNull(count, \"count\", type\$.int);\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      return new A.EfficientLengthSkipIterable(this.__internal\$_iterable, this._skipCount + count, this.\$ti);\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1\n"
-"  };\n"
-"  A.SkipIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      var t1, i;\n"
-"      for (t1 = this._iterator, i = 0; i < this._skipCount; ++i)\n"
-"        t1.moveNext\$0();\n"
-"      this._skipCount = 0;\n"
-"      return t1.moveNext\$0();\n"
-"    },\n"
-"    get\$current() {\n"
-"      return this._iterator.get\$current();\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.EmptyIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return B.C_EmptyIterator;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return true;\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return 0;\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      throw A.wrapException(A.RangeError\$range(index, 0, 0, \"index\", null));\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      return false;\n"
-"    },\n"
-"    map\$1\$1(_, toElement, \$T) {\n"
-"      this.\$ti._bind\$1(\$T)._eval\$1(\"1(2)\")._as(toElement);\n"
-"      return new A.EmptyIterable(\$T._eval\$1(\"EmptyIterable<0>\"));\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      return this;\n"
-"    },\n"
-"    take\$1(_, count) {\n"
-"      A.RangeError_checkNotNegative(count, \"count\");\n"
-"      return this;\n"
-"    },\n"
-"    toList\$1\$growable(_, growable) {\n"
-"      var t1 = this.\$ti._precomputed1;\n"
-"      return growable ? J.JSArray_JSArray\$growable(0, t1) : J.JSArray_JSArray\$fixed(0, t1);\n"
-"    }\n"
-"  };\n"
-"  A.EmptyIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      return false;\n"
-"    },\n"
-"    get\$current() {\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.WhereTypeIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A.WhereTypeIterator(J.get\$iterator\$ax(this.__internal\$_source), this.\$ti._eval\$1(\"WhereTypeIterator<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A.WhereTypeIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      var t1, t2;\n"
-"      for (t1 = this.__internal\$_source, t2 = this.\$ti._precomputed1; t1.moveNext\$0();)\n"
-"        if (t2._is(t1.get\$current()))\n"
-"          return true;\n"
-"      return false;\n"
-"    },\n"
-"    get\$current() {\n"
-"      return this.\$ti._precomputed1._as(this.__internal\$_source.get\$current());\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.FixedLengthListMixin.prototype = {\n"
-"    set\$length(receiver, newLength) {\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot change the length of a fixed-length list\"));\n"
-"    },\n"
-"    add\$1(receiver, value) {\n"
-"      A.instanceType(receiver)._eval\$1(\"FixedLengthListMixin.E\")._as(value);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot add to a fixed-length list\"));\n"
-"    }\n"
-"  };\n"
-"  A.UnmodifiableListMixin.prototype = {\n"
-"    \$indexSet(_, index, value) {\n"
-"      A._instanceType(this)._eval\$1(\"UnmodifiableListMixin.E\")._as(value);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot modify an unmodifiable list\"));\n"
-"    },\n"
-"    set\$length(_, newLength) {\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot change the length of an unmodifiable list\"));\n"
-"    },\n"
-"    add\$1(_, value) {\n"
-"      A._instanceType(this)._eval\$1(\"UnmodifiableListMixin.E\")._as(value);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot add to an unmodifiable list\"));\n"
-"    },\n"
-"    sort\$1(_, compare) {\n"
-"      A._instanceType(this)._eval\$1(\"int(UnmodifiableListMixin.E,UnmodifiableListMixin.E)?\")._as(compare);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot modify an unmodifiable list\"));\n"
-"    },\n"
-"    fillRange\$3(_, start, end, fillValue) {\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot modify an unmodifiable list\"));\n"
-"    }\n"
-"  };\n"
-"  A.UnmodifiableListBase.prototype = {};\n"
-"  A.ReversedListIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return J.get\$length\$asx(this.__internal\$_source);\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var t1 = this.__internal\$_source,\n"
-"        t2 = J.getInterceptor\$asx(t1);\n"
-"      return t2.elementAt\$1(t1, t2.get\$length(t1) - 1 - index);\n"
-"    }\n"
-"  };\n"
-"  A.__CastListBase__CastIterableBase_ListMixin.prototype = {};\n"
-"  A._Record_2.prototype = {\$recipe: \"+(1,2)\", \$shape: 1};\n"
-"  A.ConstantMap.prototype = {\n"
-"    cast\$2\$0(_, \$RK, \$RV) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      return A.Map_castFrom(this, t1._precomputed1, t1._rest[1], \$RK, \$RV);\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.get\$length(this) === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this.get\$length(this) !== 0;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.MapBase_mapToString(this);\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      A.ConstantMap__throwUnmodifiable();\n"
-"    },\n"
-"    \$isMap: 1\n"
-"  };\n"
-"  A.ConstantStringMap.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._values.length;\n"
-"    },\n"
-"    get\$_keys() {\n"
-"      var keys = this.\$keys;\n"
-"      if (keys == null) {\n"
-"        keys = Object.keys(this._jsIndex);\n"
-"        this.\$keys = keys;\n"
-"      }\n"
-"      return keys;\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      if (typeof key != \"string\")\n"
-"        return false;\n"
-"      if (\"__proto__\" === key)\n"
-"        return false;\n"
-"      return this._jsIndex.hasOwnProperty(key);\n"
-"    },\n"
-"    \$index(_, key) {\n"
-"      if (!this.containsKey\$1(key))\n"
-"        return null;\n"
-"      return this._values[this._jsIndex[key]];\n"
-"    },\n"
-"    forEach\$1(_, f) {\n"
-"      var keys, values, t1, i;\n"
-"      this.\$ti._eval\$1(\"~(1,2)\")._as(f);\n"
-"      keys = this.get\$_keys();\n"
-"      values = this._values;\n"
-"      for (t1 = keys.length, i = 0; i < t1; ++i)\n"
-"        f.call\$2(keys[i], values[i]);\n"
-"    },\n"
-"    get\$keys() {\n"
-"      return new A._KeysOrValues(this.get\$_keys(), this.\$ti._eval\$1(\"_KeysOrValues<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A._KeysOrValues.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._elements.length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return 0 === this._elements.length;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return 0 !== this._elements.length;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this._elements;\n"
-"      return new A._KeysOrValuesOrElementsIterator(t1, t1.length, this.\$ti._eval\$1(\"_KeysOrValuesOrElementsIterator<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A._KeysOrValuesOrElementsIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this.__js_helper\$_current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this.__js_helper\$_index;\n"
-"      if (t1 >= _this.__js_helper\$_length) {\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      }\n"
-"      _this.__js_helper\$_current = _this._elements[t1];\n"
-"      _this.__js_helper\$_index = t1 + 1;\n"
-"      return true;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.Instantiation.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.Instantiation1 && this._genericClosure.\$eq(0, other._genericClosure) && A.getRuntimeTypeOfClosure(this) === A.getRuntimeTypeOfClosure(other);\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this._genericClosure, A.getRuntimeTypeOfClosure(this), B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t1 = B.JSArray_methods.join\$1([A.createRuntimeType(this.\$ti._precomputed1)], \", \");\n"
-"      return this._genericClosure.toString\$0(0) + \" with \" + (\"<\" + t1 + \">\");\n"
-"    }\n"
-"  };\n"
-"  A.Instantiation1.prototype = {\n"
-"    call\$2(a0, a1) {\n"
-"      return this._genericClosure.call\$1\$2(a0, a1, this.\$ti._rest[0]);\n"
-"    },\n"
-"    \$signature() {\n"
-"      return A.instantiatedGenericFunctionType(A.closureFunctionType(this._genericClosure), this.\$ti);\n"
-"    }\n"
-"  };\n"
-"  A.SafeToStringHook.prototype = {};\n"
-"  A.TypeErrorDecoder.prototype = {\n"
-"    matchTypeError\$1(message) {\n"
-"      var result, t1, _this = this,\n"
-"        match = new RegExp(_this._pattern).exec(message);\n"
-"      if (match == null)\n"
-"        return null;\n"
-"      result = Object.create(null);\n"
-"      t1 = _this._arguments;\n"
-"      if (t1 !== -1)\n"
-"        result.arguments = match[t1 + 1];\n"
-"      t1 = _this._argumentsExpr;\n"
-"      if (t1 !== -1)\n"
-"        result.argumentsExpr = match[t1 + 1];\n"
-"      t1 = _this._expr;\n"
-"      if (t1 !== -1)\n"
-"        result.expr = match[t1 + 1];\n"
-"      t1 = _this._method;\n"
-"      if (t1 !== -1)\n"
-"        result.method = match[t1 + 1];\n"
-"      t1 = _this._receiver;\n"
-"      if (t1 !== -1)\n"
-"        result.receiver = match[t1 + 1];\n"
-"      return result;\n"
-"    }\n"
-"  };\n"
-"  A.NullError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Null check operator used on a null value\";\n"
-"    }\n"
-"  };\n"
-"  A.JsNoSuchMethodError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t2, _this = this,\n"
-"        _s38_ = \"NoSuchMethodError: method not found: '\",\n"
-"        t1 = _this._method;\n"
-"      if (t1 == null)\n"
-"        return \"NoSuchMethodError: \" + _this.__js_helper\$_message;\n"
-"      t2 = _this._receiver;\n"
-"      if (t2 == null)\n"
-"        return _s38_ + t1 + \"' (\" + _this.__js_helper\$_message + \")\";\n"
-"      return _s38_ + t1 + \"' on '\" + t2 + \"' (\" + _this.__js_helper\$_message + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.UnknownJsTypeError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.__js_helper\$_message;\n"
-"      return t1.length === 0 ? \"Error\" : \"Error: \" + t1;\n"
-"    }\n"
-"  };\n"
-"  A.NullThrownFromJavaScriptException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Throw of null ('\" + (this._irritant === null ? \"null\" : \"undefined\") + \"' from JavaScript)\";\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.ExceptionAndStackTrace.prototype = {};\n"
-"  A._StackTrace.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var trace,\n"
-"        t1 = this._trace;\n"
-"      if (t1 != null)\n"
-"        return t1;\n"
-"      t1 = this._exception;\n"
-"      trace = t1 !== null && typeof t1 === \"object\" ? t1.stack : null;\n"
-"      return this._trace = trace == null ? \"\" : trace;\n"
-"    },\n"
-"    \$isStackTrace: 1\n"
-"  };\n"
-"  A.Closure.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var \$constructor = this.constructor,\n"
-"        \$name = \$constructor == null ? null : \$constructor.name;\n"
-"      return \"Closure '\" + A.unminifyOrTag(\$name == null ? \"unknown\" : \$name) + \"'\";\n"
-"    },\n"
-"    get\$runtimeType(_) {\n"
-"      var rti = A.closureFunctionType(this);\n"
-"      return A.createRuntimeType(rti == null ? A.instanceType(this) : rti);\n"
-"    },\n"
-"    \$isFunction: 1,\n"
-"    get\$\$call() {\n"
-"      return this;\n"
-"    },\n"
-"    \"call*\": \"call\$1\",\n"
-"    \$requiredArgCount: 1,\n"
-"    \$defaultValues: null\n"
-"  };\n"
-"  A.Closure0Args.prototype = {\"call*\": \"call\$0\", \$requiredArgCount: 0};\n"
-"  A.Closure2Args.prototype = {\"call*\": \"call\$2\", \$requiredArgCount: 2};\n"
-"  A.TearOffClosure.prototype = {};\n"
-"  A.StaticClosure.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var \$name = this.\$static_name;\n"
-"      if (\$name == null)\n"
-"        return \"Closure of unknown static method\";\n"
-"      return \"Closure '\" + A.unminifyOrTag(\$name) + \"'\";\n"
-"    }\n"
-"  };\n"
-"  A.BoundClosure.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      if (!(other instanceof A.BoundClosure))\n"
-"        return false;\n"
-"      return this.\$_target === other.\$_target && this._receiver === other._receiver;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return (A.objectHashCode(this._receiver) ^ A.Primitives_objectHashCode(this.\$_target)) >>> 0;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"Closure '\" + this.\$_name + \"' of \" + (\"Instance of '\" + A.Primitives_objectTypeName(this._receiver) + \"'\");\n"
-"    }\n"
-"  };\n"
-"  A.RuntimeError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"RuntimeError: \" + this.message;\n"
-"    }\n"
-"  };\n"
-"  A.JsLinkedHashMap.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this.__js_helper\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.__js_helper\$_length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this.__js_helper\$_length !== 0;\n"
-"    },\n"
-"    get\$keys() {\n"
-"      return new A.LinkedHashMapKeysIterable(this, A._instanceType(this)._eval\$1(\"LinkedHashMapKeysIterable<1>\"));\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      var strings, nums;\n"
-"      if (typeof key == \"string\") {\n"
-"        strings = this._strings;\n"
-"        if (strings == null)\n"
-"          return false;\n"
-"        return strings[key] != null;\n"
-"      } else if (typeof key == \"number\" && (key & 0x3fffffff) === key) {\n"
-"        nums = this._nums;\n"
-"        if (nums == null)\n"
-"          return false;\n"
-"        return nums[key] != null;\n"
-"      } else\n"
-"        return this.internalContainsKey\$1(key);\n"
-"    },\n"
-"    internalContainsKey\$1(key) {\n"
-"      var rest = this.__js_helper\$_rest;\n"
-"      if (rest == null)\n"
-"        return false;\n"
-"      return this.internalFindBucketIndex\$2(this._getBucket\$2(rest, key), key) >= 0;\n"
-"    },\n"
-"    \$index(_, key) {\n"
-"      var strings, cell, t1, nums, _null = null;\n"
-"      if (typeof key == \"string\") {\n"
-"        strings = this._strings;\n"
-"        if (strings == null)\n"
-"          return _null;\n"
-"        cell = strings[key];\n"
-"        t1 = cell == null ? _null : cell.hashMapCellValue;\n"
-"        return t1;\n"
-"      } else if (typeof key == \"number\" && (key & 0x3fffffff) === key) {\n"
-"        nums = this._nums;\n"
-"        if (nums == null)\n"
-"          return _null;\n"
-"        cell = nums[key];\n"
-"        t1 = cell == null ? _null : cell.hashMapCellValue;\n"
-"        return t1;\n"
-"      } else\n"
-"        return this.internalGet\$1(key);\n"
-"    },\n"
-"    internalGet\$1(key) {\n"
-"      var bucket, index,\n"
-"        rest = this.__js_helper\$_rest;\n"
-"      if (rest == null)\n"
-"        return null;\n"
-"      bucket = this._getBucket\$2(rest, key);\n"
-"      index = this.internalFindBucketIndex\$2(bucket, key);\n"
-"      if (index < 0)\n"
-"        return null;\n"
-"      return bucket[index].hashMapCellValue;\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var strings, nums, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      if (typeof key == \"string\") {\n"
-"        strings = _this._strings;\n"
-"        _this._addHashTableEntry\$3(strings == null ? _this._strings = _this._newHashTable\$0() : strings, key, value);\n"
-"      } else if (typeof key == \"number\" && (key & 0x3fffffff) === key) {\n"
-"        nums = _this._nums;\n"
-"        _this._addHashTableEntry\$3(nums == null ? _this._nums = _this._newHashTable\$0() : nums, key, value);\n"
-"      } else\n"
-"        _this.internalSet\$2(key, value);\n"
-"    },\n"
-"    internalSet\$2(key, value) {\n"
-"      var rest, hash, bucket, index, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      rest = _this.__js_helper\$_rest;\n"
-"      if (rest == null)\n"
-"        rest = _this.__js_helper\$_rest = _this._newHashTable\$0();\n"
-"      hash = _this.internalComputeHashCode\$1(key);\n"
-"      bucket = rest[hash];\n"
-"      if (bucket == null)\n"
-"        rest[hash] = [_this._newLinkedCell\$2(key, value)];\n"
-"      else {\n"
-"        index = _this.internalFindBucketIndex\$2(bucket, key);\n"
-"        if (index >= 0)\n"
-"          bucket[index].hashMapCellValue = value;\n"
-"        else\n"
-"          bucket.push(_this._newLinkedCell\$2(key, value));\n"
-"      }\n"
-"    },\n"
-"    putIfAbsent\$2(key, ifAbsent) {\n"
-"      var t2, value, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._eval\$1(\"2()\")._as(ifAbsent);\n"
-"      if (_this.containsKey\$1(key)) {\n"
-"        t2 = _this.\$index(0, key);\n"
-"        return t2 == null ? t1._rest[1]._as(t2) : t2;\n"
-"      }\n"
-"      value = ifAbsent.call\$0();\n"
-"      _this.\$indexSet(0, key, value);\n"
-"      return value;\n"
-"    },\n"
-"    forEach\$1(_, action) {\n"
-"      var cell, modifications, _this = this;\n"
-"      A._instanceType(_this)._eval\$1(\"~(1,2)\")._as(action);\n"
-"      cell = _this._first;\n"
-"      modifications = _this._modifications;\n"
-"      while (cell != null) {\n"
-"        action.call\$2(cell.hashMapCellKey, cell.hashMapCellValue);\n"
-"        if (modifications !== _this._modifications)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"        cell = cell._next;\n"
-"      }\n"
-"    },\n"
-"    _addHashTableEntry\$3(table, key, value) {\n"
-"      var cell,\n"
-"        t1 = A._instanceType(this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      cell = table[key];\n"
-"      if (cell == null)\n"
-"        table[key] = this._newLinkedCell\$2(key, value);\n"
-"      else\n"
-"        cell.hashMapCellValue = value;\n"
-"    },\n"
-"    _modified\$0() {\n"
-"      this._modifications = this._modifications + 1 & 1073741823;\n"
-"    },\n"
-"    _newLinkedCell\$2(key, value) {\n"
-"      var _this = this,\n"
-"        t1 = A._instanceType(_this),\n"
-"        cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value));\n"
-"      if (_this._first == null)\n"
-"        _this._first = _this._last = cell;\n"
-"      else {\n"
-"        t1 = _this._last;\n"
-"        t1.toString;\n"
-"        cell._previous = t1;\n"
-"        _this._last = t1._next = cell;\n"
-"      }\n"
-"      ++_this.__js_helper\$_length;\n"
-"      _this._modified\$0();\n"
-"      return cell;\n"
-"    },\n"
-"    internalComputeHashCode\$1(key) {\n"
-"      return J.get\$hashCode\$(key) & 1073741823;\n"
-"    },\n"
-"    _getBucket\$2(table, key) {\n"
-"      return table[this.internalComputeHashCode\$1(key)];\n"
-"    },\n"
-"    internalFindBucketIndex\$2(bucket, key) {\n"
-"      var \$length, i;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (i = 0; i < \$length; ++i)\n"
-"        if (J.\$eq\$(bucket[i].hashMapCellKey, key))\n"
-"          return i;\n"
-"      return -1;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.MapBase_mapToString(this);\n"
-"    },\n"
-"    _newHashTable\$0() {\n"
-"      var table = Object.create(null);\n"
-"      table[\"<non-identifier-key>\"] = table;\n"
-"      delete table[\"<non-identifier-key>\"];\n"
-"      return table;\n"
-"    },\n"
-"    \$isLinkedHashMap: 1\n"
-"  };\n"
-"  A.LinkedHashMapCell.prototype = {};\n"
-"  A.LinkedHashMapKeysIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length === 0;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this.__js_helper\$_map;\n"
-"      return new A.LinkedHashMapKeyIterator(t1, t1._modifications, t1._first, this.\$ti._eval\$1(\"LinkedHashMapKeyIterator<1>\"));\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      return this.__js_helper\$_map.containsKey\$1(element);\n"
-"    }\n"
-"  };\n"
-"  A.LinkedHashMapKeyIterator.prototype = {\n"
-"    get\$current() {\n"
-"      return this.__js_helper\$_current;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var cell, _this = this,\n"
-"        t1 = _this.__js_helper\$_map;\n"
-"      if (_this._modifications !== t1._modifications)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      cell = _this._cell;\n"
-"      if (cell == null) {\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      } else {\n"
-"        _this.__js_helper\$_current = cell.hashMapCellKey;\n"
-"        _this._cell = cell._next;\n"
-"        return true;\n"
-"      }\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.LinkedHashMapValuesIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length === 0;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this.__js_helper\$_map;\n"
-"      return new A.LinkedHashMapValueIterator(t1, t1._modifications, t1._first, this.\$ti._eval\$1(\"LinkedHashMapValueIterator<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A.LinkedHashMapValueIterator.prototype = {\n"
-"    get\$current() {\n"
-"      return this.__js_helper\$_current;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var cell, _this = this,\n"
-"        t1 = _this.__js_helper\$_map;\n"
-"      if (_this._modifications !== t1._modifications)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      cell = _this._cell;\n"
-"      if (cell == null) {\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      } else {\n"
-"        _this.__js_helper\$_current = cell.hashMapCellValue;\n"
-"        _this._cell = cell._next;\n"
-"        return true;\n"
-"      }\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.LinkedHashMapEntriesIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.__js_helper\$_map.__js_helper\$_length === 0;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this.__js_helper\$_map;\n"
-"      return new A.LinkedHashMapEntryIterator(t1, t1._modifications, t1._first, this.\$ti._eval\$1(\"LinkedHashMapEntryIterator<1,2>\"));\n"
-"    }\n"
-"  };\n"
-"  A.LinkedHashMapEntryIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this.__js_helper\$_current;\n"
-"      t1.toString;\n"
-"      return t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var cell, _this = this,\n"
-"        t1 = _this.__js_helper\$_map;\n"
-"      if (_this._modifications !== t1._modifications)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      cell = _this._cell;\n"
-"      if (cell == null) {\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      } else {\n"
-"        _this.__js_helper\$_current = new A.MapEntry(cell.hashMapCellKey, cell.hashMapCellValue, _this.\$ti._eval\$1(\"MapEntry<1,2>\"));\n"
-"        _this._cell = cell._next;\n"
-"        return true;\n"
-"      }\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.JsIdentityLinkedHashMap.prototype = {\n"
-"    internalComputeHashCode\$1(key) {\n"
-"      return A.objectHashCode(key) & 1073741823;\n"
-"    },\n"
-"    internalFindBucketIndex\$2(bucket, key) {\n"
-"      var \$length, i, t1;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (i = 0; i < \$length; ++i) {\n"
-"        t1 = bucket[i].hashMapCellKey;\n"
-"        if (t1 == null ? key == null : t1 === key)\n"
-"          return i;\n"
-"      }\n"
-"      return -1;\n"
-"    }\n"
-"  };\n"
-"  A.initHooks_closure.prototype = {\n"
-"    call\$1(o) {\n"
-"      return this.getTag(o);\n"
-"    },\n"
-"    \$signature: 17\n"
-"  };\n"
-"  A.initHooks_closure0.prototype = {\n"
-"    call\$2(o, tag) {\n"
-"      return this.getUnknownTag(o, tag);\n"
-"    },\n"
-"    \$signature: 59\n"
-"  };\n"
-"  A.initHooks_closure1.prototype = {\n"
-"    call\$1(tag) {\n"
-"      return this.prototypeForTag(A._asString(tag));\n"
-"    },\n"
-"    \$signature: 58\n"
-"  };\n"
-"  A._Record.prototype = {\n"
-"    get\$runtimeType(_) {\n"
-"      return A.createRuntimeType(this._getRti\$0());\n"
-"    },\n"
-"    _getRti\$0() {\n"
-"      return A.evaluateRtiForRecord(this.\$recipe, this._getFieldValues\$0());\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this._toString\$1(false);\n"
-"    },\n"
-"    _toString\$1(safe) {\n"
-"      var t2, separator, i, key, value,\n"
-"        keys = this._fieldKeys\$0(),\n"
-"        values = this._getFieldValues\$0(),\n"
-"        t1 = (safe ? \"Record \" : \"\") + \"(\";\n"
-"      for (t2 = keys.length, separator = \"\", i = 0; i < t2; ++i, separator = \", \") {\n"
-"        t1 += separator;\n"
-"        key = keys[i];\n"
-"        if (typeof key == \"string\")\n"
-"          t1 = t1 + key + \": \";\n"
-"        if (!(i < values.length))\n"
-"          return A.ioore(values, i);\n"
-"        value = values[i];\n"
-"        t1 = safe ? t1 + A.Primitives_safeToString(value) : t1 + A.S(value);\n"
-"      }\n"
-"      t1 += \")\";\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _fieldKeys\$0() {\n"
-"      var t1,\n"
-"        shapeTag = this.\$shape;\n"
-"      while (\$._Record__computedFieldKeys.length <= shapeTag)\n"
-"        B.JSArray_methods.add\$1(\$._Record__computedFieldKeys, null);\n"
-"      t1 = \$._Record__computedFieldKeys[shapeTag];\n"
-"      if (t1 == null) {\n"
-"        t1 = this._computeFieldKeys\$0();\n"
-"        B.JSArray_methods.\$indexSet(\$._Record__computedFieldKeys, shapeTag, t1);\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    _computeFieldKeys\$0() {\n"
-"      var i, names, last,\n"
-"        recipe = this.\$recipe,\n"
-"        position = recipe.indexOf(\"(\"),\n"
-"        joinedNames = recipe.substring(1, position),\n"
-"        fields = recipe.substring(position),\n"
-"        arity = fields === \"()\" ? 0 : fields.replace(/[^,]/g, \"\").length + 1,\n"
-"        t1 = type\$.Object,\n"
-"        result = J.JSArray_JSArray\$allocateGrowable(arity, t1);\n"
-"      for (i = 0; i < arity; ++i)\n"
-"        result[i] = i;\n"
-"      if (joinedNames !== \"\") {\n"
-"        names = joinedNames.split(\",\");\n"
-"        i = names.length;\n"
-"        for (last = arity; i > 0;) {\n"
-"          --last;\n"
-"          --i;\n"
-"          B.JSArray_methods.\$indexSet(result, last, names[i]);\n"
-"        }\n"
-"      }\n"
-"      return A.List_List\$unmodifiable(result, t1);\n"
-"    }\n"
-"  };\n"
-"  A._Record2.prototype = {\n"
-"    _getFieldValues\$0() {\n"
-"      return [this._0, this._1];\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A._Record2 && this.\$shape === other.\$shape && J.\$eq\$(this._0, other._0) && J.\$eq\$(this._1, other._1);\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.\$shape, this._0, this._1, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    }\n"
-"  };\n"
-"  A.JSSyntaxRegExp.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"RegExp/\" + this.pattern + \"/\" + this._nativeRegExp.flags;\n"
-"    },\n"
-"    get\$_nativeGlobalVersion() {\n"
-"      var _this = this,\n"
-"        t1 = _this._nativeGlobalRegExp;\n"
-"      if (t1 != null)\n"
-"        return t1;\n"
-"      t1 = _this._nativeRegExp;\n"
-"      return _this._nativeGlobalRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, \"g\");\n"
-"    },\n"
-"    get\$_nativeAnchoredVersion() {\n"
-"      var _this = this,\n"
-"        t1 = _this._nativeAnchoredRegExp;\n"
-"      if (t1 != null)\n"
-"        return t1;\n"
-"      t1 = _this._nativeRegExp;\n"
-"      return _this._nativeAnchoredRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, \"y\");\n"
-"    },\n"
-"    allMatches\$2(_, string, start) {\n"
-"      var t1 = string.length;\n"
-"      if (start > t1)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, t1, null, null));\n"
-"      return new A._AllMatchesIterable(this, string, start);\n"
-"    },\n"
-"    allMatches\$1(_, string) {\n"
-"      return this.allMatches\$2(0, string, 0);\n"
-"    },\n"
-"    _execGlobal\$2(string, start) {\n"
-"      var match,\n"
-"        regexp = this.get\$_nativeGlobalVersion();\n"
-"      if (regexp == null)\n"
-"        regexp = A._asObject(regexp);\n"
-"      regexp.lastIndex = start;\n"
-"      match = regexp.exec(string);\n"
-"      if (match == null)\n"
-"        return null;\n"
-"      return new A._MatchImplementation(match);\n"
-"    },\n"
-"    _execAnchored\$2(string, start) {\n"
-"      var match,\n"
-"        regexp = this.get\$_nativeAnchoredVersion();\n"
-"      if (regexp == null)\n"
-"        regexp = A._asObject(regexp);\n"
-"      regexp.lastIndex = start;\n"
-"      match = regexp.exec(string);\n"
-"      if (match == null)\n"
-"        return null;\n"
-"      return new A._MatchImplementation(match);\n"
-"    },\n"
-"    matchAsPrefix\$2(_, string, start) {\n"
-"      if (start < 0 || start > string.length)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, string.length, null, null));\n"
-"      return this._execAnchored\$2(string, start);\n"
-"    },\n"
-"    \$isPattern: 1,\n"
-"    \$isRegExp: 1\n"
-"  };\n"
-"  A._MatchImplementation.prototype = {\n"
-"    get\$start() {\n"
-"      return this._match.index;\n"
-"    },\n"
-"    get\$end() {\n"
-"      var t1 = this._match;\n"
-"      return t1.index + t1[0].length;\n"
-"    },\n"
-"    \$index(_, index) {\n"
-"      var t1 = this._match;\n"
-"      if (!(index < t1.length))\n"
-"        return A.ioore(t1, index);\n"
-"      return t1[index];\n"
-"    },\n"
-"    \$isMatch: 1,\n"
-"    \$isRegExpMatch: 1\n"
-"  };\n"
-"  A._AllMatchesIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A._AllMatchesIterator(this._re, this._string, this.__js_helper\$_start);\n"
-"    }\n"
-"  };\n"
-"  A._AllMatchesIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this.__js_helper\$_current;\n"
-"      return t1 == null ? type\$.RegExpMatch._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var t1, t2, t3, match, nextIndex, t4, _this = this,\n"
-"        string = _this._string;\n"
-"      if (string == null)\n"
-"        return false;\n"
-"      t1 = _this._nextIndex;\n"
-"      t2 = string.length;\n"
-"      if (t1 <= t2) {\n"
-"        t3 = _this._regExp;\n"
-"        match = t3._execGlobal\$2(string, t1);\n"
-"        if (match != null) {\n"
-"          _this.__js_helper\$_current = match;\n"
-"          nextIndex = match.get\$end();\n"
-"          if (match._match.index === nextIndex) {\n"
-"            t1 = false;\n"
-"            if (t3._nativeRegExp.unicode) {\n"
-"              t3 = _this._nextIndex;\n"
-"              t4 = t3 + 1;\n"
-"              if (t4 < t2) {\n"
-"                if (!(t3 >= 0 && t3 < t2))\n"
-"                  return A.ioore(string, t3);\n"
-"                t3 = string.charCodeAt(t3);\n"
-"                if (t3 >= 55296 && t3 <= 56319) {\n"
-"                  if (!(t4 >= 0))\n"
-"                    return A.ioore(string, t4);\n"
-"                  t1 = string.charCodeAt(t4);\n"
-"                  t1 = t1 >= 56320 && t1 <= 57343;\n"
-"                }\n"
-"              }\n"
-"            }\n"
-"            nextIndex = (t1 ? nextIndex + 1 : nextIndex) + 1;\n"
-"          }\n"
-"          _this._nextIndex = nextIndex;\n"
-"          return true;\n"
-"        }\n"
-"      }\n"
-"      _this._string = _this.__js_helper\$_current = null;\n"
-"      return false;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.StringMatch.prototype = {\n"
-"    get\$end() {\n"
-"      return this.start + this.pattern.length;\n"
-"    },\n"
-"    \$index(_, group) {\n"
-"      if (group !== 0)\n"
-"        throw A.wrapException(A.RangeError\$value(group, null));\n"
-"      return this.pattern;\n"
-"    },\n"
-"    \$isMatch: 1,\n"
-"    get\$start() {\n"
-"      return this.start;\n"
-"    }\n"
-"  };\n"
-"  A._StringAllMatchesIterable.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A._StringAllMatchesIterator(this._input, this._pattern, this.__js_helper\$_index);\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var t1 = this._pattern,\n"
-"        index = this._input.indexOf(t1, this.__js_helper\$_index);\n"
-"      if (index >= 0)\n"
-"        return new A.StringMatch(index, t1);\n"
-"      throw A.wrapException(A.IterableElementError_noElement());\n"
-"    }\n"
-"  };\n"
-"  A._StringAllMatchesIterator.prototype = {\n"
-"    moveNext\$0() {\n"
-"      var index, end, _this = this,\n"
-"        t1 = _this.__js_helper\$_index,\n"
-"        t2 = _this._pattern,\n"
-"        t3 = t2.length,\n"
-"        t4 = _this._input,\n"
-"        t5 = t4.length;\n"
-"      if (t1 + t3 > t5) {\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      }\n"
-"      index = t4.indexOf(t2, t1);\n"
-"      if (index < 0) {\n"
-"        _this.__js_helper\$_index = t5 + 1;\n"
-"        _this.__js_helper\$_current = null;\n"
-"        return false;\n"
-"      }\n"
-"      end = index + t3;\n"
-"      _this.__js_helper\$_current = new A.StringMatch(index, t2);\n"
-"      _this.__js_helper\$_index = end === _this.__js_helper\$_index ? end + 1 : end;\n"
-"      return true;\n"
-"    },\n"
-"    get\$current() {\n"
-"      var t1 = this.__js_helper\$_current;\n"
-"      t1.toString;\n"
-"      return t1;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A._Cell.prototype = {\n"
-"    _readLocal\$0() {\n"
-"      var t1 = this.__late_helper\$_value;\n"
-"      if (t1 === this)\n"
-"        throw A.wrapException(new A.LateError(\"Local '\" + this.__late_helper\$_name + \"' has not been initialized.\"));\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A.NativeByteBuffer.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_ByteBuffer_rqD;\n"
-"    },\n"
-"    asUint8List\$2(receiver, offsetInBytes, \$length) {\n"
-"      return \$length == null ? new Uint8Array(receiver, offsetInBytes) : new Uint8Array(receiver, offsetInBytes, \$length);\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isNativeByteBuffer: 1,\n"
-"    \$isByteBuffer: 1\n"
-"  };\n"
-"  A.NativeArrayBuffer.prototype = {\$isNativeArrayBuffer: 1};\n"
-"  A.NativeTypedData.prototype = {\n"
-"    get\$buffer(receiver) {\n"
-"      if (((receiver.\$flags | 0) & 2) !== 0)\n"
-"        return new A._UnmodifiableNativeByteBufferView(receiver.buffer);\n"
-"      else\n"
-"        return receiver.buffer;\n"
-"    },\n"
-"    _invalidPosition\$3(receiver, position, \$length, \$name) {\n"
-"      var t1 = A.RangeError\$range(position, 0, \$length, \$name, null);\n"
-"      throw A.wrapException(t1);\n"
-"    },\n"
-"    _checkPosition\$3(receiver, position, \$length, \$name) {\n"
-"      if (position >>> 0 !== position || position > \$length)\n"
-"        this._invalidPosition\$3(receiver, position, \$length, \$name);\n"
-"    }\n"
-"  };\n"
-"  A._UnmodifiableNativeByteBufferView.prototype = {\n"
-"    asUint8List\$2(_, offsetInBytes, \$length) {\n"
-"      var result = A.NativeUint8List_NativeUint8List\$view(this.__native_typed_data\$_data, offsetInBytes, \$length);\n"
-"      result.\$flags = 3;\n"
-"      return result;\n"
-"    },\n"
-"    \$isByteBuffer: 1\n"
-"  };\n"
-"  A.NativeByteData.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_ByteData_9dB;\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isByteData: 1\n"
-"  };\n"
-"  A.NativeTypedArray.prototype = {\n"
-"    get\$length(receiver) {\n"
-"      return receiver.length;\n"
-"    },\n"
-"    _setRangeFast\$4(receiver, start, end, source, skipCount) {\n"
-"      var count, sourceLength,\n"
-"        targetLength = receiver.length;\n"
-"      this._checkPosition\$3(receiver, start, targetLength, \"start\");\n"
-"      this._checkPosition\$3(receiver, end, targetLength, \"end\");\n"
-"      if (start > end)\n"
-"        throw A.wrapException(A.RangeError\$range(start, 0, end, null, null));\n"
-"      count = end - start;\n"
-"      if (skipCount < 0)\n"
-"        throw A.wrapException(A.ArgumentError\$(skipCount, null));\n"
-"      sourceLength = source.length;\n"
-"      if (sourceLength - skipCount < count)\n"
-"        throw A.wrapException(A.StateError\$(\"Not enough elements\"));\n"
-"      if (skipCount !== 0 || sourceLength !== count)\n"
-"        source = source.subarray(skipCount, skipCount + count);\n"
-"      receiver.set(source, start);\n"
-"    },\n"
-"    \$isJavaScriptIndexingBehavior: 1\n"
-"  };\n"
-"  A.NativeTypedArrayOfDouble.prototype = {\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$indexSet(receiver, index, value) {\n"
-"      A._asDouble(value);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver);\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      receiver[index] = value;\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isIterable: 1,\n"
-"    \$isList: 1\n"
-"  };\n"
-"  A.NativeTypedArrayOfInt.prototype = {\n"
-"    \$indexSet(receiver, index, value) {\n"
-"      A._asInt(value);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver);\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      receiver[index] = value;\n"
-"    },\n"
-"    setRange\$4(receiver, start, end, iterable, skipCount) {\n"
-"      type\$.Iterable_int._as(iterable);\n"
-"      receiver.\$flags & 2 && A.throwUnsupportedOperation(receiver, 5);\n"
-"      if (type\$.NativeTypedArrayOfInt._is(iterable)) {\n"
-"        this._setRangeFast\$4(receiver, start, end, iterable, skipCount);\n"
-"        return;\n"
-"      }\n"
-"      this.super\$ListBase\$setRange(receiver, start, end, iterable, skipCount);\n"
-"    },\n"
-"    setRange\$3(receiver, start, end, iterable) {\n"
-"      return this.setRange\$4(receiver, start, end, iterable, 0);\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isIterable: 1,\n"
-"    \$isList: 1\n"
-"  };\n"
-"  A.NativeFloat32List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Float32List_9Kz;\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isFloat32List: 1\n"
-"  };\n"
-"  A.NativeFloat64List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Float64List_9Kz;\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isFloat64List: 1\n"
-"  };\n"
-"  A.NativeInt16List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Int16List_s5h;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isInt16List: 1\n"
-"  };\n"
-"  A.NativeInt32List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Int32List_O8Z;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isInt32List: 1\n"
-"  };\n"
-"  A.NativeInt8List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Int8List_rFV;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isInt8List: 1\n"
-"  };\n"
-"  A.NativeUint16List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Uint16List_kmP;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isUint16List: 1\n"
-"  };\n"
-"  A.NativeUint32List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Uint32List_kmP;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    sublist\$2(receiver, start, end) {\n"
-"      return new Uint32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isUint32List: 1\n"
-"  };\n"
-"  A.NativeUint8ClampedList.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Uint8ClampedList_04U;\n"
-"    },\n"
-"    get\$length(receiver) {\n"
-"      return receiver.length;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isUint8ClampedList: 1\n"
-"  };\n"
-"  A.NativeUint8List.prototype = {\n"
-"    get\$runtimeType(receiver) {\n"
-"      return B.Type_Uint8List_8Eb;\n"
-"    },\n"
-"    get\$length(receiver) {\n"
-"      return receiver.length;\n"
-"    },\n"
-"    \$index(receiver, index) {\n"
-"      A._checkValidIndex(index, receiver, receiver.length);\n"
-"      return receiver[index];\n"
-"    },\n"
-"    sublist\$2(receiver, start, end) {\n"
-"      return new Uint8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));\n"
-"    },\n"
-"    \$isTrustedGetRuntimeType: 1,\n"
-"    \$isNativeUint8List: 1,\n"
-"    \$isUint8List: 1\n"
-"  };\n"
-"  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};\n"
-"  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};\n"
-"  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};\n"
-"  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};\n"
-"  A.Rti.prototype = {\n"
-"    _eval\$1(recipe) {\n"
-"      return A._Universe_evalInEnvironment(init.typeUniverse, this, recipe);\n"
-"    },\n"
-"    _bind\$1(typeOrTuple) {\n"
-"      return A._Universe_bind(init.typeUniverse, this, typeOrTuple);\n"
-"    }\n"
-"  };\n"
-"  A._FunctionParameters.prototype = {};\n"
-"  A._Type.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return A._rtiToString(this._rti, null);\n"
-"    }\n"
-"  };\n"
-"  A._Error.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return this.__rti\$_message;\n"
-"    }\n"
-"  };\n"
-"  A._TypeError.prototype = {\$isTypeError: 1};\n"
-"  A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {\n"
-"    call\$1(__wc0_formal) {\n"
-"      var t1 = this._box_0,\n"
-"        f = t1.storedCallback;\n"
-"      t1.storedCallback = null;\n"
-"      f.call\$0();\n"
-"    },\n"
-"    \$signature: 6\n"
-"  };\n"
-"  A._AsyncRun__initializeScheduleImmediate_closure.prototype = {\n"
-"    call\$1(callback) {\n"
-"      var t1, t2;\n"
-"      this._box_0.storedCallback = type\$.void_Function._as(callback);\n"
-"      t1 = this.div;\n"
-"      t2 = this.span;\n"
-"      t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);\n"
-"    },\n"
-"    \$signature: 41\n"
-"  };\n"
-"  A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {\n"
-"    call\$0() {\n"
-"      this.callback.call\$0();\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {\n"
-"    call\$0() {\n"
-"      this.callback.call\$0();\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A._TimerImpl.prototype = {\n"
-"    _TimerImpl\$2(milliseconds, callback) {\n"
-"      if (self.setTimeout != null)\n"
-"        this._handle = self.setTimeout(A.convertDartClosureToJS(new A._TimerImpl_internalCallback(this, callback), 0), milliseconds);\n"
-"      else\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"`setTimeout()` not found.\"));\n"
-"    },\n"
-"    get\$isActive() {\n"
-"      return this._handle != null;\n"
-"    },\n"
-"    cancel\$0() {\n"
-"      if (self.setTimeout != null) {\n"
-"        var t1 = this._handle;\n"
-"        if (t1 == null)\n"
-"          return;\n"
-"        self.clearTimeout(t1);\n"
-"        this._handle = null;\n"
-"      } else\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"Canceling a timer.\"));\n"
-"    },\n"
-"    \$isTimer: 1\n"
-"  };\n"
-"  A._TimerImpl_internalCallback.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._handle = null;\n"
-"      this.callback.call\$0();\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._AsyncAwaitCompleter.prototype = {\n"
-"    complete\$1(value) {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._eval\$1(\"1/?\")._as(value);\n"
-"      if (value == null)\n"
-"        value = t1._precomputed1._as(value);\n"
-"      if (!_this.isSync)\n"
-"        _this._future._asyncComplete\$1(value);\n"
-"      else {\n"
-"        t2 = _this._future;\n"
-"        if (t1._eval\$1(\"Future<1>\")._is(value))\n"
-"          t2._chainFuture\$1(value);\n"
-"        else\n"
-"          t2._completeWithValue\$1(value);\n"
-"      }\n"
-"    },\n"
-"    completeError\$2(e, st) {\n"
-"      var t1;\n"
-"      if (st == null)\n"
-"        st = A.AsyncError_defaultStackTrace(e);\n"
-"      t1 = this._future;\n"
-"      if (this.isSync)\n"
-"        t1._completeErrorObject\$1(new A.AsyncError(e, st));\n"
-"      else\n"
-"        t1._asyncCompleteErrorObject\$1(new A.AsyncError(e, st));\n"
-"    },\n"
-"    \$isCompleter: 1\n"
-"  };\n"
-"  A._awaitOnObject_closure.prototype = {\n"
-"    call\$1(result) {\n"
-"      return this.bodyFunction.call\$2(0, result);\n"
-"    },\n"
-"    \$signature: 3\n"
-"  };\n"
-"  A._awaitOnObject_closure0.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      this.bodyFunction.call\$2(1, new A.ExceptionAndStackTrace(error, type\$.StackTrace._as(stackTrace)));\n"
-"    },\n"
-"    \$signature: 43\n"
-"  };\n"
-"  A._wrapJsFunctionForAsync_closure.prototype = {\n"
-"    call\$2(errorCode, result) {\n"
-"      this.\$protected(A._asInt(errorCode), result);\n"
-"    },\n"
-"    \$signature: 53\n"
-"  };\n"
-"  A.AsyncError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return A.S(this.error);\n"
-"    },\n"
-"    \$isError: 1,\n"
-"    get\$stackTrace() {\n"
-"      return this.stackTrace;\n"
-"    }\n"
-"  };\n"
-"  A.Future_Future\$microtask_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var e, s, exception, t1, t2, t3, computationResult = null;\n"
-"      try {\n"
-"        computationResult = this.computation.call\$0();\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = e;\n"
-"        t2 = s;\n"
-"        t3 = A._interceptError(t1, t2);\n"
-"        if (t3 == null)\n"
-"          t1 = new A.AsyncError(t1, t2);\n"
-"        else\n"
-"          t1 = t3;\n"
-"        this.result._completeErrorObject\$1(t1);\n"
-"        return;\n"
-"      }\n"
-"      this.result._complete\$1(computationResult);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Future_Future\$delayed_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.T._as(null);\n"
-"      this.result._complete\$1(null);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.TimeoutException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.duration,\n"
-"        result = t1 != null ? \"TimeoutException after \" + t1.toString\$0(0) : \"TimeoutException\";\n"
-"      return result + \": \" + this.message;\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A._Completer.prototype = {\n"
-"    completeError\$2(error, stackTrace) {\n"
-"      A._asObject(error);\n"
-"      type\$.nullable_StackTrace._as(stackTrace);\n"
-"      if ((this.future._state & 30) !== 0)\n"
-"        throw A.wrapException(A.StateError\$(\"Future already completed\"));\n"
-"      this._completeErrorObject\$1(A._interceptUserError(error, stackTrace));\n"
-"    },\n"
-"    completeError\$1(error) {\n"
-"      return this.completeError\$2(error, null);\n"
-"    },\n"
-"    \$isCompleter: 1\n"
-"  };\n"
-"  A._AsyncCompleter.prototype = {\n"
-"    complete\$1(value) {\n"
-"      var t2,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"1/?\")._as(value);\n"
-"      t2 = this.future;\n"
-"      if ((t2._state & 30) !== 0)\n"
-"        throw A.wrapException(A.StateError\$(\"Future already completed\"));\n"
-"      t2._asyncComplete\$1(t1._eval\$1(\"1/\")._as(value));\n"
-"    },\n"
-"    complete\$0() {\n"
-"      return this.complete\$1(null);\n"
-"    },\n"
-"    _completeErrorObject\$1(error) {\n"
-"      this.future._asyncCompleteErrorObject\$1(error);\n"
-"    }\n"
-"  };\n"
-"  A._SyncCompleter.prototype = {\n"
-"    complete\$1(value) {\n"
-"      var t2,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"1/?\")._as(value);\n"
-"      t2 = this.future;\n"
-"      if ((t2._state & 30) !== 0)\n"
-"        throw A.wrapException(A.StateError\$(\"Future already completed\"));\n"
-"      t2._complete\$1(t1._eval\$1(\"1/\")._as(value));\n"
-"    },\n"
-"    _completeErrorObject\$1(error) {\n"
-"      this.future._completeErrorObject\$1(error);\n"
-"    }\n"
-"  };\n"
-"  A._FutureListener.prototype = {\n"
-"    matchesErrorTest\$1(asyncError) {\n"
-"      var t1;\n"
-"      if ((this.state & 15) !== 6)\n"
-"        return true;\n"
-"      t1 = this.result._zone;\n"
-"      return t1._runUnaryZoned\$2\$3(t1, type\$.bool_Function_Object._as(this.callback), asyncError.error, type\$.bool, type\$.Object);\n"
-"    },\n"
-"    handleError\$1(asyncError) {\n"
-"      var exception, _this = this,\n"
-"        errorCallback = _this.errorCallback,\n"
-"        result = null,\n"
-"        t1 = type\$.dynamic,\n"
-"        t2 = type\$.Object,\n"
-"        t3 = asyncError.error,\n"
-"        t4 = _this.result._zone;\n"
-"      if (type\$.dynamic_Function_Object_StackTrace._is(errorCallback))\n"
-"        result = t4._runBinaryZoned\$3\$4(t4, errorCallback, t3, asyncError.stackTrace, t1, t2, type\$.StackTrace);\n"
-"      else\n"
-"        result = t4._runUnaryZoned\$2\$3(t4, type\$.dynamic_Function_Object._as(errorCallback), t3, t1, t2);\n"
-"      try {\n"
-"        t1 = _this.\$ti._eval\$1(\"2/\")._as(result);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        if (type\$.TypeError._is(A.unwrapException(exception))) {\n"
-"          if ((_this.state & 1) !== 0)\n"
-"            throw A.wrapException(A.ArgumentError\$(\"The error handler of Future.then must return a value of the returned future's type\", \"onError\"));\n"
-"          throw A.wrapException(A.ArgumentError\$(\"The error handler of Future.catchError must return a value of the future's type\", \"onError\"));\n"
-"        } else\n"
-"          throw exception;\n"
-"      }\n"
-"    }\n"
-"  };\n"
-"  A._Future.prototype = {\n"
-"    then\$1\$2\$onError(f, onError, \$R) {\n"
-"      var currentZone, t2, result,\n"
-"        t1 = this.\$ti;\n"
-"      t1._bind\$1(\$R)._eval\$1(\"1/(2)\")._as(f);\n"
-"      currentZone = \$.Zone__current;\n"
-"      if (currentZone === B.Zone_jYP) {\n"
-"        if (onError != null && !type\$.dynamic_Function_Object_StackTrace._is(onError) && !type\$.dynamic_Function_Object._is(onError))\n"
-"          throw A.wrapException(A.ArgumentError\$value(onError, \"onError\", string\$.Error_));\n"
-"      } else {\n"
-"        t2 = t1._precomputed1;\n"
-"        f = currentZone._registerUnaryCallbackZoned\$2\$2(currentZone, \$R._eval\$1(\"@<0/>\")._bind\$1(t2)._eval\$1(\"1(2)\")._as(f), \$R._eval\$1(\"0/\"), t2);\n"
-"        if (onError != null)\n"
-"          onError = A._registerErrorHandler(onError, currentZone);\n"
-"      }\n"
-"      result = new A._Future(\$.Zone__current, \$R._eval\$1(\"_Future<0>\"));\n"
-"      t2 = onError == null ? 1 : 3;\n"
-"      this._addListener\$1(new A._FutureListener(result, t2, f, onError, t1._eval\$1(\"@<1>\")._bind\$1(\$R)._eval\$1(\"_FutureListener<1,2>\")));\n"
-"      return result;\n"
-"    },\n"
-"    then\$1\$1(f, \$R) {\n"
-"      return this.then\$1\$2\$onError(f, null, \$R);\n"
-"    },\n"
-"    _thenAwait\$1\$2(f, onError, \$E) {\n"
-"      var result,\n"
-"        t1 = this.\$ti;\n"
-"      t1._bind\$1(\$E)._eval\$1(\"1/(2)\")._as(f);\n"
-"      result = new A._Future(\$.Zone__current, \$E._eval\$1(\"_Future<0>\"));\n"
-"      this._addListener\$1(new A._FutureListener(result, 19, f, onError, t1._eval\$1(\"@<1>\")._bind\$1(\$E)._eval\$1(\"_FutureListener<1,2>\")));\n"
-"      return result;\n"
-"    },\n"
-"    catchError\$1(onError) {\n"
-"      var t1 = this.\$ti,\n"
-"        resultZone = \$.Zone__current,\n"
-"        result = new A._Future(resultZone, t1);\n"
-"      if (resultZone !== B.Zone_jYP)\n"
-"        onError = A._registerErrorHandler(onError, resultZone);\n"
-"      this._addListener\$1(new A._FutureListener(result, 2, null, onError, t1._eval\$1(\"_FutureListener<1,1>\")));\n"
-"      return result;\n"
-"    },\n"
-"    whenComplete\$1(action) {\n"
-"      var t1, resultZone, result;\n"
-"      type\$.dynamic_Function._as(action);\n"
-"      t1 = this.\$ti;\n"
-"      resultZone = \$.Zone__current;\n"
-"      result = new A._Future(resultZone, t1);\n"
-"      if (resultZone !== B.Zone_jYP)\n"
-"        action = resultZone._registerCallbackZoned\$1\$2(resultZone, action, type\$.dynamic);\n"
-"      this._addListener\$1(new A._FutureListener(result, 8, action, null, t1._eval\$1(\"_FutureListener<1,1>\")));\n"
-"      return result;\n"
-"    },\n"
-"    _setErrorObject\$1(error) {\n"
-"      this._state = this._state & 1 | 16;\n"
-"      this._resultOrListeners = error;\n"
-"    },\n"
-"    _cloneResult\$1(source) {\n"
-"      this._state = source._state & 30 | this._state & 1;\n"
-"      this._resultOrListeners = source._resultOrListeners;\n"
-"    },\n"
-"    _addListener\$1(listener) {\n"
-"      var source, _this = this,\n"
-"        t1 = _this._state;\n"
-"      if (t1 <= 3) {\n"
-"        listener._nextListener = type\$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);\n"
-"        _this._resultOrListeners = listener;\n"
-"      } else {\n"
-"        if ((t1 & 4) !== 0) {\n"
-"          source = type\$._Future_dynamic._as(_this._resultOrListeners);\n"
-"          if ((source._state & 24) === 0) {\n"
-"            source._addListener\$1(listener);\n"
-"            return;\n"
-"          }\n"
-"          _this._cloneResult\$1(source);\n"
-"        }\n"
-"        t1 = _this._zone;\n"
-"        t1._scheduleMicrotaskZoned\$2(t1, new A._Future__addListener_closure(_this, listener));\n"
-"      }\n"
-"    },\n"
-"    _prependListeners\$1(listeners) {\n"
-"      var t1, existingListeners, next, cursor, next0, source, _this = this, _box_0 = {};\n"
-"      _box_0.listeners = listeners;\n"
-"      if (listeners == null)\n"
-"        return;\n"
-"      t1 = _this._state;\n"
-"      if (t1 <= 3) {\n"
-"        existingListeners = type\$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners);\n"
-"        _this._resultOrListeners = listeners;\n"
-"        if (existingListeners != null) {\n"
-"          next = listeners._nextListener;\n"
-"          for (cursor = listeners; next != null; cursor = next, next = next0)\n"
-"            next0 = next._nextListener;\n"
-"          cursor._nextListener = existingListeners;\n"
-"        }\n"
-"      } else {\n"
-"        if ((t1 & 4) !== 0) {\n"
-"          source = type\$._Future_dynamic._as(_this._resultOrListeners);\n"
-"          if ((source._state & 24) === 0) {\n"
-"            source._prependListeners\$1(listeners);\n"
-"            return;\n"
-"          }\n"
-"          _this._cloneResult\$1(source);\n"
-"        }\n"
-"        _box_0.listeners = _this._reverseListeners\$1(listeners);\n"
-"        t1 = _this._zone;\n"
-"        t1._scheduleMicrotaskZoned\$2(t1, new A._Future__prependListeners_closure(_box_0, _this));\n"
-"      }\n"
-"    },\n"
-"    _removeListeners\$0() {\n"
-"      var current = type\$.nullable__FutureListener_dynamic_dynamic._as(this._resultOrListeners);\n"
-"      this._resultOrListeners = null;\n"
-"      return this._reverseListeners\$1(current);\n"
-"    },\n"
-"    _reverseListeners\$1(listeners) {\n"
-"      var current, prev, next;\n"
-"      for (current = listeners, prev = null; current != null; prev = current, current = next) {\n"
-"        next = current._nextListener;\n"
-"        current._nextListener = prev;\n"
-"      }\n"
-"      return prev;\n"
-"    },\n"
-"    _complete\$1(value) {\n"
-"      var listeners, _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._eval\$1(\"1/\")._as(value);\n"
-"      if (t1._eval\$1(\"Future<1>\")._is(value))\n"
-"        A._Future__chainCoreFuture(value, _this, true);\n"
-"      else {\n"
-"        listeners = _this._removeListeners\$0();\n"
-"        t1._precomputed1._as(value);\n"
-"        _this._state = 8;\n"
-"        _this._resultOrListeners = value;\n"
-"        A._Future__propagateToListeners(_this, listeners);\n"
-"      }\n"
-"    },\n"
-"    _completeWithValue\$1(value) {\n"
-"      var listeners, _this = this;\n"
-"      _this.\$ti._precomputed1._as(value);\n"
-"      listeners = _this._removeListeners\$0();\n"
-"      _this._state = 8;\n"
-"      _this._resultOrListeners = value;\n"
-"      A._Future__propagateToListeners(_this, listeners);\n"
-"    },\n"
-"    _completeWithResultOf\$1(source) {\n"
-"      var listeners, _this = this;\n"
-"      if ((source._state & 16) !== 0 && _this._zone._handleUncaughtErrorFunction != source._zone._handleUncaughtErrorFunction)\n"
-"        return;\n"
-"      listeners = _this._removeListeners\$0();\n"
-"      _this._cloneResult\$1(source);\n"
-"      A._Future__propagateToListeners(_this, listeners);\n"
-"    },\n"
-"    _completeErrorObject\$1(error) {\n"
-"      var listeners = this._removeListeners\$0();\n"
-"      this._setErrorObject\$1(error);\n"
-"      A._Future__propagateToListeners(this, listeners);\n"
-"    },\n"
-"    _completeError\$2(error, stackTrace) {\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      this._completeErrorObject\$1(new A.AsyncError(error, stackTrace));\n"
-"    },\n"
-"    _asyncComplete\$1(value) {\n"
-"      var t1 = this.\$ti;\n"
-"      t1._eval\$1(\"1/\")._as(value);\n"
-"      if (t1._eval\$1(\"Future<1>\")._is(value)) {\n"
-"        this._chainFuture\$1(value);\n"
-"        return;\n"
-"      }\n"
-"      this._asyncCompleteWithValue\$1(value);\n"
-"    },\n"
-"    _asyncCompleteWithValue\$1(value) {\n"
-"      var t1, _this = this;\n"
-"      _this.\$ti._precomputed1._as(value);\n"
-"      _this._state ^= 2;\n"
-"      t1 = _this._zone;\n"
-"      t1._scheduleMicrotaskZoned\$2(t1, new A._Future__asyncCompleteWithValue_closure(_this, value));\n"
-"    },\n"
-"    _chainFuture\$1(value) {\n"
-"      A._Future__chainCoreFuture(this.\$ti._eval\$1(\"Future<1>\")._as(value), this, false);\n"
-"      return;\n"
-"    },\n"
-"    _asyncCompleteErrorObject\$1(error) {\n"
-"      var t1;\n"
-"      this._state ^= 2;\n"
-"      t1 = this._zone;\n"
-"      t1._scheduleMicrotaskZoned\$2(t1, new A._Future__asyncCompleteErrorObject_closure(this, error));\n"
-"    },\n"
-"    timeout\$2\$onTimeout(timeLimit, onTimeout) {\n"
-"      var t3, _future, _this = this, t1 = {},\n"
-"        t2 = _this.\$ti;\n"
-"      t2._eval\$1(\"1/()?\")._as(onTimeout);\n"
-"      if ((_this._state & 24) !== 0) {\n"
-"        t1 = new A._Future(\$.Zone__current, t2);\n"
-"        t1._asyncComplete\$1(_this);\n"
-"        return t1;\n"
-"      }\n"
-"      t3 = \$.Zone__current;\n"
-"      _future = new A._Future(t3, t2);\n"
-"      t1.timer = null;\n"
-"      if (onTimeout == null)\n"
-"        t1.timer = A.Timer_Timer(timeLimit, new A._Future_timeout_closure(_future, timeLimit));\n"
-"      else\n"
-"        t1.timer = A.Timer_Timer(timeLimit, new A._Future_timeout_closure0(_this, _future, t3, t3._registerCallbackZoned\$1\$2(t3, t2._eval\$1(\"1/()\")._as(onTimeout), t2._eval\$1(\"1/\"))));\n"
-"      _this.then\$1\$2\$onError(new A._Future_timeout_closure1(t1, _this, _future), new A._Future_timeout_closure2(t1, _future), type\$.Null);\n"
-"      return _future;\n"
-"    },\n"
-"    \$isFuture: 1\n"
-"  };\n"
-"  A._Future__addListener_closure.prototype = {\n"
-"    call\$0() {\n"
-"      A._Future__propagateToListeners(this.\$this, this.listener);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__prependListeners_closure.prototype = {\n"
-"    call\$0() {\n"
-"      A._Future__propagateToListeners(this.\$this, this._box_0.listeners);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__chainCoreFuture_closure.prototype = {\n"
-"    call\$0() {\n"
-"      A._Future__chainCoreFuture(this._box_0.source, this.target, true);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__asyncCompleteWithValue_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._completeWithValue\$1(this.value);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__asyncCompleteErrorObject_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._completeErrorObject\$1(this.error);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {\n"
-"    call\$0() {\n"
-"      var e, s, t1, t2, exception, t3, originalSource, joinedResult, _this = this, completeResult = null;\n"
-"      try {\n"
-"        t1 = _this._box_0.listener;\n"
-"        t2 = t1.result._zone;\n"
-"        completeResult = t2._runZoned\$1\$2(t2, type\$.dynamic_Function._as(t1.callback), type\$.dynamic);\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        if (_this.hasError && type\$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e) {\n"
-"          t1 = _this._box_0;\n"
-"          t1.listenerValueOrError = type\$.AsyncError._as(_this._box_1.source._resultOrListeners);\n"
-"        } else {\n"
-"          t1 = e;\n"
-"          t2 = s;\n"
-"          if (t2 == null)\n"
-"            t2 = A.AsyncError_defaultStackTrace(t1);\n"
-"          t3 = _this._box_0;\n"
-"          t3.listenerValueOrError = new A.AsyncError(t1, t2);\n"
-"          t1 = t3;\n"
-"        }\n"
-"        t1.listenerHasError = true;\n"
-"        return;\n"
-"      }\n"
-"      if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) {\n"
-"        if ((completeResult._state & 16) !== 0) {\n"
-"          t1 = _this._box_0;\n"
-"          t1.listenerValueOrError = type\$.AsyncError._as(completeResult._resultOrListeners);\n"
-"          t1.listenerHasError = true;\n"
-"        }\n"
-"        return;\n"
-"      }\n"
-"      if (completeResult instanceof A._Future) {\n"
-"        originalSource = _this._box_1.source;\n"
-"        joinedResult = new A._Future(originalSource._zone, originalSource.\$ti);\n"
-"        completeResult.then\$1\$2\$onError(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(joinedResult, originalSource), new A._Future__propagateToListeners_handleWhenCompleteCallback_closure0(joinedResult), type\$.void);\n"
-"        t1 = _this._box_0;\n"
-"        t1.listenerValueOrError = joinedResult;\n"
-"        t1.listenerHasError = false;\n"
-"      }\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {\n"
-"    call\$1(__wc0_formal) {\n"
-"      this.joinedResult._completeWithResultOf\$1(this.originalSource);\n"
-"    },\n"
-"    \$signature: 6\n"
-"  };\n"
-"  A._Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = {\n"
-"    call\$2(e, s) {\n"
-"      A._asObject(e);\n"
-"      type\$.StackTrace._as(s);\n"
-"      this.joinedResult._completeErrorObject\$1(new A.AsyncError(e, s));\n"
-"    },\n"
-"    \$signature: 8\n"
-"  };\n"
-"  A._Future__propagateToListeners_handleValueCallback.prototype = {\n"
-"    call\$0() {\n"
-"      var e, s, t1, t2, t3, t4, t5, t6, exception;\n"
-"      try {\n"
-"        t1 = this._box_0;\n"
-"        t2 = t1.listener;\n"
-"        t3 = t2.\$ti;\n"
-"        t4 = t3._precomputed1;\n"
-"        t5 = t4._as(this.sourceResult);\n"
-"        t6 = t2.result._zone;\n"
-"        t1.listenerValueOrError = t6._runUnaryZoned\$2\$3(t6, t3._eval\$1(\"2/(1)\")._as(t2.callback), t5, t3._eval\$1(\"2/\"), t4);\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = e;\n"
-"        t2 = s;\n"
-"        if (t2 == null)\n"
-"          t2 = A.AsyncError_defaultStackTrace(t1);\n"
-"        t3 = this._box_0;\n"
-"        t3.listenerValueOrError = new A.AsyncError(t1, t2);\n"
-"        t3.listenerHasError = true;\n"
-"      }\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future__propagateToListeners_handleError.prototype = {\n"
-"    call\$0() {\n"
-"      var asyncError, e, s, t1, exception, t2, t3, _this = this;\n"
-"      try {\n"
-"        asyncError = type\$.AsyncError._as(_this._box_1.source._resultOrListeners);\n"
-"        t1 = _this._box_0;\n"
-"        if (t1.listener.matchesErrorTest\$1(asyncError) && t1.listener.errorCallback != null) {\n"
-"          t1.listenerValueOrError = t1.listener.handleError\$1(asyncError);\n"
-"          t1.listenerHasError = false;\n"
-"        }\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = type\$.AsyncError._as(_this._box_1.source._resultOrListeners);\n"
-"        if (t1.error === e) {\n"
-"          t2 = _this._box_0;\n"
-"          t2.listenerValueOrError = t1;\n"
-"          t1 = t2;\n"
-"        } else {\n"
-"          t1 = e;\n"
-"          t2 = s;\n"
-"          if (t2 == null)\n"
-"            t2 = A.AsyncError_defaultStackTrace(t1);\n"
-"          t3 = _this._box_0;\n"
-"          t3.listenerValueOrError = new A.AsyncError(t1, t2);\n"
-"          t1 = t3;\n"
-"        }\n"
-"        t1.listenerHasError = true;\n"
-"      }\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future_timeout_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = A.StackTrace_current();\n"
-"      this._future._completeErrorObject\$1(new A.AsyncError(new A.TimeoutException(\"Future not completed\", this.timeLimit), t1));\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future_timeout_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      var e, s, t1, t2, exception, _this = this;\n"
-"      try {\n"
-"        t1 = _this.zone;\n"
-"        t2 = _this.\$this.\$ti;\n"
-"        _this._future._complete\$1(t1._runZoned\$1\$2(t1, t2._eval\$1(\"1/()\")._as(_this.onTimeoutHandler), t2._eval\$1(\"1/\")));\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = e;\n"
-"        t2 = s;\n"
-"        if (t2 == null)\n"
-"          t2 = A.AsyncError_defaultStackTrace(t1);\n"
-"        _this._future._completeErrorObject\$1(new A.AsyncError(t1, t2));\n"
-"      }\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._Future_timeout_closure1.prototype = {\n"
-"    call\$1(v) {\n"
-"      var t1;\n"
-"      this.\$this.\$ti._precomputed1._as(v);\n"
-"      t1 = this._box_0;\n"
-"      if (t1.timer.get\$isActive()) {\n"
-"        t1.timer.cancel\$0();\n"
-"        this._future._completeWithValue\$1(v);\n"
-"      }\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"Null(1)\");\n"
-"    }\n"
-"  };\n"
-"  A._Future_timeout_closure2.prototype = {\n"
-"    call\$2(e, s) {\n"
-"      var t1;\n"
-"      A._asObject(e);\n"
-"      type\$.StackTrace._as(s);\n"
-"      t1 = this._box_0;\n"
-"      if (t1.timer.get\$isActive()) {\n"
-"        t1.timer.cancel\$0();\n"
-"        this._future._completeErrorObject\$1(new A.AsyncError(e, s));\n"
-"      }\n"
-"    },\n"
-"    \$signature: 8\n"
-"  };\n"
-"  A._AsyncCallbackEntry.prototype = {};\n"
-"  A.Stream.prototype = {\n"
-"    get\$length(_) {\n"
-"      var t1 = {},\n"
-"        future = new A._Future(\$.Zone__current, type\$._Future_int);\n"
-"      t1.count = 0;\n"
-"      this.listen\$4\$cancelOnError\$onDone\$onError(new A.Stream_length_closure(t1, this), true, new A.Stream_length_closure0(t1, future), future.get\$_completeError());\n"
-"      return future;\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var future = new A._Future(\$.Zone__current, A._instanceType(this)._eval\$1(\"_Future<Stream.T>\")),\n"
-"        subscription = this.listen\$4\$cancelOnError\$onDone\$onError(null, true, new A.Stream_first_closure(future), future.get\$_completeError());\n"
-"      subscription.onData\$1(new A.Stream_first_closure0(this, subscription, future));\n"
-"      return future;\n"
-"    }\n"
-"  };\n"
-"  A.Stream_length_closure.prototype = {\n"
-"    call\$1(__wc0_formal) {\n"
-"      A._instanceType(this.\$this)._eval\$1(\"Stream.T\")._as(__wc0_formal);\n"
-"      ++this._box_0.count;\n"
-"    },\n"
-"    \$signature() {\n"
-"      return A._instanceType(this.\$this)._eval\$1(\"~(Stream.T)\");\n"
-"    }\n"
-"  };\n"
-"  A.Stream_length_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      this.future._complete\$1(this._box_0.count);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Stream_first_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1,\n"
-"        stack = A.StackTrace_current(),\n"
-"        error = new A.StateError(\"No element\");\n"
-"      A.Primitives_trySetStackTrace(error, stack);\n"
-"      t1 = A._interceptError(error, stack);\n"
-"      if (t1 == null)\n"
-"        t1 = new A.AsyncError(error, stack);\n"
-"      this.future._completeErrorObject\$1(t1);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Stream_first_closure0.prototype = {\n"
-"    call\$1(value) {\n"
-"      A._cancelAndValue(this.subscription, this.future, A._instanceType(this.\$this)._eval\$1(\"Stream.T\")._as(value));\n"
-"    },\n"
-"    \$signature() {\n"
-"      return A._instanceType(this.\$this)._eval\$1(\"~(Stream.T)\");\n"
-"    }\n"
-"  };\n"
-"  A.StreamView.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      return this._stream.listen\$4\$cancelOnError\$onDone\$onError(A._instanceType(this)._eval\$1(\"~(StreamView.T)?\")._as(onData), cancelOnError, type\$.nullable_void_Function._as(onDone), onError);\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._StreamController.prototype = {\n"
-"    get\$_pendingEvents() {\n"
-"      var t1, _this = this;\n"
-"      if ((_this._state & 8) === 0)\n"
-"        return A._instanceType(_this)._eval\$1(\"_PendingEvents<1>?\")._as(_this._varData);\n"
-"      t1 = A._instanceType(_this);\n"
-"      return t1._eval\$1(\"_PendingEvents<1>?\")._as(t1._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(_this._varData).get\$_varData());\n"
-"    },\n"
-"    _ensurePendingEvents\$0() {\n"
-"      var events, t1, _this = this;\n"
-"      if ((_this._state & 8) === 0) {\n"
-"        events = _this._varData;\n"
-"        if (events == null)\n"
-"          events = _this._varData = new A._PendingEvents(A._instanceType(_this)._eval\$1(\"_PendingEvents<1>\"));\n"
-"        return A._instanceType(_this)._eval\$1(\"_PendingEvents<1>\")._as(events);\n"
-"      }\n"
-"      t1 = A._instanceType(_this);\n"
-"      events = t1._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(_this._varData).get\$_varData();\n"
-"      return t1._eval\$1(\"_PendingEvents<1>\")._as(events);\n"
-"    },\n"
-"    get\$_subscription() {\n"
-"      var varData = this._varData;\n"
-"      if ((this._state & 8) !== 0)\n"
-"        varData = type\$._StreamControllerAddStreamState_nullable_Object._as(varData).get\$_varData();\n"
-"      return A._instanceType(this)._eval\$1(\"_ControllerSubscription<1>\")._as(varData);\n"
-"    },\n"
-"    _badEventState\$0() {\n"
-"      if ((this._state & 4) !== 0)\n"
-"        return new A.StateError(\"Cannot add event after closing\");\n"
-"      return new A.StateError(\"Cannot add event while adding a stream\");\n"
-"    },\n"
-"    _ensureDoneFuture\$0() {\n"
-"      var t1 = this._doneFuture;\n"
-"      if (t1 == null)\n"
-"        t1 = this._doneFuture = (this._state & 2) !== 0 ? \$.\$get\$Future__nullFuture() : new A._Future(\$.Zone__current, type\$._Future_void);\n"
-"      return t1;\n"
-"    },\n"
-"    add\$1(_, value) {\n"
-"      var _this = this;\n"
-"      A._instanceType(_this)._precomputed1._as(value);\n"
-"      if (_this._state >= 4)\n"
-"        throw A.wrapException(_this._badEventState\$0());\n"
-"      _this._add\$1(value);\n"
-"    },\n"
-"    close\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 4) !== 0)\n"
-"        return _this._ensureDoneFuture\$0();\n"
-"      if (t1 >= 4)\n"
-"        throw A.wrapException(_this._badEventState\$0());\n"
-"      _this._closeUnchecked\$0();\n"
-"      return _this._ensureDoneFuture\$0();\n"
-"    },\n"
-"    _closeUnchecked\$0() {\n"
-"      var t1 = this._state |= 4;\n"
-"      if ((t1 & 1) !== 0)\n"
-"        this._sendDone\$0();\n"
-"      else if ((t1 & 3) === 0)\n"
-"        this._ensurePendingEvents\$0().add\$1(0, B.C__DelayedDone);\n"
-"    },\n"
-"    _add\$1(value) {\n"
-"      var t2, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(value);\n"
-"      t2 = _this._state;\n"
-"      if ((t2 & 1) !== 0)\n"
-"        _this._sendData\$1(value);\n"
-"      else if ((t2 & 3) === 0)\n"
-"        _this._ensurePendingEvents\$0().add\$1(0, new A._DelayedData(value, t1._eval\$1(\"_DelayedData<1>\")));\n"
-"    },\n"
-"    _subscribe\$4(onData, onError, onDone, cancelOnError) {\n"
-"      var t2, t3, t4, t5, t6, t7, subscription, pendingEvents, addState, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._eval\$1(\"~(1)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      if ((_this._state & 3) !== 0)\n"
-"        throw A.wrapException(A.StateError\$(\"Stream has already been listened to.\"));\n"
-"      t2 = \$.Zone__current;\n"
-"      t3 = cancelOnError ? 1 : 0;\n"
-"      t4 = onError != null ? 32 : 0;\n"
-"      t5 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._precomputed1);\n"
-"      t6 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);\n"
-"      t7 = onDone == null ? A.async___nullDoneHandler\$closure() : onDone;\n"
-"      subscription = new A._ControllerSubscription(_this, t5, t6, t2._registerCallbackZoned\$1\$2(t2, type\$.void_Function._as(t7), type\$.void), t2, t3 | t4, t1._eval\$1(\"_ControllerSubscription<1>\"));\n"
-"      pendingEvents = _this.get\$_pendingEvents();\n"
-"      if (((_this._state |= 1) & 8) !== 0) {\n"
-"        addState = t1._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(_this._varData);\n"
-"        addState.set\$_varData(subscription);\n"
-"        addState.resume\$0();\n"
-"      } else\n"
-"        _this._varData = subscription;\n"
-"      subscription._setPendingEvents\$1(pendingEvents);\n"
-"      subscription._guardCallback\$1(new A._StreamController__subscribe_closure(_this));\n"
-"      return subscription;\n"
-"    },\n"
-"    _recordCancel\$1(subscription) {\n"
-"      var result, onCancel, cancelResult, e, s, exception, result0, t2, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._eval\$1(\"StreamSubscription<1>\")._as(subscription);\n"
-"      result = null;\n"
-"      if ((_this._state & 8) !== 0)\n"
-"        result = t1._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(_this._varData).cancel\$0();\n"
-"      _this._varData = null;\n"
-"      _this._state = _this._state & 4294967286 | 2;\n"
-"      onCancel = _this.onCancel;\n"
-"      if (onCancel != null)\n"
-"        if (result == null)\n"
-"          try {\n"
-"            cancelResult = onCancel.call\$0();\n"
-"            if (cancelResult instanceof A._Future)\n"
-"              result = cancelResult;\n"
-"          } catch (exception) {\n"
-"            e = A.unwrapException(exception);\n"
-"            s = A.getTraceFromException(exception);\n"
-"            result0 = new A._Future(\$.Zone__current, type\$._Future_void);\n"
-"            t1 = A._asObject(e);\n"
-"            t2 = type\$.StackTrace._as(s);\n"
-"            result0._asyncCompleteErrorObject\$1(new A.AsyncError(t1, t2));\n"
-"            result = result0;\n"
-"          }\n"
-"        else\n"
-"          result = result.whenComplete\$1(onCancel);\n"
-"      t1 = new A._StreamController__recordCancel_complete(_this);\n"
-"      if (result != null)\n"
-"        result = result.whenComplete\$1(t1);\n"
-"      else\n"
-"        t1.call\$0();\n"
-"      return result;\n"
-"    },\n"
-"    set\$onListen(onListen) {\n"
-"      this.onListen = type\$.nullable_void_Function._as(onListen);\n"
-"    },\n"
-"    set\$onResume(onResume) {\n"
-"      this.onResume = type\$.nullable_void_Function._as(onResume);\n"
-"    },\n"
-"    set\$onCancel(onCancel) {\n"
-"      this.onCancel = type\$.nullable_void_Function._as(onCancel);\n"
-"    },\n"
-"    \$isStreamSink: 1,\n"
-"    \$isStreamController: 1,\n"
-"    \$is_StreamControllerLifecycle: 1,\n"
-"    \$is_EventSink: 1,\n"
-"    \$is_EventDispatch: 1\n"
-"  };\n"
-"  A._StreamController__subscribe_closure.prototype = {\n"
-"    call\$0() {\n"
-"      A._runGuarded(this.\$this.onListen);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._StreamController__recordCancel_complete.prototype = {\n"
-"    call\$0() {\n"
-"      var doneFuture = this.\$this._doneFuture;\n"
-"      if (doneFuture != null && (doneFuture._state & 30) === 0)\n"
-"        doneFuture._asyncComplete\$1(null);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._AsyncStreamControllerDispatch.prototype = {\n"
-"    _sendData\$1(data) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      t1._precomputed1._as(data);\n"
-"      this.get\$_subscription()._addPending\$1(new A._DelayedData(data, t1._eval\$1(\"_DelayedData<1>\")));\n"
-"    },\n"
-"    _sendError\$2(error, stackTrace) {\n"
-"      this.get\$_subscription()._addPending\$1(new A._DelayedError(error, stackTrace));\n"
-"    },\n"
-"    _sendDone\$0() {\n"
-"      this.get\$_subscription()._addPending\$1(B.C__DelayedDone);\n"
-"    }\n"
-"  };\n"
-"  A._AsyncStreamController.prototype = {};\n"
-"  A._ControllerStream.prototype = {\n"
-"    get\$hashCode(_) {\n"
-"      return (A.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      return other instanceof A._ControllerStream && other._controller === this._controller;\n"
-"    }\n"
-"  };\n"
-"  A._ControllerSubscription.prototype = {\n"
-"    _onCancel\$0() {\n"
-"      return this._controller._recordCancel\$1(this);\n"
-"    },\n"
-"    _onPause\$0() {\n"
-"      var t1 = this._controller,\n"
-"        t2 = A._instanceType(t1);\n"
-"      t2._eval\$1(\"StreamSubscription<1>\")._as(this);\n"
-"      if ((t1._state & 8) !== 0)\n"
-"        t2._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(t1._varData).pause\$0();\n"
-"      A._runGuarded(t1.onPause);\n"
-"    },\n"
-"    _onResume\$0() {\n"
-"      var t1 = this._controller,\n"
-"        t2 = A._instanceType(t1);\n"
-"      t2._eval\$1(\"StreamSubscription<1>\")._as(this);\n"
-"      if ((t1._state & 8) !== 0)\n"
-"        t2._eval\$1(\"_StreamControllerAddStreamState<1>\")._as(t1._varData).resume\$0();\n"
-"      A._runGuarded(t1.onResume);\n"
-"    }\n"
-"  };\n"
-"  A._StreamSinkWrapper.prototype = {\$isStreamSink: 1};\n"
-"  A._BufferingStreamSubscription.prototype = {\n"
-"    _setPendingEvents\$1(pendingEvents) {\n"
-"      var _this = this;\n"
-"      A._instanceType(_this)._eval\$1(\"_PendingEvents<_BufferingStreamSubscription.T>?\")._as(pendingEvents);\n"
-"      if (pendingEvents == null)\n"
-"        return;\n"
-"      _this._pending = pendingEvents;\n"
-"      if (pendingEvents.lastPendingEvent != null) {\n"
-"        _this._state = (_this._state | 128) >>> 0;\n"
-"        pendingEvents.schedule\$1(_this);\n"
-"      }\n"
-"    },\n"
-"    onData\$1(handleData) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      this._async\$_onData = A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval\$1(\"~(_BufferingStreamSubscription.T)?\")._as(handleData), t1._eval\$1(\"_BufferingStreamSubscription.T\"));\n"
-"    },\n"
-"    onError\$1(handleError) {\n"
-"      var _this = this,\n"
-"        t1 = _this._state;\n"
-"      if (handleError == null)\n"
-"        _this._state = (t1 & 4294967263) >>> 0;\n"
-"      else\n"
-"        _this._state = (t1 | 32) >>> 0;\n"
-"      _this._onError = A._BufferingStreamSubscription__registerErrorHandler(_this._zone, handleError);\n"
-"    },\n"
-"    pause\$1(resumeSignal) {\n"
-"      var t2, t3, _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 8) !== 0)\n"
-"        return;\n"
-"      t2 = (t1 + 256 | 4) >>> 0;\n"
-"      _this._state = t2;\n"
-"      if (t1 < 256) {\n"
-"        t3 = _this._pending;\n"
-"        if (t3 != null)\n"
-"          if (t3._state === 1)\n"
-"            t3._state = 3;\n"
-"      }\n"
-"      if ((t1 & 4) === 0 && (t2 & 64) === 0)\n"
-"        _this._guardCallback\$1(_this.get\$_onPause());\n"
-"    },\n"
-"    pause\$0() {\n"
-"      return this.pause\$1(null);\n"
-"    },\n"
-"    resume\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 8) !== 0)\n"
-"        return;\n"
-"      if (t1 >= 256) {\n"
-"        t1 = _this._state = t1 - 256;\n"
-"        if (t1 < 256)\n"
-"          if ((t1 & 128) !== 0 && _this._pending.lastPendingEvent != null)\n"
-"            _this._pending.schedule\$1(_this);\n"
-"          else {\n"
-"            t1 = (t1 & 4294967291) >>> 0;\n"
-"            _this._state = t1;\n"
-"            if ((t1 & 64) === 0)\n"
-"              _this._guardCallback\$1(_this.get\$_onResume());\n"
-"          }\n"
-"      }\n"
-"    },\n"
-"    cancel\$0() {\n"
-"      var _this = this,\n"
-"        t1 = (_this._state & 4294967279) >>> 0;\n"
-"      _this._state = t1;\n"
-"      if ((t1 & 8) === 0)\n"
-"        _this._cancel\$0();\n"
-"      t1 = _this._cancelFuture;\n"
-"      return t1 == null ? \$.\$get\$Future__nullFuture() : t1;\n"
-"    },\n"
-"    asFuture\$1\$1(futureValue, \$E) {\n"
-"      var result, _this = this, t1 = {};\n"
-"      t1.resultValue = null;\n"
-"      if (!\$E._is(null))\n"
-"        throw A.wrapException(A.ArgumentError\$notNull(\"futureValue\"));\n"
-"      \$E._as(futureValue);\n"
-"      t1.resultValue = futureValue;\n"
-"      result = new A._Future(\$.Zone__current, \$E._eval\$1(\"_Future<0>\"));\n"
-"      _this._onDone = new A._BufferingStreamSubscription_asFuture_closure(t1, result);\n"
-"      _this._state = (_this._state | 32) >>> 0;\n"
-"      _this._onError = new A._BufferingStreamSubscription_asFuture_closure0(_this, result);\n"
-"      return result;\n"
-"    },\n"
-"    _cancel\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this._state = (_this._state | 8) >>> 0;\n"
-"      if ((t1 & 128) !== 0) {\n"
-"        t2 = _this._pending;\n"
-"        if (t2._state === 1)\n"
-"          t2._state = 3;\n"
-"      }\n"
-"      if ((t1 & 64) === 0)\n"
-"        _this._pending = null;\n"
-"      _this._cancelFuture = _this._onCancel\$0();\n"
-"    },\n"
-"    _add\$1(data) {\n"
-"      var t2, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._eval\$1(\"_BufferingStreamSubscription.T\")._as(data);\n"
-"      t2 = _this._state;\n"
-"      if ((t2 & 8) !== 0)\n"
-"        return;\n"
-"      if (t2 < 64)\n"
-"        _this._sendData\$1(data);\n"
-"      else\n"
-"        _this._addPending\$1(new A._DelayedData(data, t1._eval\$1(\"_DelayedData<_BufferingStreamSubscription.T>\")));\n"
-"    },\n"
-"    _addError\$2(error, stackTrace) {\n"
-"      var t1;\n"
-"      if (type\$.Error._is(error))\n"
-"        A.Primitives_trySetStackTrace(error, stackTrace);\n"
-"      t1 = this._state;\n"
-"      if ((t1 & 8) !== 0)\n"
-"        return;\n"
-"      if (t1 < 64)\n"
-"        this._sendError\$2(error, stackTrace);\n"
-"      else\n"
-"        this._addPending\$1(new A._DelayedError(error, stackTrace));\n"
-"    },\n"
-"    _close\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 8) !== 0)\n"
-"        return;\n"
-"      t1 = (t1 | 2) >>> 0;\n"
-"      _this._state = t1;\n"
-"      if (t1 < 64)\n"
-"        _this._sendDone\$0();\n"
-"      else\n"
-"        _this._addPending\$1(B.C__DelayedDone);\n"
-"    },\n"
-"    _onPause\$0() {\n"
-"    },\n"
-"    _onResume\$0() {\n"
-"    },\n"
-"    _onCancel\$0() {\n"
-"      return null;\n"
-"    },\n"
-"    _addPending\$1(\$event) {\n"
-"      var t1, _this = this,\n"
-"        pending = _this._pending;\n"
-"      if (pending == null)\n"
-"        pending = _this._pending = new A._PendingEvents(A._instanceType(_this)._eval\$1(\"_PendingEvents<_BufferingStreamSubscription.T>\"));\n"
-"      pending.add\$1(0, \$event);\n"
-"      t1 = _this._state;\n"
-"      if ((t1 & 128) === 0) {\n"
-"        t1 = (t1 | 128) >>> 0;\n"
-"        _this._state = t1;\n"
-"        if (t1 < 256)\n"
-"          pending.schedule\$1(_this);\n"
-"      }\n"
-"    },\n"
-"    _sendData\$1(data) {\n"
-"      var t2, _this = this,\n"
-"        t1 = A._instanceType(_this)._eval\$1(\"_BufferingStreamSubscription.T\");\n"
-"      t1._as(data);\n"
-"      t2 = _this._state;\n"
-"      _this._state = (t2 | 64) >>> 0;\n"
-"      _this._zone.runUnaryGuarded\$1\$2(_this._async\$_onData, data, t1);\n"
-"      _this._state = (_this._state & 4294967231) >>> 0;\n"
-"      _this._checkState\$1((t2 & 4) !== 0);\n"
-"    },\n"
-"    _sendError\$2(error, stackTrace) {\n"
-"      var cancelFuture, _this = this,\n"
-"        t1 = _this._state,\n"
-"        t2 = new A._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);\n"
-"      if ((t1 & 1) !== 0) {\n"
-"        _this._state = (t1 | 16) >>> 0;\n"
-"        _this._cancel\$0();\n"
-"        cancelFuture = _this._cancelFuture;\n"
-"        if (cancelFuture != null && cancelFuture !== \$.\$get\$Future__nullFuture())\n"
-"          cancelFuture.whenComplete\$1(t2);\n"
-"        else\n"
-"          t2.call\$0();\n"
-"      } else {\n"
-"        t2.call\$0();\n"
-"        _this._checkState\$1((t1 & 4) !== 0);\n"
-"      }\n"
-"    },\n"
-"    _sendDone\$0() {\n"
-"      var cancelFuture, _this = this,\n"
-"        t1 = new A._BufferingStreamSubscription__sendDone_sendDone(_this);\n"
-"      _this._cancel\$0();\n"
-"      _this._state = (_this._state | 16) >>> 0;\n"
-"      cancelFuture = _this._cancelFuture;\n"
-"      if (cancelFuture != null && cancelFuture !== \$.\$get\$Future__nullFuture())\n"
-"        cancelFuture.whenComplete\$1(t1);\n"
-"      else\n"
-"        t1.call\$0();\n"
-"    },\n"
-"    _guardCallback\$1(callback) {\n"
-"      var t1, _this = this;\n"
-"      type\$.void_Function._as(callback);\n"
-"      t1 = _this._state;\n"
-"      _this._state = (t1 | 64) >>> 0;\n"
-"      callback.call\$0();\n"
-"      _this._state = (_this._state & 4294967231) >>> 0;\n"
-"      _this._checkState\$1((t1 & 4) !== 0);\n"
-"    },\n"
-"    _checkState\$1(wasInputPaused) {\n"
-"      var t2, isInputPaused, _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 128) !== 0 && _this._pending.lastPendingEvent == null) {\n"
-"        t1 = _this._state = (t1 & 4294967167) >>> 0;\n"
-"        t2 = false;\n"
-"        if ((t1 & 4) !== 0)\n"
-"          if (t1 < 256) {\n"
-"            t2 = _this._pending;\n"
-"            t2 = t2 == null ? null : t2.lastPendingEvent == null;\n"
-"            t2 = t2 !== false;\n"
-"          }\n"
-"        if (t2) {\n"
-"          t1 = (t1 & 4294967291) >>> 0;\n"
-"          _this._state = t1;\n"
-"        }\n"
-"      }\n"
-"      for (;; wasInputPaused = isInputPaused) {\n"
-"        if ((t1 & 8) !== 0) {\n"
-"          _this._pending = null;\n"
-"          return;\n"
-"        }\n"
-"        isInputPaused = (t1 & 4) !== 0;\n"
-"        if (wasInputPaused === isInputPaused)\n"
-"          break;\n"
-"        _this._state = (t1 ^ 64) >>> 0;\n"
-"        if (isInputPaused)\n"
-"          _this._onPause\$0();\n"
-"        else\n"
-"          _this._onResume\$0();\n"
-"        t1 = (_this._state & 4294967231) >>> 0;\n"
-"        _this._state = t1;\n"
-"      }\n"
-"      if ((t1 & 128) !== 0 && t1 < 256)\n"
-"        _this._pending.schedule\$1(_this);\n"
-"    },\n"
-"    \$isStreamSubscription: 1,\n"
-"    \$is_EventSink: 1,\n"
-"    \$is_EventDispatch: 1\n"
-"  };\n"
-"  A._BufferingStreamSubscription_asFuture_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.result._complete\$1(this._box_0.resultValue);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._BufferingStreamSubscription_asFuture_closure0.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      var cancelFuture, t1;\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      cancelFuture = this.\$this.cancel\$0();\n"
-"      t1 = this.result;\n"
-"      if (cancelFuture !== \$.\$get\$Future__nullFuture())\n"
-"        cancelFuture.whenComplete\$1(new A._BufferingStreamSubscription_asFuture__closure(t1, error, stackTrace));\n"
-"      else\n"
-"        t1._completeErrorObject\$1(new A.AsyncError(error, stackTrace));\n"
-"    },\n"
-"    \$signature: 8\n"
-"  };\n"
-"  A._BufferingStreamSubscription_asFuture__closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.result._completeErrorObject\$1(new A.AsyncError(this.error, this.stackTrace));\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A._BufferingStreamSubscription__sendError_sendError.prototype = {\n"
-"    call\$0() {\n"
-"      var onError, t3, t4,\n"
-"        t1 = this.\$this,\n"
-"        t2 = t1._state;\n"
-"      if ((t2 & 8) !== 0 && (t2 & 16) === 0)\n"
-"        return;\n"
-"      t1._state = (t2 | 64) >>> 0;\n"
-"      onError = t1._onError;\n"
-"      t2 = this.error;\n"
-"      t3 = type\$.Object;\n"
-"      t4 = t1._zone;\n"
-"      if (type\$.void_Function_Object_StackTrace._is(onError))\n"
-"        t4.runBinaryGuarded\$2\$3(onError, t2, this.stackTrace, t3, type\$.StackTrace);\n"
-"      else\n"
-"        t4.runUnaryGuarded\$1\$2(type\$.void_Function_Object._as(onError), t2, t3);\n"
-"      t1._state = (t1._state & 4294967231) >>> 0;\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._BufferingStreamSubscription__sendDone_sendDone.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this,\n"
-"        t2 = t1._state;\n"
-"      if ((t2 & 16) === 0)\n"
-"        return;\n"
-"      t1._state = (t2 | 74) >>> 0;\n"
-"      t1._zone.runGuarded\$1(t1._onDone);\n"
-"      t1._state = (t1._state & 4294967231) >>> 0;\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._StreamImpl.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(1)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      return this._controller._subscribe\$4(t1._eval\$1(\"~(1)?\")._as(onData), onError, onDone, cancelOnError === true);\n"
-"    },\n"
-"    listen\$1(onData) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, null, null);\n"
-"    },\n"
-"    listen\$2\$onError(onData, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, null, onError);\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    },\n"
-"    listen\$2\$cancelOnError(onData, cancelOnError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, null, null);\n"
-"    },\n"
-"    listen\$2\$onDone(onData, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._DelayedEvent.prototype = {\n"
-"    set\$next(next) {\n"
-"      this.next = type\$.nullable__DelayedEvent_dynamic._as(next);\n"
-"    },\n"
-"    get\$next() {\n"
-"      return this.next;\n"
-"    }\n"
-"  };\n"
-"  A._DelayedData.prototype = {\n"
-"    perform\$1(dispatch) {\n"
-"      this.\$ti._eval\$1(\"_EventDispatch<1>\")._as(dispatch)._sendData\$1(this.value);\n"
-"    }\n"
-"  };\n"
-"  A._DelayedError.prototype = {\n"
-"    perform\$1(dispatch) {\n"
-"      dispatch._sendError\$2(this.error, this.stackTrace);\n"
-"    }\n"
-"  };\n"
-"  A._DelayedDone.prototype = {\n"
-"    perform\$1(dispatch) {\n"
-"      dispatch._sendDone\$0();\n"
-"    },\n"
-"    get\$next() {\n"
-"      return null;\n"
-"    },\n"
-"    set\$next(__wc0_formal) {\n"
-"      throw A.wrapException(A.StateError\$(\"No events after a done.\"));\n"
-"    },\n"
-"    \$is_DelayedEvent: 1\n"
-"  };\n"
-"  A._PendingEvents.prototype = {\n"
-"    schedule\$1(dispatch) {\n"
-"      var t1, _this = this;\n"
-"      _this.\$ti._eval\$1(\"_EventDispatch<1>\")._as(dispatch);\n"
-"      t1 = _this._state;\n"
-"      if (t1 === 1)\n"
-"        return;\n"
-"      if (t1 >= 1) {\n"
-"        _this._state = 1;\n"
-"        return;\n"
-"      }\n"
-"      A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch));\n"
-"      _this._state = 1;\n"
-"    },\n"
-"    add\$1(_, \$event) {\n"
-"      var _this = this,\n"
-"        lastEvent = _this.lastPendingEvent;\n"
-"      if (lastEvent == null)\n"
-"        _this.firstPendingEvent = _this.lastPendingEvent = \$event;\n"
-"      else {\n"
-"        lastEvent.set\$next(\$event);\n"
-"        _this.lastPendingEvent = \$event;\n"
-"      }\n"
-"    }\n"
-"  };\n"
-"  A._PendingEvents_schedule_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t2, \$event, nextEvent,\n"
-"        t1 = this.\$this,\n"
-"        oldState = t1._state;\n"
-"      t1._state = 0;\n"
-"      if (oldState === 3)\n"
-"        return;\n"
-"      t2 = t1.\$ti._eval\$1(\"_EventDispatch<1>\")._as(this.dispatch);\n"
-"      \$event = t1.firstPendingEvent;\n"
-"      nextEvent = \$event.get\$next();\n"
-"      t1.firstPendingEvent = nextEvent;\n"
-"      if (nextEvent == null)\n"
-"        t1.lastPendingEvent = null;\n"
-"      \$event.perform\$1(t2);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._DoneStreamSubscription.prototype = {\n"
-"    onData\$1(handleData) {\n"
-"      this.\$ti._eval\$1(\"~(1)?\")._as(handleData);\n"
-"    },\n"
-"    onError\$1(handleError) {\n"
-"    },\n"
-"    pause\$1(resumeSignal) {\n"
-"      var t1 = this._state;\n"
-"      if (t1 >= 0)\n"
-"        this._state = t1 + 2;\n"
-"    },\n"
-"    pause\$0() {\n"
-"      return this.pause\$1(null);\n"
-"    },\n"
-"    resume\$0() {\n"
-"      var _this = this,\n"
-"        resumeState = _this._state - 2;\n"
-"      if (resumeState < 0)\n"
-"        return;\n"
-"      if (resumeState === 0) {\n"
-"        _this._state = 1;\n"
-"        A.scheduleMicrotask(_this.get\$_onMicrotask());\n"
-"      } else\n"
-"        _this._state = resumeState;\n"
-"    },\n"
-"    cancel\$0() {\n"
-"      this._state = -1;\n"
-"      this._onDone = null;\n"
-"      return \$.\$get\$Future__nullFuture();\n"
-"    },\n"
-"    _onMicrotask\$0() {\n"
-"      var _0_0, _this = this,\n"
-"        unscheduledState = _this._state - 1;\n"
-"      if (unscheduledState === 0) {\n"
-"        _this._state = -1;\n"
-"        _0_0 = _this._onDone;\n"
-"        if (_0_0 != null) {\n"
-"          _this._onDone = null;\n"
-"          _this._zone.runGuarded\$1(_0_0);\n"
-"        }\n"
-"      } else\n"
-"        _this._state = unscheduledState;\n"
-"    },\n"
-"    \$isStreamSubscription: 1\n"
-"  };\n"
-"  A._StreamIterator.prototype = {};\n"
-"  A._EmptyStream.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var t2,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(1)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      t2 = \$.Zone__current;\n"
-"      t1 = new A._DoneStreamSubscription(t2, t1._eval\$1(\"_DoneStreamSubscription<1>\"));\n"
-"      A.scheduleMicrotask(t1.get\$_onMicrotask());\n"
-"      if (onDone != null)\n"
-"        t1._onDone = t2._registerCallbackZoned\$1\$2(t2, type\$.void_Function._as(onDone), type\$.void);\n"
-"      return t1;\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._MultiStream.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var controller, _null = null,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(1)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      controller = new A._MultiStreamController(_null, _null, _null, _null, t1._eval\$1(\"_MultiStreamController<1>\"));\n"
-"      controller.set\$onListen(new A._MultiStream_listen_closure(this, controller));\n"
-"      return controller._subscribe\$4(onData, onError, onDone, cancelOnError === true);\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._MultiStream_listen_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._onListen.call\$1(this.controller);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._MultiStreamController.prototype = {\n"
-"    closeSync\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._state;\n"
-"      if ((t1 & 4) !== 0)\n"
-"        return;\n"
-"      if (t1 >= 4)\n"
-"        throw A.wrapException(_this._badEventState\$0());\n"
-"      t1 |= 4;\n"
-"      _this._state = t1;\n"
-"      if ((t1 & 1) !== 0)\n"
-"        _this.get\$_subscription()._close\$0();\n"
-"    },\n"
-"    \$isMultiStreamController: 1\n"
-"  };\n"
-"  A._cancelAndValue_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return this.future._complete\$1(this.value);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._ForwardingStream.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var t2, t3, t4, t5, t6, t7,\n"
-"        t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(2)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      t2 = \$.Zone__current;\n"
-"      t3 = cancelOnError === true ? 1 : 0;\n"
-"      t4 = onError != null ? 32 : 0;\n"
-"      t5 = A._BufferingStreamSubscription__registerDataHandler(t2, onData, t1._rest[1]);\n"
-"      t6 = A._BufferingStreamSubscription__registerErrorHandler(t2, onError);\n"
-"      t7 = onDone == null ? A.async___nullDoneHandler\$closure() : onDone;\n"
-"      t1 = new A._ForwardingStreamSubscription(this, t5, t6, t2._registerCallbackZoned\$1\$2(t2, type\$.void_Function._as(t7), type\$.void), t2, t3 | t4, t1._eval\$1(\"_ForwardingStreamSubscription<1,2>\"));\n"
-"      t1._subscription = this._source.listen\$3\$onDone\$onError(t1.get\$_handleData(), t1.get\$_handleDone(), t1.get\$_handleError());\n"
-"      return t1;\n"
-"    },\n"
-"    listen\$2\$onError(onData, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, null, onError);\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._ForwardingStreamSubscription.prototype = {\n"
-"    _add\$1(data) {\n"
-"      this.\$ti._rest[1]._as(data);\n"
-"      if ((this._state & 2) !== 0)\n"
-"        return;\n"
-"      this.super\$_BufferingStreamSubscription\$_add(data);\n"
-"    },\n"
-"    _addError\$2(error, stackTrace) {\n"
-"      if ((this._state & 2) !== 0)\n"
-"        return;\n"
-"      this.super\$_BufferingStreamSubscription\$_addError(error, stackTrace);\n"
-"    },\n"
-"    _onPause\$0() {\n"
-"      var t1 = this._subscription;\n"
-"      if (t1 != null)\n"
-"        t1.pause\$0();\n"
-"    },\n"
-"    _onResume\$0() {\n"
-"      var t1 = this._subscription;\n"
-"      if (t1 != null)\n"
-"        t1.resume\$0();\n"
-"    },\n"
-"    _onCancel\$0() {\n"
-"      var subscription = this._subscription;\n"
-"      if (subscription != null) {\n"
-"        this._subscription = null;\n"
-"        return subscription.cancel\$0();\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    _handleData\$1(data) {\n"
-"      this._stream._handleData\$2(this.\$ti._precomputed1._as(data), this);\n"
-"    },\n"
-"    _handleError\$2(error, stackTrace) {\n"
-"      var t1;\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      t1 = error == null ? A._asObject(error) : error;\n"
-"      this._stream.\$ti._eval\$1(\"_EventSink<2>\")._as(this)._addError\$2(t1, stackTrace);\n"
-"    },\n"
-"    _handleDone\$0() {\n"
-"      this._stream.\$ti._eval\$1(\"_EventSink<2>\")._as(this)._close\$0();\n"
-"    }\n"
-"  };\n"
-"  A._MapStream.prototype = {\n"
-"    _handleData\$2(inputEvent, sink) {\n"
-"      var outputEvent, e, s, exception, error, stackTrace, replacement,\n"
-"        t1 = this.\$ti;\n"
-"      t1._precomputed1._as(inputEvent);\n"
-"      t1._eval\$1(\"_EventSink<2>\")._as(sink);\n"
-"      outputEvent = null;\n"
-"      try {\n"
-"        outputEvent = this._transform.call\$1(inputEvent);\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        error = e;\n"
-"        stackTrace = s;\n"
-"        replacement = A._interceptError(error, stackTrace);\n"
-"        if (replacement != null) {\n"
-"          error = replacement.error;\n"
-"          stackTrace = replacement.stackTrace;\n"
-"        }\n"
-"        sink._addError\$2(error, stackTrace);\n"
-"        return;\n"
-"      }\n"
-"      sink._add\$1(outputEvent);\n"
-"    }\n"
-"  };\n"
-"  A._ZoneHandleUncaughtError.prototype = {};\n"
-"  A.Zone.prototype = {\n"
-"    run\$1\$1(action, \$R) {\n"
-"      return this._runZoned\$1\$2(this, \$R._eval\$1(\"0()\")._as(action), \$R);\n"
-"    },\n"
-"    runGuarded\$1(action) {\n"
-"      var e, s, t1, exception, _this = this;\n"
-"      type\$.void_Function._as(action);\n"
-"      try {\n"
-"        t1 = _this._runZoned\$1\$2(_this, action, type\$.void);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        _this._handleUncaughtErrorZoned\$3(_this, e, s);\n"
-"      }\n"
-"    },\n"
-"    runUnaryGuarded\$1\$2(action, argument, \$T) {\n"
-"      var e, s, t1, exception, _this = this;\n"
-"      \$T._eval\$1(\"~(0)\")._as(action);\n"
-"      \$T._as(argument);\n"
-"      try {\n"
-"        t1 = _this._runUnaryZoned\$2\$3(_this, action, argument, type\$.void, \$T);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        _this._handleUncaughtErrorZoned\$3(_this, e, s);\n"
-"      }\n"
-"    },\n"
-"    runBinaryGuarded\$2\$3(action, argument1, argument2, \$T1, \$T2) {\n"
-"      var e, s, t1, exception, _this = this;\n"
-"      \$T1._eval\$1(\"@<0>\")._bind\$1(\$T2)._eval\$1(\"~(1,2)\")._as(action);\n"
-"      \$T1._as(argument1);\n"
-"      \$T2._as(argument2);\n"
-"      try {\n"
-"        t1 = _this._runBinaryZoned\$3\$4(_this, action, argument1, argument2, type\$.void, \$T1, \$T2);\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        _this._handleUncaughtErrorZoned\$3(_this, e, s);\n"
-"      }\n"
-"    },\n"
-"    bindCallback\$1\$1(callback, \$R) {\n"
-"      return new A.Zone_bindCallback_closure(this, this._registerCallbackZoned\$1\$2(this, \$R._eval\$1(\"0()\")._as(callback), \$R), \$R);\n"
-"    },\n"
-"    bindCallbackGuarded\$1(callback) {\n"
-"      return new A.Zone_bindCallbackGuarded_closure(this, this._registerCallbackZoned\$1\$2(this, type\$.void_Function._as(callback), type\$.void));\n"
-"    },\n"
-"    bindUnaryCallbackGuarded\$1\$1(callback, \$T) {\n"
-"      return new A.Zone_bindUnaryCallbackGuarded_closure(this, this._registerUnaryCallbackZoned\$2\$2(this, \$T._eval\$1(\"~(0)\")._as(callback), type\$.void, \$T), \$T);\n"
-"    },\n"
-"    get\$_parentDelegate() {\n"
-"      var t1 = this._parent;\n"
-"      t1 = t1 == null ? null : t1._delegate;\n"
-"      return t1 == null ? \$.\$get\$_rootDelegate() : t1;\n"
-"    },\n"
-"    _handleUncaughtErrorZoned\$3(zone, error, stackTrace) {\n"
-"      var implementation, implZone, parentZone, currentZone, e, s, t1, exception;\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      implementation = this._handleUncaughtErrorFunction;\n"
-"      if (implementation == null) {\n"
-"        A._rootHandleUncaughtError(error, stackTrace);\n"
-"        return;\n"
-"      }\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone._parent;\n"
-"      t1.toString;\n"
-"      parentZone = t1;\n"
-"      currentZone = \$.Zone__current;\n"
-"      try {\n"
-"        \$.Zone__current = parentZone;\n"
-"        t1 = implZone.get\$_parentDelegate();\n"
-"        implementation.\$function.call\$5(implZone, t1, zone, error, stackTrace);\n"
-"        \$.Zone__current = currentZone;\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        \$.Zone__current = currentZone;\n"
-"        t1 = error === e ? stackTrace : s;\n"
-"        parentZone._handleUncaughtErrorZoned\$3(implZone, e, t1);\n"
-"      }\n"
-"    },\n"
-"    _forkZoned\$3(zone, specification, zoneValues) {\n"
-"      var implZone, t1,\n"
-"        implementation = this._forkFunction;\n"
-"      if (implementation == null)\n"
-"        return A._rootFork(zone, specification, zoneValues);\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$5(implZone, t1, zone, specification, zoneValues);\n"
-"    },\n"
-"    _runZoned\$1\$2(zone, callback, \$R) {\n"
-"      var oldZone, implementation, t1, implZone;\n"
-"      \$R._eval\$1(\"0()\")._as(callback);\n"
-"      implementation = this._runFunction;\n"
-"      if (implementation == null) {\n"
-"        t1 = \$.Zone__current;\n"
-"        if (t1 === zone)\n"
-"          return callback.call\$0();\n"
-"        oldZone = t1;\n"
-"        \$.Zone__current = zone;\n"
-"        try {\n"
-"          t1 = callback.call\$0();\n"
-"          return t1;\n"
-"        } finally {\n"
-"          \$.Zone__current = oldZone;\n"
-"        }\n"
-"      }\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$1\$4(implZone, t1, zone, callback, \$R);\n"
-"    },\n"
-"    _runUnaryZoned\$2\$3(zone, callback, argument, \$R, \$T) {\n"
-"      var oldZone, implementation, t1, implZone;\n"
-"      \$R._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"1(2)\")._as(callback);\n"
-"      \$T._as(argument);\n"
-"      implementation = this._runUnaryFunction;\n"
-"      if (implementation == null) {\n"
-"        t1 = \$.Zone__current;\n"
-"        if (t1 === zone)\n"
-"          return callback.call\$1(argument);\n"
-"        oldZone = t1;\n"
-"        \$.Zone__current = zone;\n"
-"        try {\n"
-"          t1 = callback.call\$1(argument);\n"
-"          return t1;\n"
-"        } finally {\n"
-"          \$.Zone__current = oldZone;\n"
-"        }\n"
-"      }\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$2\$5(implZone, t1, zone, callback, argument, \$R, \$T);\n"
-"    },\n"
-"    _runBinaryZoned\$3\$4(zone, callback, argument1, argument2, \$R, \$T1, \$T2) {\n"
-"      var oldZone, implementation, t1, implZone;\n"
-"      \$R._eval\$1(\"@<0>\")._bind\$1(\$T1)._bind\$1(\$T2)._eval\$1(\"1(2,3)\")._as(callback);\n"
-"      \$T1._as(argument1);\n"
-"      \$T2._as(argument2);\n"
-"      implementation = this._runBinaryFunction;\n"
-"      if (implementation == null) {\n"
-"        t1 = \$.Zone__current;\n"
-"        if (t1 === zone)\n"
-"          return callback.call\$2(argument1, argument2);\n"
-"        oldZone = t1;\n"
-"        \$.Zone__current = zone;\n"
-"        try {\n"
-"          t1 = callback.call\$2(argument1, argument2);\n"
-"          return t1;\n"
-"        } finally {\n"
-"          \$.Zone__current = oldZone;\n"
-"        }\n"
-"      }\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$3\$6(implZone, t1, zone, callback, argument1, argument2, \$R, \$T1, \$T2);\n"
-"    },\n"
-"    _registerCallbackZoned\$1\$2(zone, callback, \$R) {\n"
-"      var implementation, implZone, t1;\n"
-"      \$R._eval\$1(\"0()\")._as(callback);\n"
-"      implementation = this._registerCallbackFunction;\n"
-"      if (implementation == null)\n"
-"        return callback;\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$1\$4(implZone, t1, zone, callback, \$R);\n"
-"    },\n"
-"    _registerUnaryCallbackZoned\$2\$2(zone, callback, \$R, \$T) {\n"
-"      var implementation, implZone, t1;\n"
-"      \$R._eval\$1(\"@<0>\")._bind\$1(\$T)._eval\$1(\"1(2)\")._as(callback);\n"
-"      implementation = this._registerUnaryCallbackFunction;\n"
-"      if (implementation == null)\n"
-"        return callback;\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$2\$4(implZone, t1, zone, callback, \$R, \$T);\n"
-"    },\n"
-"    _registerBinaryCallbackZoned\$3\$2(zone, callback, \$R, \$T1, \$T2) {\n"
-"      var implementation, implZone, t1;\n"
-"      \$R._eval\$1(\"@<0>\")._bind\$1(\$T1)._bind\$1(\$T2)._eval\$1(\"1(2,3)\")._as(callback);\n"
-"      implementation = this._registerBinaryCallbackFunction;\n"
-"      if (implementation == null)\n"
-"        return callback;\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$3\$4(implZone, t1, zone, callback, \$R, \$T1, \$T2);\n"
-"    },\n"
-"    _errorCallbackZoned\$3(zone, error, stackTrace) {\n"
-"      var implZone, t1,\n"
-"        implementation = this._errorCallbackFunction;\n"
-"      if (implementation == null)\n"
-"        return null;\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$5(implZone, t1, zone, error, stackTrace);\n"
-"    },\n"
-"    _scheduleMicrotaskZoned\$2(zone, callback) {\n"
-"      var implementation, implZone, t1;\n"
-"      type\$.void_Function._as(callback);\n"
-"      implementation = this._scheduleMicrotaskFunction;\n"
-"      if (implementation == null) {\n"
-"        A._rootScheduleMicrotask(zone, callback);\n"
-"        return;\n"
-"      }\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      implementation.\$function.call\$4(implZone, t1, zone, callback);\n"
-"    },\n"
-"    _createTimerZoned\$3(zone, duration, callback) {\n"
-"      var implementation, implZone, t1;\n"
-"      type\$.void_Function._as(callback);\n"
-"      implementation = this._createTimerFunction;\n"
-"      if (implementation == null)\n"
-"        return A.Timer__createTimer(duration, B.Zone_jYP !== zone ? zone.bindCallback\$1\$1(callback, type\$.void) : callback);\n"
-"      implZone = implementation.zone;\n"
-"      t1 = implZone.get\$_parentDelegate();\n"
-"      return implementation.\$function.call\$5(implZone, t1, zone, duration, callback);\n"
-"    }\n"
-"  };\n"
-"  A.Zone_bindCallback_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this;\n"
-"      return t1._runZoned\$1\$2(t1, this.registered, this.R);\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.R._eval\$1(\"0()\");\n"
-"    }\n"
-"  };\n"
-"  A.Zone_bindCallbackGuarded_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return this.\$this.runGuarded\$1(this.registered);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Zone_bindUnaryCallbackGuarded_closure.prototype = {\n"
-"    call\$1(argument) {\n"
-"      var t1 = this.T;\n"
-"      return this.\$this.runUnaryGuarded\$1\$2(this.registered, t1._as(argument), t1);\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.T._eval\$1(\"~(0)\");\n"
-"    }\n"
-"  };\n"
-"  A.runZonedGuarded_errorHandler.prototype = {\n"
-"    call\$5(\$self, \$parent, zone, error, stackTrace) {\n"
-"      var e, s, t1, exception, t2;\n"
-"      try {\n"
-"        t1 = this.parentZone;\n"
-"        t1._runBinaryZoned\$3\$4(t1, type\$.void_Function_Object_StackTrace._as(this.onError), error, stackTrace, type\$.void, type\$.Object, type\$.StackTrace);\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        s = A.getTraceFromException(exception);\n"
-"        t1 = e === error ? stackTrace : s;\n"
-"        t2 = A._asObject(e);\n"
-"        type\$.StackTrace._as(t1);\n"
-"        \$parent._zone._handleUncaughtErrorZoned\$3(zone, t2, t1);\n"
-"      }\n"
-"    },\n"
-"    \$signature: 75\n"
-"  };\n"
-"  A.ZoneDelegate.prototype = {};\n"
-"  A._rootHandleUncaughtError_closure.prototype = {\n"
-"    call\$0() {\n"
-"      A.Error_throwWithStackTrace(this.error, this.stackTrace);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.ZoneSpecification.prototype = {};\n"
-"  A._HashMap.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._collection\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._collection\$_length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this._collection\$_length !== 0;\n"
-"    },\n"
-"    get\$keys() {\n"
-"      return new A._HashMapKeyIterable(this, A._instanceType(this)._eval\$1(\"_HashMapKeyIterable<1>\"));\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      var strings, nums;\n"
-"      if (typeof key == \"string\" && key !== \"__proto__\") {\n"
-"        strings = this._collection\$_strings;\n"
-"        return strings == null ? false : strings[key] != null;\n"
-"      } else if (typeof key == \"number\" && (key & 1073741823) === key) {\n"
-"        nums = this._collection\$_nums;\n"
-"        return nums == null ? false : nums[key] != null;\n"
-"      } else\n"
-"        return this._containsKey\$1(key);\n"
-"    },\n"
-"    _containsKey\$1(key) {\n"
-"      var rest = this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        return false;\n"
-"      return this._findBucketIndex\$2(this._collection\$_getBucket\$2(rest, key), key) >= 0;\n"
-"    },\n"
-"    \$index(_, key) {\n"
-"      var strings, t1, nums;\n"
-"      if (typeof key == \"string\" && key !== \"__proto__\") {\n"
-"        strings = this._collection\$_strings;\n"
-"        t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key);\n"
-"        return t1;\n"
-"      } else if (typeof key == \"number\" && (key & 1073741823) === key) {\n"
-"        nums = this._collection\$_nums;\n"
-"        t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key);\n"
-"        return t1;\n"
-"      } else\n"
-"        return this._get\$1(key);\n"
-"    },\n"
-"    _get\$1(key) {\n"
-"      var bucket, index,\n"
-"        rest = this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        return null;\n"
-"      bucket = this._collection\$_getBucket\$2(rest, key);\n"
-"      index = this._findBucketIndex\$2(bucket, key);\n"
-"      return index < 0 ? null : bucket[index + 1];\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var strings, nums, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      if (typeof key == \"string\" && key !== \"__proto__\") {\n"
-"        strings = _this._collection\$_strings;\n"
-"        _this._collection\$_addHashTableEntry\$3(strings == null ? _this._collection\$_strings = A._HashMap__newHashTable() : strings, key, value);\n"
-"      } else if (typeof key == \"number\" && (key & 1073741823) === key) {\n"
-"        nums = _this._collection\$_nums;\n"
-"        _this._collection\$_addHashTableEntry\$3(nums == null ? _this._collection\$_nums = A._HashMap__newHashTable() : nums, key, value);\n"
-"      } else\n"
-"        _this._set\$2(key, value);\n"
-"    },\n"
-"    _set\$2(key, value) {\n"
-"      var rest, hash, bucket, index, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      rest = _this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        rest = _this._collection\$_rest = A._HashMap__newHashTable();\n"
-"      hash = _this._computeHashCode\$1(key);\n"
-"      bucket = rest[hash];\n"
-"      if (bucket == null) {\n"
-"        A._HashMap__setTableEntry(rest, hash, [key, value]);\n"
-"        ++_this._collection\$_length;\n"
-"        _this._collection\$_keys = null;\n"
-"      } else {\n"
-"        index = _this._findBucketIndex\$2(bucket, key);\n"
-"        if (index >= 0)\n"
-"          bucket[index + 1] = value;\n"
-"        else {\n"
-"          bucket.push(key, value);\n"
-"          ++_this._collection\$_length;\n"
-"          _this._collection\$_keys = null;\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    forEach\$1(_, action) {\n"
-"      var keys, \$length, t2, i, key, t3, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._eval\$1(\"~(1,2)\")._as(action);\n"
-"      keys = _this._computeKeys\$0();\n"
-"      for (\$length = keys.length, t2 = t1._precomputed1, t1 = t1._rest[1], i = 0; i < \$length; ++i) {\n"
-"        key = keys[i];\n"
-"        t2._as(key);\n"
-"        t3 = _this.\$index(0, key);\n"
-"        action.call\$2(key, t3 == null ? t1._as(t3) : t3);\n"
-"        if (keys !== _this._collection\$_keys)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"      }\n"
-"    },\n"
-"    _computeKeys\$0() {\n"
-"      var strings, index, names, entries, i, nums, rest, bucket, \$length, i0, _this = this,\n"
-"        result = _this._collection\$_keys;\n"
-"      if (result != null)\n"
-"        return result;\n"
-"      result = A.List_List\$filled(_this._collection\$_length, null, false, type\$.dynamic);\n"
-"      strings = _this._collection\$_strings;\n"
-"      index = 0;\n"
-"      if (strings != null) {\n"
-"        names = Object.getOwnPropertyNames(strings);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          result[index] = names[i];\n"
-"          ++index;\n"
-"        }\n"
-"      }\n"
-"      nums = _this._collection\$_nums;\n"
-"      if (nums != null) {\n"
-"        names = Object.getOwnPropertyNames(nums);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          result[index] = +names[i];\n"
-"          ++index;\n"
-"        }\n"
-"      }\n"
-"      rest = _this._collection\$_rest;\n"
-"      if (rest != null) {\n"
-"        names = Object.getOwnPropertyNames(rest);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          bucket = rest[names[i]];\n"
-"          \$length = bucket.length;\n"
-"          for (i0 = 0; i0 < \$length; i0 += 2) {\n"
-"            result[index] = bucket[i0];\n"
-"            ++index;\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      return _this._collection\$_keys = result;\n"
-"    },\n"
-"    _collection\$_addHashTableEntry\$3(table, key, value) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      if (table[key] == null) {\n"
-"        ++this._collection\$_length;\n"
-"        this._collection\$_keys = null;\n"
-"      }\n"
-"      A._HashMap__setTableEntry(table, key, value);\n"
-"    },\n"
-"    _computeHashCode\$1(key) {\n"
-"      return J.get\$hashCode\$(key) & 1073741823;\n"
-"    },\n"
-"    _collection\$_getBucket\$2(table, key) {\n"
-"      return table[this._computeHashCode\$1(key)];\n"
-"    },\n"
-"    _findBucketIndex\$2(bucket, key) {\n"
-"      var \$length, i;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (i = 0; i < \$length; i += 2)\n"
-"        if (J.\$eq\$(bucket[i], key))\n"
-"          return i;\n"
-"      return -1;\n"
-"    },\n"
-"    \$isHashMap: 1\n"
-"  };\n"
-"  A._IdentityHashMap.prototype = {\n"
-"    _computeHashCode\$1(key) {\n"
-"      return A.objectHashCode(key) & 1073741823;\n"
-"    },\n"
-"    _findBucketIndex\$2(bucket, key) {\n"
-"      var \$length, i, t1;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (i = 0; i < \$length; i += 2) {\n"
-"        t1 = bucket[i];\n"
-"        if (t1 == null ? key == null : t1 === key)\n"
-"          return i;\n"
-"      }\n"
-"      return -1;\n"
-"    }\n"
-"  };\n"
-"  A._HashMapKeyIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._map._collection\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._map._collection\$_length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this._map._collection\$_length !== 0;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this._map;\n"
-"      return new A._HashMapKeyIterator(t1, t1._computeKeys\$0(), this.\$ti._eval\$1(\"_HashMapKeyIterator<1>\"));\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      return this._map.containsKey\$1(element);\n"
-"    }\n"
-"  };\n"
-"  A._HashMapKeyIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this._collection\$_current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var _this = this,\n"
-"        keys = _this._collection\$_keys,\n"
-"        offset = _this._offset,\n"
-"        t1 = _this._map;\n"
-"      if (keys !== t1._collection\$_keys)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      else if (offset >= keys.length) {\n"
-"        _this._collection\$_current = null;\n"
-"        return false;\n"
-"      } else {\n"
-"        _this._collection\$_current = keys[offset];\n"
-"        _this._offset = offset + 1;\n"
-"        return true;\n"
-"      }\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A._LinkedCustomHashMap.prototype = {\n"
-"    \$index(_, key) {\n"
-"      if (!this._validKey.call\$1(key))\n"
-"        return null;\n"
-"      return this.super\$JsLinkedHashMap\$internalGet(key);\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var t1 = this.\$ti;\n"
-"      this.super\$JsLinkedHashMap\$internalSet(t1._precomputed1._as(key), t1._rest[1]._as(value));\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      if (!this._validKey.call\$1(key))\n"
-"        return false;\n"
-"      return this.super\$JsLinkedHashMap\$internalContainsKey(key);\n"
-"    },\n"
-"    internalComputeHashCode\$1(key) {\n"
-"      return this._hashCode.call\$1(this.\$ti._precomputed1._as(key)) & 1073741823;\n"
-"    },\n"
-"    internalFindBucketIndex\$2(bucket, key) {\n"
-"      var \$length, t1, t2, i;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (t1 = this.\$ti._precomputed1, t2 = this._equals, i = 0; i < \$length; ++i)\n"
-"        if (t2.call\$2(t1._as(bucket[i].hashMapCellKey), t1._as(key)))\n"
-"          return i;\n"
-"      return -1;\n"
-"    }\n"
-"  };\n"
-"  A._LinkedCustomHashMap_closure.prototype = {\n"
-"    call\$1(v) {\n"
-"      return this.K._is(v);\n"
-"    },\n"
-"    \$signature: 32\n"
-"  };\n"
-"  A._HashSet.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      return new A._HashSetIterator(this, this._computeElements\$0(), A._instanceType(this)._eval\$1(\"_HashSetIterator<1>\"));\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this._collection\$_length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._collection\$_length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this._collection\$_length !== 0;\n"
-"    },\n"
-"    contains\$1(_, object) {\n"
-"      var strings, nums;\n"
-"      if (typeof object == \"string\" && object !== \"__proto__\") {\n"
-"        strings = this._collection\$_strings;\n"
-"        return strings == null ? false : strings[object] != null;\n"
-"      } else if (typeof object == \"number\" && (object & 1073741823) === object) {\n"
-"        nums = this._collection\$_nums;\n"
-"        return nums == null ? false : nums[object] != null;\n"
-"      } else\n"
-"        return this._contains\$1(object);\n"
-"    },\n"
-"    _contains\$1(object) {\n"
-"      var rest = this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        return false;\n"
-"      return this._findBucketIndex\$2(rest[this._computeHashCode\$1(object)], object) >= 0;\n"
-"    },\n"
-"    add\$1(_, element) {\n"
-"      var strings, nums, _this = this;\n"
-"      A._instanceType(_this)._precomputed1._as(element);\n"
-"      if (typeof element == \"string\" && element !== \"__proto__\") {\n"
-"        strings = _this._collection\$_strings;\n"
-"        return _this._collection\$_addHashTableEntry\$2(strings == null ? _this._collection\$_strings = A._HashSet__newHashTable() : strings, element);\n"
-"      } else if (typeof element == \"number\" && (element & 1073741823) === element) {\n"
-"        nums = _this._collection\$_nums;\n"
-"        return _this._collection\$_addHashTableEntry\$2(nums == null ? _this._collection\$_nums = A._HashSet__newHashTable() : nums, element);\n"
-"      } else\n"
-"        return _this._collection\$_add\$1(element);\n"
-"    },\n"
-"    _collection\$_add\$1(element) {\n"
-"      var rest, hash, bucket, _this = this;\n"
-"      A._instanceType(_this)._precomputed1._as(element);\n"
-"      rest = _this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        rest = _this._collection\$_rest = A._HashSet__newHashTable();\n"
-"      hash = _this._computeHashCode\$1(element);\n"
-"      bucket = rest[hash];\n"
-"      if (bucket == null)\n"
-"        rest[hash] = [element];\n"
-"      else {\n"
-"        if (_this._findBucketIndex\$2(bucket, element) >= 0)\n"
-"          return false;\n"
-"        bucket.push(element);\n"
-"      }\n"
-"      ++_this._collection\$_length;\n"
-"      _this._collection\$_elements = null;\n"
-"      return true;\n"
-"    },\n"
-"    remove\$1(_, object) {\n"
-"      var _this = this;\n"
-"      if (typeof object == \"string\" && object !== \"__proto__\")\n"
-"        return _this._removeHashTableEntry\$2(_this._collection\$_strings, object);\n"
-"      else if (typeof object == \"number\" && (object & 1073741823) === object)\n"
-"        return _this._removeHashTableEntry\$2(_this._collection\$_nums, object);\n"
-"      else\n"
-"        return _this._remove\$1(object);\n"
-"    },\n"
-"    _remove\$1(object) {\n"
-"      var hash, bucket, index, _this = this,\n"
-"        rest = _this._collection\$_rest;\n"
-"      if (rest == null)\n"
-"        return false;\n"
-"      hash = _this._computeHashCode\$1(object);\n"
-"      bucket = rest[hash];\n"
-"      index = _this._findBucketIndex\$2(bucket, object);\n"
-"      if (index < 0)\n"
-"        return false;\n"
-"      --_this._collection\$_length;\n"
-"      _this._collection\$_elements = null;\n"
-"      bucket.splice(index, 1);\n"
-"      if (0 === bucket.length)\n"
-"        delete rest[hash];\n"
-"      return true;\n"
-"    },\n"
-"    _computeElements\$0() {\n"
-"      var strings, index, names, entries, i, nums, rest, bucket, \$length, i0, _this = this,\n"
-"        result = _this._collection\$_elements;\n"
-"      if (result != null)\n"
-"        return result;\n"
-"      result = A.List_List\$filled(_this._collection\$_length, null, false, type\$.dynamic);\n"
-"      strings = _this._collection\$_strings;\n"
-"      index = 0;\n"
-"      if (strings != null) {\n"
-"        names = Object.getOwnPropertyNames(strings);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          result[index] = names[i];\n"
-"          ++index;\n"
-"        }\n"
-"      }\n"
-"      nums = _this._collection\$_nums;\n"
-"      if (nums != null) {\n"
-"        names = Object.getOwnPropertyNames(nums);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          result[index] = +names[i];\n"
-"          ++index;\n"
-"        }\n"
-"      }\n"
-"      rest = _this._collection\$_rest;\n"
-"      if (rest != null) {\n"
-"        names = Object.getOwnPropertyNames(rest);\n"
-"        entries = names.length;\n"
-"        for (i = 0; i < entries; ++i) {\n"
-"          bucket = rest[names[i]];\n"
-"          \$length = bucket.length;\n"
-"          for (i0 = 0; i0 < \$length; ++i0) {\n"
-"            result[index] = bucket[i0];\n"
-"            ++index;\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      return _this._collection\$_elements = result;\n"
-"    },\n"
-"    _collection\$_addHashTableEntry\$2(table, element) {\n"
-"      A._instanceType(this)._precomputed1._as(element);\n"
-"      if (table[element] != null)\n"
-"        return false;\n"
-"      table[element] = 0;\n"
-"      ++this._collection\$_length;\n"
-"      this._collection\$_elements = null;\n"
-"      return true;\n"
-"    },\n"
-"    _removeHashTableEntry\$2(table, element) {\n"
-"      if (table != null && table[element] != null) {\n"
-"        delete table[element];\n"
-"        --this._collection\$_length;\n"
-"        this._collection\$_elements = null;\n"
-"        return true;\n"
-"      } else\n"
-"        return false;\n"
-"    },\n"
-"    _computeHashCode\$1(element) {\n"
-"      return J.get\$hashCode\$(element) & 1073741823;\n"
-"    },\n"
-"    _findBucketIndex\$2(bucket, element) {\n"
-"      var \$length, i;\n"
-"      if (bucket == null)\n"
-"        return -1;\n"
-"      \$length = bucket.length;\n"
-"      for (i = 0; i < \$length; ++i)\n"
-"        if (J.\$eq\$(bucket[i], element))\n"
-"          return i;\n"
-"      return -1;\n"
-"    }\n"
-"  };\n"
-"  A._HashSetIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this._collection\$_current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var _this = this,\n"
-"        elements = _this._collection\$_elements,\n"
-"        offset = _this._offset,\n"
-"        t1 = _this._set;\n"
-"      if (elements !== t1._collection\$_elements)\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t1));\n"
-"      else if (offset >= elements.length) {\n"
-"        _this._collection\$_current = null;\n"
-"        return false;\n"
-"      } else {\n"
-"        _this._collection\$_current = elements[offset];\n"
-"        _this._offset = offset + 1;\n"
-"        return true;\n"
-"      }\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.ListBase.prototype = {\n"
-"    get\$iterator(receiver) {\n"
-"      return new A.ListIterator(receiver, this.get\$length(receiver), A.instanceType(receiver)._eval\$1(\"ListIterator<ListBase.E>\"));\n"
-"    },\n"
-"    elementAt\$1(receiver, index) {\n"
-"      return this.\$index(receiver, index);\n"
-"    },\n"
-"    get\$isEmpty(receiver) {\n"
-"      return this.get\$length(receiver) === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(receiver) {\n"
-"      return !this.get\$isEmpty(receiver);\n"
-"    },\n"
-"    get\$first(receiver) {\n"
-"      if (this.get\$length(receiver) === 0)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      return this.\$index(receiver, 0);\n"
-"    },\n"
-"    contains\$1(receiver, element) {\n"
-"      var i,\n"
-"        \$length = this.get\$length(receiver);\n"
-"      for (i = 0; i < \$length; ++i) {\n"
-"        if (J.\$eq\$(this.\$index(receiver, i), element))\n"
-"          return true;\n"
-"        if (\$length !== this.get\$length(receiver))\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(receiver));\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    map\$1\$1(receiver, f, \$T) {\n"
-"      var t1 = A.instanceType(receiver);\n"
-"      return new A.MappedListIterable(receiver, t1._bind\$1(\$T)._eval\$1(\"1(ListBase.E)\")._as(f), t1._eval\$1(\"@<ListBase.E>\")._bind\$1(\$T)._eval\$1(\"MappedListIterable<1,2>\"));\n"
-"    },\n"
-"    skip\$1(receiver, count) {\n"
-"      return A.SubListIterable\$(receiver, count, null, A.instanceType(receiver)._eval\$1(\"ListBase.E\"));\n"
-"    },\n"
-"    take\$1(receiver, count) {\n"
-"      return A.SubListIterable\$(receiver, 0, A.checkNotNullable(count, \"count\", type\$.int), A.instanceType(receiver)._eval\$1(\"ListBase.E\"));\n"
-"    },\n"
-"    add\$1(receiver, element) {\n"
-"      var t1;\n"
-"      A.instanceType(receiver)._eval\$1(\"ListBase.E\")._as(element);\n"
-"      t1 = this.get\$length(receiver);\n"
-"      this.set\$length(receiver, t1 + 1);\n"
-"      this.\$indexSet(receiver, t1, element);\n"
-"    },\n"
-"    cast\$1\$0(receiver, \$R) {\n"
-"      return new A.CastList(receiver, A.instanceType(receiver)._eval\$1(\"@<ListBase.E>\")._bind\$1(\$R)._eval\$1(\"CastList<1,2>\"));\n"
-"    },\n"
-"    sort\$1(receiver, compare) {\n"
-"      var t2,\n"
-"        t1 = A.instanceType(receiver);\n"
-"      t1._eval\$1(\"int(ListBase.E,ListBase.E)?\")._as(compare);\n"
-"      t2 = compare == null ? A.collection_ListBase__compareAny\$closure() : compare;\n"
-"      A.Sort__doSort(receiver, 0, this.get\$length(receiver) - 1, t2, t1._eval\$1(\"ListBase.E\"));\n"
-"    },\n"
-"    fillRange\$3(receiver, start, end, fill) {\n"
-"      var value, i,\n"
-"        t1 = A.instanceType(receiver);\n"
-"      t1._eval\$1(\"ListBase.E?\")._as(fill);\n"
-"      value = fill == null ? t1._eval\$1(\"ListBase.E\")._as(fill) : fill;\n"
-"      A.RangeError_checkValidRange(start, end, this.get\$length(receiver));\n"
-"      for (i = start; i < end; ++i)\n"
-"        this.\$indexSet(receiver, i, value);\n"
-"    },\n"
-"    setRange\$4(receiver, start, end, iterable, skipCount) {\n"
-"      var \$length, otherStart, otherList, t1, i;\n"
-"      A.instanceType(receiver)._eval\$1(\"Iterable<ListBase.E>\")._as(iterable);\n"
-"      A.RangeError_checkValidRange(start, end, this.get\$length(receiver));\n"
-"      \$length = end - start;\n"
-"      if (\$length === 0)\n"
-"        return;\n"
-"      A.RangeError_checkNotNegative(skipCount, \"skipCount\");\n"
-"      if (type\$.List_dynamic._is(iterable)) {\n"
-"        otherStart = skipCount;\n"
-"        otherList = iterable;\n"
-"      } else {\n"
-"        otherList = J.skip\$1\$ax(iterable, skipCount).toList\$1\$growable(0, false);\n"
-"        otherStart = 0;\n"
-"      }\n"
-"      t1 = J.getInterceptor\$asx(otherList);\n"
-"      if (otherStart + \$length > t1.get\$length(otherList))\n"
-"        throw A.wrapException(A.IterableElementError_tooFew());\n"
-"      if (otherStart < start)\n"
-"        for (i = \$length - 1; i >= 0; --i)\n"
-"          this.\$indexSet(receiver, start + i, t1.\$index(otherList, otherStart + i));\n"
-"      else\n"
-"        for (i = 0; i < \$length; ++i)\n"
-"          this.\$indexSet(receiver, start + i, t1.\$index(otherList, otherStart + i));\n"
-"    },\n"
-"    toString\$0(receiver) {\n"
-"      return A.Iterable_iterableToFullString(receiver, \"[\", \"]\");\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isIterable: 1,\n"
-"    \$isList: 1\n"
-"  };\n"
-"  A.MapBase.prototype = {\n"
-"    cast\$2\$0(_, \$RK, \$RV) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      return A.Map_castFrom(this, t1._eval\$1(\"MapBase.K\"), t1._eval\$1(\"MapBase.V\"), \$RK, \$RV);\n"
-"    },\n"
-"    forEach\$1(_, action) {\n"
-"      var t2, key, t3,\n"
-"        t1 = A._instanceType(this);\n"
-"      t1._eval\$1(\"~(MapBase.K,MapBase.V)\")._as(action);\n"
-"      for (t2 = this.get\$keys(), t2 = t2.get\$iterator(t2), t1 = t1._eval\$1(\"MapBase.V\"); t2.moveNext\$0();) {\n"
-"        key = t2.get\$current();\n"
-"        t3 = this.\$index(0, key);\n"
-"        action.call\$2(key, t3 == null ? t1._as(t3) : t3);\n"
-"      }\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      return this.get\$keys().contains\$1(0, key);\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      var t1 = this.get\$keys();\n"
-"      return t1.get\$length(t1);\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      var t1 = this.get\$keys();\n"
-"      return t1.get\$isEmpty(t1);\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      var t1 = this.get\$keys();\n"
-"      return t1.get\$isNotEmpty(t1);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.MapBase_mapToString(this);\n"
-"    },\n"
-"    \$isMap: 1\n"
-"  };\n"
-"  A.MapBase_mapToString_closure.prototype = {\n"
-"    call\$2(k, v) {\n"
-"      var t2,\n"
-"        t1 = this._box_0;\n"
-"      if (!t1.first)\n"
-"        this.result._contents += \", \";\n"
-"      t1.first = false;\n"
-"      t1 = this.result;\n"
-"      t2 = A.S(k);\n"
-"      t1._contents = (t1._contents += t2) + \": \";\n"
-"      t2 = A.S(v);\n"
-"      t1._contents += t2;\n"
-"    },\n"
-"    \$signature: 18\n"
-"  };\n"
-"  A._UnmodifiableMapMixin.prototype = {\n"
-"    \$indexSet(_, key, value) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      t1._precomputed1._as(key);\n"
-"      t1._rest[1]._as(value);\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"Cannot modify unmodifiable map\"));\n"
-"    }\n"
-"  };\n"
-"  A.MapView.prototype = {\n"
-"    cast\$2\$0(_, \$RK, \$RV) {\n"
-"      return this._map.cast\$2\$0(0, \$RK, \$RV);\n"
-"    },\n"
-"    \$index(_, key) {\n"
-"      return this._map.\$index(0, key);\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      this._map.\$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value));\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      return this._map.containsKey\$1(key);\n"
-"    },\n"
-"    forEach\$1(_, action) {\n"
-"      this._map.forEach\$1(0, A._instanceType(this)._eval\$1(\"~(1,2)\")._as(action));\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      var t1 = this._map;\n"
-"      return t1.get\$isEmpty(t1);\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      var t1 = this._map;\n"
-"      return t1.get\$isNotEmpty(t1);\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      var t1 = this._map;\n"
-"      return t1.get\$length(t1);\n"
-"    },\n"
-"    get\$keys() {\n"
-"      return this._map.get\$keys();\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this._map.toString\$0(0);\n"
-"    },\n"
-"    \$isMap: 1\n"
-"  };\n"
-"  A.UnmodifiableMapView.prototype = {\n"
-"    cast\$2\$0(_, \$RK, \$RV) {\n"
-"      return new A.UnmodifiableMapView(this._map.cast\$2\$0(0, \$RK, \$RV), \$RK._eval\$1(\"@<0>\")._bind\$1(\$RV)._eval\$1(\"UnmodifiableMapView<1,2>\"));\n"
-"    }\n"
-"  };\n"
-"  A.ListQueue.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      var _this = this;\n"
-"      return new A._ListQueueIterator(_this, _this._tail, _this._modificationCount, _this._head, _this.\$ti._eval\$1(\"_ListQueueIterator<1>\"));\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._head === this._tail;\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return (this._tail - this._head & this._table.length - 1) >>> 0;\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this._head;\n"
-"      if (t1 === _this._tail)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      t2 = _this._table;\n"
-"      if (!(t1 < t2.length))\n"
-"        return A.ioore(t2, t1);\n"
-"      t1 = t2[t1];\n"
-"      return t1 == null ? _this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var t2, t3, _this = this,\n"
-"        t1 = _this.get\$length(0);\n"
-"      if (0 > index || index >= t1)\n"
-"        A.throwExpression(A.IndexError\$withLength(index, t1, _this, null, \"index\"));\n"
-"      t1 = _this._table;\n"
-"      t2 = t1.length;\n"
-"      t3 = (_this._head + index & t2 - 1) >>> 0;\n"
-"      if (!(t3 >= 0 && t3 < t2))\n"
-"        return A.ioore(t1, t3);\n"
-"      t3 = t1[t3];\n"
-"      return t3 == null ? _this.\$ti._precomputed1._as(t3) : t3;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.Iterable_iterableToFullString(this, \"{\", \"}\");\n"
-"    },\n"
-"    removeFirst\$0() {\n"
-"      var t2, result, _this = this,\n"
-"        t1 = _this._head;\n"
-"      if (t1 === _this._tail)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      ++_this._modificationCount;\n"
-"      t2 = _this._table;\n"
-"      if (!(t1 < t2.length))\n"
-"        return A.ioore(t2, t1);\n"
-"      result = t2[t1];\n"
-"      if (result == null)\n"
-"        result = _this.\$ti._precomputed1._as(result);\n"
-"      B.JSArray_methods.\$indexSet(t2, t1, null);\n"
-"      _this._head = (_this._head + 1 & _this._table.length - 1) >>> 0;\n"
-"      return result;\n"
-"    },\n"
-"    _collection\$_add\$1(element) {\n"
-"      var t2, t3, newTable, split, _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._precomputed1._as(element);\n"
-"      B.JSArray_methods.\$indexSet(_this._table, _this._tail, element);\n"
-"      t2 = _this._tail;\n"
-"      t3 = _this._table.length;\n"
-"      t2 = (t2 + 1 & t3 - 1) >>> 0;\n"
-"      _this._tail = t2;\n"
-"      if (_this._head === t2) {\n"
-"        newTable = A.List_List\$filled(t3 * 2, null, false, t1._eval\$1(\"1?\"));\n"
-"        t1 = _this._table;\n"
-"        t2 = _this._head;\n"
-"        split = t1.length - t2;\n"
-"        B.JSArray_methods.setRange\$4(newTable, 0, split, t1, t2);\n"
-"        B.JSArray_methods.setRange\$4(newTable, split, split + _this._head, _this._table, 0);\n"
-"        _this._head = 0;\n"
-"        _this._tail = _this._table.length;\n"
-"        _this._table = newTable;\n"
-"      }\n"
-"      ++_this._modificationCount;\n"
-"    },\n"
-"    \$isQueue: 1\n"
-"  };\n"
-"  A._ListQueueIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this._collection\$_current;\n"
-"      return t1 == null ? this.\$ti._precomputed1._as(t1) : t1;\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var t2, t3, _this = this,\n"
-"        t1 = _this._queue;\n"
-"      if (_this._modificationCount !== t1._modificationCount)\n"
-"        A.throwExpression(A.ConcurrentModificationError\$(t1));\n"
-"      t2 = _this._position;\n"
-"      if (t2 === _this._end) {\n"
-"        _this._collection\$_current = null;\n"
-"        return false;\n"
-"      }\n"
-"      t1 = t1._table;\n"
-"      t3 = t1.length;\n"
-"      if (!(t2 < t3))\n"
-"        return A.ioore(t1, t2);\n"
-"      _this._collection\$_current = t1[t2];\n"
-"      _this._position = (t2 + 1 & t3 - 1) >>> 0;\n"
-"      return true;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A.SetBase.prototype = {\n"
-"    get\$isEmpty(_) {\n"
-"      return this.get\$length(this) === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this.get\$length(this) !== 0;\n"
-"    },\n"
-"    map\$1\$1(_, f, \$T) {\n"
-"      var t1 = A._instanceType(this);\n"
-"      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>\"));\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.Iterable_iterableToFullString(this, \"{\", \"}\");\n"
-"    },\n"
-"    take\$1(_, n) {\n"
-"      return A.TakeIterable_TakeIterable(this, n, A._instanceType(this)._precomputed1);\n"
-"    },\n"
-"    skip\$1(_, n) {\n"
-"      return A.SkipIterable_SkipIterable(this, n, A._instanceType(this)._precomputed1);\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var it = this.get\$iterator(this);\n"
-"      if (!it.moveNext\$0())\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      return it.get\$current();\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var iterator, skipCount;\n"
-"      A.RangeError_checkNotNegative(index, \"index\");\n"
-"      iterator = this.get\$iterator(this);\n"
-"      for (skipCount = index; iterator.moveNext\$0();) {\n"
-"        if (skipCount === 0)\n"
-"          return iterator.get\$current();\n"
-"        --skipCount;\n"
-"      }\n"
-"      throw A.wrapException(A.IndexError\$withLength(index, index - skipCount, this, null, \"index\"));\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isIterable: 1\n"
-"  };\n"
-"  A._SetBase.prototype = {};\n"
-"  A._SplayTreeNode.prototype = {\n"
-"    set\$_left(_left) {\n"
-"      this._left = this.\$ti._eval\$1(\"_SplayTreeNode.1?\")._as(_left);\n"
-"    },\n"
-"    set\$_right(_right) {\n"
-"      this._right = this.\$ti._eval\$1(\"_SplayTreeNode.1?\")._as(_right);\n"
-"    }\n"
-"  };\n"
-"  A._SplayTreeSetNode.prototype = {};\n"
-"  A._SplayTree.prototype = {\n"
-"    _splay\$1(key) {\n"
-"      var root, compare, comparison, current, newTreeLeft, left, newTreeRight, right, currentLeft, currentLeft0, currentRight, currentRight0, _this = this, _null = null;\n"
-"      _this.\$ti._eval\$1(\"_SplayTree.K\")._as(key);\n"
-"      root = _this._root;\n"
-"      if (root == null) {\n"
-"        _this._compare.call\$2(key, key);\n"
-"        return -1;\n"
-"      }\n"
-"      compare = _this._compare;\n"
-"      for (comparison = _null, current = root, newTreeLeft = comparison, left = newTreeLeft, newTreeRight = left, right = newTreeRight;;) {\n"
-"        comparison = compare.call\$2(current.key, key);\n"
-"        if (comparison > 0) {\n"
-"          currentLeft = current._left;\n"
-"          if (currentLeft == null)\n"
-"            break;\n"
-"          comparison = compare.call\$2(currentLeft.key, key);\n"
-"          if (comparison > 0) {\n"
-"            current.set\$_left(currentLeft._right);\n"
-"            currentLeft.set\$_right(current);\n"
-"            currentLeft0 = currentLeft._left;\n"
-"            if (currentLeft0 == null) {\n"
-"              current = currentLeft;\n"
-"              break;\n"
-"            }\n"
-"            current = currentLeft;\n"
-"            currentLeft = currentLeft0;\n"
-"          }\n"
-"          if (right == null)\n"
-"            newTreeRight = current;\n"
-"          else\n"
-"            right.set\$_left(current);\n"
-"          right = current;\n"
-"          current = currentLeft;\n"
-"        } else {\n"
-"          if (comparison < 0) {\n"
-"            currentRight = current._right;\n"
-"            if (currentRight == null)\n"
-"              break;\n"
-"            comparison = compare.call\$2(currentRight.key, key);\n"
-"            if (comparison < 0) {\n"
-"              current.set\$_right(currentRight._left);\n"
-"              currentRight.set\$_left(current);\n"
-"              currentRight0 = currentRight._right;\n"
-"              if (currentRight0 == null) {\n"
-"                current = currentRight;\n"
-"                break;\n"
-"              }\n"
-"              current = currentRight;\n"
-"              currentRight = currentRight0;\n"
-"            }\n"
-"            if (left == null)\n"
-"              newTreeLeft = current;\n"
-"            else\n"
-"              left.set\$_right(current);\n"
-"          } else\n"
-"            break;\n"
-"          left = current;\n"
-"          current = currentRight;\n"
-"        }\n"
-"      }\n"
-"      if (left != null) {\n"
-"        left.set\$_right(current._left);\n"
-"        current.set\$_left(newTreeLeft);\n"
-"      }\n"
-"      if (right != null) {\n"
-"        right.set\$_left(current._right);\n"
-"        current.set\$_right(newTreeRight);\n"
-"      }\n"
-"      if (_this._root !== current) {\n"
-"        _this._root = current;\n"
-"        ++_this._splayCount;\n"
-"      }\n"
-"      return comparison;\n"
-"    },\n"
-"    _splayMin\$1(node) {\n"
-"      var current, modified, left;\n"
-"      this.\$ti._eval\$1(\"_SplayTree.1\")._as(node);\n"
-"      for (current = node, modified = 0;; current = left, modified = 1) {\n"
-"        left = current._left;\n"
-"        if (left != null) {\n"
-"          current.set\$_left(left._right);\n"
-"          left.set\$_right(current);\n"
-"        } else\n"
-"          break;\n"
-"      }\n"
-"      this._splayCount += modified;\n"
-"      return current;\n"
-"    },\n"
-"    _splayMax\$1(node) {\n"
-"      var current, modified, right;\n"
-"      this.\$ti._eval\$1(\"_SplayTree.1\")._as(node);\n"
-"      for (current = node, modified = 0;; current = right, modified = 1) {\n"
-"        right = current._right;\n"
-"        if (right != null) {\n"
-"          current.set\$_right(right._left);\n"
-"          right.set\$_left(current);\n"
-"        } else\n"
-"          break;\n"
-"      }\n"
-"      this._splayCount += modified;\n"
-"      return current;\n"
-"    },\n"
-"    _untypedLookup\$1(key) {\n"
-"      if (!this.\$ti._eval\$1(\"_SplayTree.K\")._is(key))\n"
-"        return null;\n"
-"      if (this._splay\$1(key) === 0)\n"
-"        return this._root;\n"
-"      return null;\n"
-"    }\n"
-"  };\n"
-"  A._SplayTreeIterator.prototype = {\n"
-"    get\$current() {\n"
-"      var t1 = this._path;\n"
-"      if (t1.length === 0) {\n"
-"        this.\$ti._eval\$1(\"_SplayTreeIterator.T\")._as(null);\n"
-"        return null;\n"
-"      }\n"
-"      return this.\$ti._rest[1]._as(B.JSArray_methods.get\$last(t1)).key;\n"
-"    },\n"
-"    _rebuildPath\$1(key) {\n"
-"      var t1, t2, t3, _this = this;\n"
-"      _this.\$ti._eval\$1(\"_SplayTreeIterator.K\")._as(key);\n"
-"      t1 = _this._path;\n"
-"      B.JSArray_methods.clear\$0(t1);\n"
-"      t2 = _this._tree;\n"
-"      if (t2._splay\$1(key) === 0) {\n"
-"        t3 = t2._root;\n"
-"        t3.toString;\n"
-"        B.JSArray_methods.add\$1(t1, t3);\n"
-"        _this._splayCount = t2._splayCount;\n"
-"        return;\n"
-"      }\n"
-"      throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"    },\n"
-"    moveNext\$0() {\n"
-"      var node, next, _this = this,\n"
-"        t1 = _this._modificationCount,\n"
-"        t2 = _this._tree,\n"
-"        t3 = t2._modificationCount;\n"
-"      if (t1 !== t3) {\n"
-"        if (t1 == null) {\n"
-"          _this._modificationCount = t3;\n"
-"          node = t2._root;\n"
-"          for (t1 = _this._path; node != null;) {\n"
-"            B.JSArray_methods.add\$1(t1, node);\n"
-"            node = node._left;\n"
-"          }\n"
-"          return t1.length !== 0;\n"
-"        }\n"
-"        throw A.wrapException(A.ConcurrentModificationError\$(t2));\n"
-"      }\n"
-"      t1 = _this._path;\n"
-"      if (t1.length === 0)\n"
-"        return false;\n"
-"      if (_this._splayCount !== t2._splayCount)\n"
-"        _this._rebuildPath\$1(B.JSArray_methods.get\$last(t1).key);\n"
-"      node = B.JSArray_methods.get\$last(t1);\n"
-"      next = node._right;\n"
-"      if (next != null) {\n"
-"        while (next != null) {\n"
-"          B.JSArray_methods.add\$1(t1, next);\n"
-"          next = next._left;\n"
-"        }\n"
-"        return true;\n"
-"      }\n"
-"      if (0 >= t1.length)\n"
-"        return A.ioore(t1, -1);\n"
-"      t1.pop();\n"
-"      for (;;) {\n"
-"        if (!(t1.length !== 0 && B.JSArray_methods.get\$last(t1)._right === node))\n"
-"          break;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        node = t1.pop();\n"
-"      }\n"
-"      return t1.length !== 0;\n"
-"    },\n"
-"    \$isIterator: 1\n"
-"  };\n"
-"  A._SplayTreeKeyIterator.prototype = {};\n"
-"  A.SplayTreeSet.prototype = {\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this.\$ti;\n"
-"      return new A._SplayTreeKeyIterator(this, A._setArrayType([], t1._eval\$1(\"JSArray<_SplayTreeSetNode<1>>\")), this._splayCount, t1._eval\$1(\"_SplayTreeKeyIterator<1,_SplayTreeSetNode<1>>\"));\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this._count;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._root == null;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this._root != null;\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var t1,\n"
-"        root = this._root;\n"
-"      if (root == null)\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      t1 = this._splayMin\$1(root);\n"
-"      this._root = t1;\n"
-"      return t1.key;\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      return this._untypedLookup\$1(element) != null;\n"
-"    },\n"
-"    _collection\$_add\$1(element) {\n"
-"      var compare, root, _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._precomputed1._as(element);\n"
-"      compare = _this._splay\$1(element);\n"
-"      if (compare === 0)\n"
-"        return false;\n"
-"      t1 = t1._eval\$1(\"_SplayTree.1\")._as(new A._SplayTreeSetNode(element, t1._eval\$1(\"_SplayTreeSetNode<1>\")));\n"
-"      root = _this._root;\n"
-"      if (root != null)\n"
-"        if (compare < 0) {\n"
-"          t1.set\$_left(root);\n"
-"          t1.set\$_right(root._right);\n"
-"          root.set\$_right(null);\n"
-"        } else {\n"
-"          t1.set\$_right(root);\n"
-"          t1.set\$_left(root._left);\n"
-"          root.set\$_left(null);\n"
-"        }\n"
-"      ++_this._modificationCount;\n"
-"      ++_this._count;\n"
-"      _this._root = t1;\n"
-"      return true;\n"
-"    },\n"
-"    remove\$1(_, object) {\n"
-"      var root, left, right, t1, _this = this;\n"
-"      if (_this._untypedLookup\$1(object) == null)\n"
-"        return false;\n"
-"      root = _this._root;\n"
-"      left = root._left;\n"
-"      right = root._right;\n"
-"      if (left == null)\n"
-"        _this._root = right;\n"
-"      else if (right == null)\n"
-"        _this._root = left;\n"
-"      else {\n"
-"        t1 = _this._splayMax\$1(left);\n"
-"        t1.set\$_right(right);\n"
-"        _this._root = t1;\n"
-"      }\n"
-"      --_this._count;\n"
-"      ++_this._modificationCount;\n"
-"      return true;\n"
-"    },\n"
-"    addAll\$1(_, elements) {\n"
-"      var t1, _i;\n"
-"      this.\$ti._eval\$1(\"Iterable<1>\")._as(elements);\n"
-"      for (t1 = elements.length, _i = 0; _i < elements.length; elements.length === t1 || (0, A.throwConcurrentModificationError)(elements), ++_i)\n"
-"        this._collection\$_add\$1(elements[_i]);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.Iterable_iterableToFullString(this, \"{\", \"}\");\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1\n"
-"  };\n"
-"  A._SplayTreeSet__SplayTree_Iterable.prototype = {};\n"
-"  A._SplayTreeSet__SplayTree_Iterable_SetMixin.prototype = {};\n"
-"  A._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {};\n"
-"  A._JsonMap.prototype = {\n"
-"    \$index(_, key) {\n"
-"      var result,\n"
-"        t1 = this._processed;\n"
-"      if (t1 == null)\n"
-"        return this._data.\$index(0, key);\n"
-"      else if (typeof key != \"string\")\n"
-"        return null;\n"
-"      else {\n"
-"        result = t1[key];\n"
-"        return typeof result == \"undefined\" ? this._process\$1(key) : result;\n"
-"      }\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this._processed == null ? this._data.__js_helper\$_length : this._convert\$_computeKeys\$0().length;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this.get\$length(0) === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this.get\$length(0) > 0;\n"
-"    },\n"
-"    get\$keys() {\n"
-"      if (this._processed == null) {\n"
-"        var t1 = this._data;\n"
-"        return new A.LinkedHashMapKeysIterable(t1, A._instanceType(t1)._eval\$1(\"LinkedHashMapKeysIterable<1>\"));\n"
-"      }\n"
-"      return new A._JsonMapKeyIterable(this);\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var processed, original, _this = this;\n"
-"      A._asString(key);\n"
-"      if (_this._processed == null)\n"
-"        _this._data.\$indexSet(0, key, value);\n"
-"      else if (_this.containsKey\$1(key)) {\n"
-"        processed = _this._processed;\n"
-"        processed[key] = value;\n"
-"        original = _this._original;\n"
-"        if (original == null ? processed != null : original !== processed)\n"
-"          original[key] = null;\n"
-"      } else\n"
-"        _this._upgrade\$0().\$indexSet(0, key, value);\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      if (this._processed == null)\n"
-"        return this._data.containsKey\$1(key);\n"
-"      return Object.prototype.hasOwnProperty.call(this._original, key);\n"
-"    },\n"
-"    forEach\$1(_, f) {\n"
-"      var keys, i, key, value, _this = this;\n"
-"      type\$.void_Function_String_dynamic._as(f);\n"
-"      if (_this._processed == null)\n"
-"        return _this._data.forEach\$1(0, f);\n"
-"      keys = _this._convert\$_computeKeys\$0();\n"
-"      for (i = 0; i < keys.length; ++i) {\n"
-"        key = keys[i];\n"
-"        value = _this._processed[key];\n"
-"        if (typeof value == \"undefined\") {\n"
-"          value = A._convertJsonToDartLazy(_this._original[key]);\n"
-"          _this._processed[key] = value;\n"
-"        }\n"
-"        f.call\$2(key, value);\n"
-"        if (keys !== _this._data)\n"
-"          throw A.wrapException(A.ConcurrentModificationError\$(_this));\n"
-"      }\n"
-"    },\n"
-"    _convert\$_computeKeys\$0() {\n"
-"      var keys = type\$.nullable_List_dynamic._as(this._data);\n"
-"      if (keys == null)\n"
-"        keys = this._data = A._setArrayType(Object.keys(this._original), type\$.JSArray_String);\n"
-"      return keys;\n"
-"    },\n"
-"    _upgrade\$0() {\n"
-"      var result, keys, i, t1, key, _this = this;\n"
-"      if (_this._processed == null)\n"
-"        return _this._data;\n"
-"      result = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"      keys = _this._convert\$_computeKeys\$0();\n"
-"      for (i = 0; t1 = keys.length, i < t1; ++i) {\n"
-"        key = keys[i];\n"
-"        result.\$indexSet(0, key, _this.\$index(0, key));\n"
-"      }\n"
-"      if (t1 === 0)\n"
-"        B.JSArray_methods.add\$1(keys, \"\");\n"
-"      else\n"
-"        B.JSArray_methods.clear\$0(keys);\n"
-"      _this._original = _this._processed = null;\n"
-"      return _this._data = result;\n"
-"    },\n"
-"    _process\$1(key) {\n"
-"      var result;\n"
-"      if (!Object.prototype.hasOwnProperty.call(this._original, key))\n"
-"        return null;\n"
-"      result = A._convertJsonToDartLazy(this._original[key]);\n"
-"      return this._processed[key] = result;\n"
-"    }\n"
-"  };\n"
-"  A._JsonMapKeyIterable.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._convert\$_parent.get\$length(0);\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var t1 = this._convert\$_parent;\n"
-"      if (t1._processed == null)\n"
-"        t1 = t1.get\$keys().elementAt\$1(0, index);\n"
-"      else {\n"
-"        t1 = t1._convert\$_computeKeys\$0();\n"
-"        if (!(index >= 0 && index < t1.length))\n"
-"          return A.ioore(t1, index);\n"
-"        t1 = t1[index];\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    get\$iterator(_) {\n"
-"      var t1 = this._convert\$_parent;\n"
-"      if (t1._processed == null) {\n"
-"        t1 = t1.get\$keys();\n"
-"        t1 = t1.get\$iterator(t1);\n"
-"      } else {\n"
-"        t1 = t1._convert\$_computeKeys\$0();\n"
-"        t1 = new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval\$1(\"ArrayIterator<1>\"));\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    contains\$1(_, key) {\n"
-"      return this._convert\$_parent.containsKey\$1(key);\n"
-"    }\n"
-"  };\n"
-"  A._Utf8Decoder__decoder_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1, exception;\n"
-"      try {\n"
-"        t1 = new TextDecoder(\"utf-8\", {fatal: true});\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    \$signature: 19\n"
-"  };\n"
-"  A._Utf8Decoder__decoderNonfatal_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1, exception;\n"
-"      try {\n"
-"        t1 = new TextDecoder(\"utf-8\", {fatal: false});\n"
-"        return t1;\n"
-"      } catch (exception) {\n"
-"      }\n"
-"      return null;\n"
-"    },\n"
-"    \$signature: 19\n"
-"  };\n"
-"  A.AsciiCodec.prototype = {\n"
-"    encode\$1(source) {\n"
-"      return B.AsciiEncoder_127.convert\$1(source);\n"
-"    },\n"
-"    decode\$1(bytes) {\n"
-"      var t1;\n"
-"      type\$.List_int._as(bytes);\n"
-"      t1 = B.AsciiDecoder_false_127.convert\$1(bytes);\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A._UnicodeSubsetEncoder.prototype = {\n"
-"    convert\$1(string) {\n"
-"      var stringLength, end, result, t1, i, codeUnit;\n"
-"      A._asString(string);\n"
-"      stringLength = string.length;\n"
-"      end = A.RangeError_checkValidRange(0, null, stringLength);\n"
-"      result = new Uint8Array(end);\n"
-"      for (t1 = ~this._subsetMask, i = 0; i < end; ++i) {\n"
-"        if (!(i < stringLength))\n"
-"          return A.ioore(string, i);\n"
-"        codeUnit = string.charCodeAt(i);\n"
-"        if ((codeUnit & t1) !== 0)\n"
-"          throw A.wrapException(A.ArgumentError\$value(string, \"string\", \"Contains invalid characters.\"));\n"
-"        if (!(i < end))\n"
-"          return A.ioore(result, i);\n"
-"        result[i] = codeUnit;\n"
-"      }\n"
-"      return result;\n"
-"    }\n"
-"  };\n"
-"  A.AsciiEncoder.prototype = {};\n"
-"  A._UnicodeSubsetDecoder.prototype = {\n"
-"    convert\$1(bytes) {\n"
-"      var t1, end, t2, i, byte;\n"
-"      type\$.List_int._as(bytes);\n"
-"      t1 = J.getInterceptor\$asx(bytes);\n"
-"      end = A.RangeError_checkValidRange(0, null, t1.get\$length(bytes));\n"
-"      for (t2 = ~this._subsetMask, i = 0; i < end; ++i) {\n"
-"        byte = t1.\$index(bytes, i);\n"
-"        if ((byte & t2) >>> 0 !== 0) {\n"
-"          if (!this._allowInvalid)\n"
-"            throw A.wrapException(A.FormatException\$(\"Invalid value in input: \" + byte, null, null));\n"
-"          return this._convertInvalid\$3(bytes, 0, end);\n"
-"        }\n"
-"      }\n"
-"      return A.String_String\$fromCharCodes(bytes, 0, end);\n"
-"    },\n"
-"    _convertInvalid\$3(bytes, start, end) {\n"
-"      var t1, t2, i, t3, value;\n"
-"      type\$.List_int._as(bytes);\n"
-"      for (t1 = ~this._subsetMask, t2 = J.getInterceptor\$asx(bytes), i = start, t3 = \"\"; i < end; ++i) {\n"
-"        value = t2.\$index(bytes, i);\n"
-"        t3 += A.Primitives_stringFromCharCode((value & t1) >>> 0 !== 0 ? 65533 : value);\n"
-"      }\n"
-"      return t3.charCodeAt(0) == 0 ? t3 : t3;\n"
-"    }\n"
-"  };\n"
-"  A.AsciiDecoder.prototype = {};\n"
-"  A.Base64Codec.prototype = {\n"
-"    normalize\$3(source, start, end) {\n"
-"      var inverseAlphabet, t2, i, sliceStart, buffer, firstPadding, firstPaddingSourceIndex, paddingCount, i0, char, i1, digit1, t3, digit2, char0, value, t4, endLength, \$length,\n"
-"        _s64_ = string\$.ABCDEF,\n"
-"        _s31_ = \"Invalid base64 encoding length \",\n"
-"        t1 = source.length;\n"
-"      end = A.RangeError_checkValidRange(start, end, t1);\n"
-"      inverseAlphabet = \$.\$get\$_Base64Decoder__inverseAlphabet();\n"
-"      for (t2 = inverseAlphabet.length, i = start, sliceStart = i, buffer = null, firstPadding = -1, firstPaddingSourceIndex = -1, paddingCount = 0; i < end; i = i0) {\n"
-"        i0 = i + 1;\n"
-"        if (!(i < t1))\n"
-"          return A.ioore(source, i);\n"
-"        char = source.charCodeAt(i);\n"
-"        if (char === 37) {\n"
-"          i1 = i0 + 2;\n"
-"          if (i1 <= end) {\n"
-"            if (!(i0 < t1))\n"
-"              return A.ioore(source, i0);\n"
-"            digit1 = A.hexDigitValue(source.charCodeAt(i0));\n"
-"            t3 = i0 + 1;\n"
-"            if (!(t3 < t1))\n"
-"              return A.ioore(source, t3);\n"
-"            digit2 = A.hexDigitValue(source.charCodeAt(t3));\n"
-"            char0 = digit1 * 16 + digit2 - (digit2 & 256);\n"
-"            if (char0 === 37)\n"
-"              char0 = -1;\n"
-"            i0 = i1;\n"
-"          } else\n"
-"            char0 = -1;\n"
-"        } else\n"
-"          char0 = char;\n"
-"        if (0 <= char0 && char0 <= 127) {\n"
-"          if (!(char0 >= 0 && char0 < t2))\n"
-"            return A.ioore(inverseAlphabet, char0);\n"
-"          value = inverseAlphabet[char0];\n"
-"          if (value >= 0) {\n"
-"            if (!(value < 64))\n"
-"              return A.ioore(_s64_, value);\n"
-"            char0 = _s64_.charCodeAt(value);\n"
-"            if (char0 === char)\n"
-"              continue;\n"
-"            char = char0;\n"
-"          } else {\n"
-"            if (value === -1) {\n"
-"              if (firstPadding < 0) {\n"
-"                t3 = buffer == null ? null : buffer._contents.length;\n"
-"                if (t3 == null)\n"
-"                  t3 = 0;\n"
-"                firstPadding = t3 + (i - sliceStart);\n"
-"                firstPaddingSourceIndex = i;\n"
-"              }\n"
-"              ++paddingCount;\n"
-"              if (char === 61)\n"
-"                continue;\n"
-"            }\n"
-"            char = char0;\n"
-"          }\n"
-"          if (value !== -2) {\n"
-"            if (buffer == null) {\n"
-"              buffer = new A.StringBuffer(\"\");\n"
-"              t3 = buffer;\n"
-"            } else\n"
-"              t3 = buffer;\n"
-"            t3._contents += B.JSString_methods.substring\$2(source, sliceStart, i);\n"
-"            t4 = A.Primitives_stringFromCharCode(char);\n"
-"            t3._contents += t4;\n"
-"            sliceStart = i0;\n"
-"            continue;\n"
-"          }\n"
-"        }\n"
-"        throw A.wrapException(A.FormatException\$(\"Invalid base64 data\", source, i));\n"
-"      }\n"
-"      if (buffer != null) {\n"
-"        t1 = B.JSString_methods.substring\$2(source, sliceStart, end);\n"
-"        t1 = buffer._contents += t1;\n"
-"        t2 = t1.length;\n"
-"        if (firstPadding >= 0)\n"
-"          A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, t2);\n"
-"        else {\n"
-"          endLength = B.JSInt_methods.\$mod(t2 - 1, 4) + 1;\n"
-"          if (endLength === 1)\n"
-"            throw A.wrapException(A.FormatException\$(_s31_, source, end));\n"
-"          while (endLength < 4) {\n"
-"            t1 += \"=\";\n"
-"            buffer._contents = t1;\n"
-"            ++endLength;\n"
-"          }\n"
-"        }\n"
-"        t1 = buffer._contents;\n"
-"        return B.JSString_methods.replaceRange\$3(source, start, end, t1.charCodeAt(0) == 0 ? t1 : t1);\n"
-"      }\n"
-"      \$length = end - start;\n"
-"      if (firstPadding >= 0)\n"
-"        A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, \$length);\n"
-"      else {\n"
-"        endLength = B.JSInt_methods.\$mod(\$length, 4);\n"
-"        if (endLength === 1)\n"
-"          throw A.wrapException(A.FormatException\$(_s31_, source, end));\n"
-"        if (endLength > 1)\n"
-"          source = B.JSString_methods.replaceRange\$3(source, end, end, endLength === 2 ? \"==\" : \"=\");\n"
-"      }\n"
-"      return source;\n"
-"    }\n"
-"  };\n"
-"  A.Base64Encoder.prototype = {};\n"
-"  A.ByteConversionSink.prototype = {};\n"
-"  A._ByteCallbackSink.prototype = {\n"
-"    add\$1(_, chunk) {\n"
-"      var t1, t2, t3, v, grown, _this = this;\n"
-"      type\$.Iterable_int._as(chunk);\n"
-"      t1 = _this._convert\$_buffer;\n"
-"      t2 = _this._bufferIndex;\n"
-"      t3 = J.getInterceptor\$asx(chunk);\n"
-"      if (t3.get\$length(chunk) > t1.length - t2) {\n"
-"        t1 = _this._convert\$_buffer;\n"
-"        v = t3.get\$length(chunk) + t1.length - 1;\n"
-"        v |= B.JSInt_methods._shrOtherPositive\$1(v, 1);\n"
-"        v |= v >>> 2;\n"
-"        v |= v >>> 4;\n"
-"        v |= v >>> 8;\n"
-"        grown = new Uint8Array((((v | v >>> 16) >>> 0) + 1) * 2);\n"
-"        t1 = _this._convert\$_buffer;\n"
-"        B.NativeUint8List_methods.setRange\$3(grown, 0, t1.length, t1);\n"
-"        _this._convert\$_buffer = grown;\n"
-"      }\n"
-"      t1 = _this._convert\$_buffer;\n"
-"      t2 = _this._bufferIndex;\n"
-"      B.NativeUint8List_methods.setRange\$3(t1, t2, t2 + t3.get\$length(chunk), chunk);\n"
-"      _this._bufferIndex = _this._bufferIndex + t3.get\$length(chunk);\n"
-"    },\n"
-"    close\$0() {\n"
-"      this._callback.call\$1(B.NativeUint8List_methods.sublist\$2(this._convert\$_buffer, 0, this._bufferIndex));\n"
-"    }\n"
-"  };\n"
-"  A.Codec.prototype = {};\n"
-"  A.Converter.prototype = {};\n"
-"  A.Encoding.prototype = {};\n"
-"  A.JsonUnsupportedObjectError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var safeString = A.Error_safeToString(this.unsupportedObject);\n"
-"      return (this.cause != null ? \"Converting object to an encodable object failed:\" : \"Converting object did not return an encodable object:\") + \" \" + safeString;\n"
-"    }\n"
-"  };\n"
-"  A.JsonCyclicError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Cyclic error in JSON stringify\";\n"
-"    }\n"
-"  };\n"
-"  A.JsonCodec.prototype = {\n"
-"    decode\$2\$reviver(source, reviver) {\n"
-"      var t1 = A._parseJson(source, this.get\$decoder()._reviver);\n"
-"      return t1;\n"
-"    },\n"
-"    decode\$1(source) {\n"
-"      return this.decode\$2\$reviver(source, null);\n"
-"    },\n"
-"    encode\$2\$toEncodable(value, toEncodable) {\n"
-"      var t1 = A._JsonStringStringifier_stringify(value, this.get\$encoder()._toEncodable, null);\n"
-"      return t1;\n"
-"    },\n"
-"    get\$encoder() {\n"
-"      return B.JsonEncoder_null;\n"
-"    },\n"
-"    get\$decoder() {\n"
-"      return B.JsonDecoder_null;\n"
-"    }\n"
-"  };\n"
-"  A.JsonEncoder.prototype = {};\n"
-"  A.JsonDecoder.prototype = {};\n"
-"  A._JsonStringifier.prototype = {\n"
-"    writeStringContent\$1(s) {\n"
-"      var offset, i, charCode, t1, t2, _this = this,\n"
-"        \$length = s.length;\n"
-"      for (offset = 0, i = 0; i < \$length; ++i) {\n"
-"        charCode = s.charCodeAt(i);\n"
-"        if (charCode > 92) {\n"
-"          if (charCode >= 55296) {\n"
-"            t1 = charCode & 64512;\n"
-"            if (t1 === 55296) {\n"
-"              t2 = i + 1;\n"
-"              t2 = !(t2 < \$length && (s.charCodeAt(t2) & 64512) === 56320);\n"
-"            } else\n"
-"              t2 = false;\n"
-"            if (!t2)\n"
-"              if (t1 === 56320) {\n"
-"                t1 = i - 1;\n"
-"                t1 = !(t1 >= 0 && (s.charCodeAt(t1) & 64512) === 55296);\n"
-"              } else\n"
-"                t1 = false;\n"
-"            else\n"
-"              t1 = true;\n"
-"            if (t1) {\n"
-"              if (i > offset)\n"
-"                _this.writeStringSlice\$3(s, offset, i);\n"
-"              offset = i + 1;\n"
-"              _this.writeCharCode\$1(92);\n"
-"              _this.writeCharCode\$1(117);\n"
-"              _this.writeCharCode\$1(100);\n"
-"              t1 = charCode >>> 8 & 15;\n"
-"              _this.writeCharCode\$1(t1 < 10 ? 48 + t1 : 87 + t1);\n"
-"              t1 = charCode >>> 4 & 15;\n"
-"              _this.writeCharCode\$1(t1 < 10 ? 48 + t1 : 87 + t1);\n"
-"              t1 = charCode & 15;\n"
-"              _this.writeCharCode\$1(t1 < 10 ? 48 + t1 : 87 + t1);\n"
-"            }\n"
-"          }\n"
-"          continue;\n"
-"        }\n"
-"        if (charCode < 32) {\n"
-"          if (i > offset)\n"
-"            _this.writeStringSlice\$3(s, offset, i);\n"
-"          offset = i + 1;\n"
-"          _this.writeCharCode\$1(92);\n"
-"          switch (charCode) {\n"
-"            case 8:\n"
-"              _this.writeCharCode\$1(98);\n"
-"              break;\n"
-"            case 9:\n"
-"              _this.writeCharCode\$1(116);\n"
-"              break;\n"
-"            case 10:\n"
-"              _this.writeCharCode\$1(110);\n"
-"              break;\n"
-"            case 12:\n"
-"              _this.writeCharCode\$1(102);\n"
-"              break;\n"
-"            case 13:\n"
-"              _this.writeCharCode\$1(114);\n"
-"              break;\n"
-"            default:\n"
-"              _this.writeCharCode\$1(117);\n"
-"              _this.writeCharCode\$1(48);\n"
-"              _this.writeCharCode\$1(48);\n"
-"              t1 = charCode >>> 4 & 15;\n"
-"              _this.writeCharCode\$1(t1 < 10 ? 48 + t1 : 87 + t1);\n"
-"              t1 = charCode & 15;\n"
-"              _this.writeCharCode\$1(t1 < 10 ? 48 + t1 : 87 + t1);\n"
-"              break;\n"
-"          }\n"
-"        } else if (charCode === 34 || charCode === 92) {\n"
-"          if (i > offset)\n"
-"            _this.writeStringSlice\$3(s, offset, i);\n"
-"          offset = i + 1;\n"
-"          _this.writeCharCode\$1(92);\n"
-"          _this.writeCharCode\$1(charCode);\n"
-"        }\n"
-"      }\n"
-"      if (offset === 0)\n"
-"        _this.writeString\$1(s);\n"
-"      else if (offset < \$length)\n"
-"        _this.writeStringSlice\$3(s, offset, \$length);\n"
-"    },\n"
-"    _checkCycle\$1(object) {\n"
-"      var t1, t2, i, t3;\n"
-"      for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {\n"
-"        t3 = t1[i];\n"
-"        if (object == null ? t3 == null : object === t3)\n"
-"          throw A.wrapException(new A.JsonCyclicError(object, null));\n"
-"      }\n"
-"      B.JSArray_methods.add\$1(t1, object);\n"
-"    },\n"
-"    writeObject\$1(object) {\n"
-"      var customJson, e, t1, exception, _this = this;\n"
-"      if (_this.writeJsonValue\$1(object))\n"
-"        return;\n"
-"      _this._checkCycle\$1(object);\n"
-"      try {\n"
-"        customJson = _this._toEncodable.call\$1(object);\n"
-"        if (!_this.writeJsonValue\$1(customJson)) {\n"
-"          t1 = A.JsonUnsupportedObjectError\$(object, null, _this.get\$_partialResult());\n"
-"          throw A.wrapException(t1);\n"
-"        }\n"
-"        t1 = _this._seen;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"      } catch (exception) {\n"
-"        e = A.unwrapException(exception);\n"
-"        t1 = A.JsonUnsupportedObjectError\$(object, e, _this.get\$_partialResult());\n"
-"        throw A.wrapException(t1);\n"
-"      }\n"
-"    },\n"
-"    writeJsonValue\$1(object) {\n"
-"      var t1, success, _this = this;\n"
-"      if (typeof object == \"number\") {\n"
-"        if (!isFinite(object))\n"
-"          return false;\n"
-"        _this.writeNumber\$1(object);\n"
-"        return true;\n"
-"      } else if (object === true) {\n"
-"        _this.writeString\$1(\"true\");\n"
-"        return true;\n"
-"      } else if (object === false) {\n"
-"        _this.writeString\$1(\"false\");\n"
-"        return true;\n"
-"      } else if (object == null) {\n"
-"        _this.writeString\$1(\"null\");\n"
-"        return true;\n"
-"      } else if (typeof object == \"string\") {\n"
-"        _this.writeString\$1('\"');\n"
-"        _this.writeStringContent\$1(object);\n"
-"        _this.writeString\$1('\"');\n"
-"        return true;\n"
-"      } else if (type\$.List_dynamic._is(object)) {\n"
-"        _this._checkCycle\$1(object);\n"
-"        _this.writeList\$1(object);\n"
-"        t1 = _this._seen;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"        return true;\n"
-"      } else if (type\$.Map_dynamic_dynamic._is(object)) {\n"
-"        _this._checkCycle\$1(object);\n"
-"        success = _this.writeMap\$1(object);\n"
-"        t1 = _this._seen;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"        return success;\n"
-"      } else\n"
-"        return false;\n"
-"    },\n"
-"    writeList\$1(list) {\n"
-"      var t1, i, _this = this;\n"
-"      _this.writeString\$1(\"[\");\n"
-"      t1 = J.getInterceptor\$asx(list);\n"
-"      if (t1.get\$isNotEmpty(list)) {\n"
-"        _this.writeObject\$1(t1.\$index(list, 0));\n"
-"        for (i = 1; i < t1.get\$length(list); ++i) {\n"
-"          _this.writeString\$1(\",\");\n"
-"          _this.writeObject\$1(t1.\$index(list, i));\n"
-"        }\n"
-"      }\n"
-"      _this.writeString\$1(\"]\");\n"
-"    },\n"
-"    writeMap\$1(map) {\n"
-"      var t1, keyValueList, i, separator, t2, _this = this, _box_0 = {};\n"
-"      if (map.get\$isEmpty(map)) {\n"
-"        _this.writeString\$1(\"{}\");\n"
-"        return true;\n"
-"      }\n"
-"      t1 = map.get\$length(map) * 2;\n"
-"      keyValueList = A.List_List\$filled(t1, null, false, type\$.nullable_Object);\n"
-"      i = _box_0.i = 0;\n"
-"      _box_0.allStringKeys = true;\n"
-"      map.forEach\$1(0, new A._JsonStringifier_writeMap_closure(_box_0, keyValueList));\n"
-"      if (!_box_0.allStringKeys)\n"
-"        return false;\n"
-"      _this.writeString\$1(\"{\");\n"
-"      for (separator = '\"'; i < t1; i += 2, separator = ',\"') {\n"
-"        _this.writeString\$1(separator);\n"
-"        _this.writeStringContent\$1(A._asString(keyValueList[i]));\n"
-"        _this.writeString\$1('\":');\n"
-"        t2 = i + 1;\n"
-"        if (!(t2 < t1))\n"
-"          return A.ioore(keyValueList, t2);\n"
-"        _this.writeObject\$1(keyValueList[t2]);\n"
-"      }\n"
-"      _this.writeString\$1(\"}\");\n"
-"      return true;\n"
-"    }\n"
-"  };\n"
-"  A._JsonStringifier_writeMap_closure.prototype = {\n"
-"    call\$2(key, value) {\n"
-"      var t1, t2;\n"
-"      if (typeof key != \"string\")\n"
-"        this._box_0.allStringKeys = false;\n"
-"      t1 = this.keyValueList;\n"
-"      t2 = this._box_0;\n"
-"      B.JSArray_methods.\$indexSet(t1, t2.i++, key);\n"
-"      B.JSArray_methods.\$indexSet(t1, t2.i++, value);\n"
-"    },\n"
-"    \$signature: 18\n"
-"  };\n"
-"  A._JsonStringStringifier.prototype = {\n"
-"    get\$_partialResult() {\n"
-"      var t1 = this._sink._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    writeNumber\$1(number) {\n"
-"      this._sink._contents += B.JSNumber_methods.toString\$0(number);\n"
-"    },\n"
-"    writeString\$1(string) {\n"
-"      this._sink._contents += string;\n"
-"    },\n"
-"    writeStringSlice\$3(string, start, end) {\n"
-"      this._sink._contents += B.JSString_methods.substring\$2(string, start, end);\n"
-"    },\n"
-"    writeCharCode\$1(charCode) {\n"
-"      var t1 = this._sink,\n"
-"        t2 = A.Primitives_stringFromCharCode(charCode);\n"
-"      t1._contents += t2;\n"
-"    }\n"
-"  };\n"
-"  A.Latin1Codec.prototype = {\n"
-"    encode\$1(source) {\n"
-"      return B.Latin1Encoder_255.convert\$1(source);\n"
-"    },\n"
-"    decode\$1(bytes) {\n"
-"      var t1;\n"
-"      type\$.List_int._as(bytes);\n"
-"      t1 = B.Latin1Decoder_false_255.convert\$1(bytes);\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A.Latin1Encoder.prototype = {};\n"
-"  A.Latin1Decoder.prototype = {};\n"
-"  A.Utf8Codec.prototype = {\n"
-"    decode\$1(codeUnits) {\n"
-"      type\$.List_int._as(codeUnits);\n"
-"      return B.Utf8Decoder_false.convert\$1(codeUnits);\n"
-"    },\n"
-"    encode\$1(string) {\n"
-"      return B.C_Utf8Encoder.convert\$1(string);\n"
-"    }\n"
-"  };\n"
-"  A.Utf8Encoder.prototype = {\n"
-"    convert\$1(string) {\n"
-"      var stringLength, end, t1, encoder, t2;\n"
-"      A._asString(string);\n"
-"      stringLength = string.length;\n"
-"      end = A.RangeError_checkValidRange(0, null, stringLength);\n"
-"      if (end === 0)\n"
-"        return new Uint8Array(0);\n"
-"      t1 = new Uint8Array(end * 3);\n"
-"      encoder = new A._Utf8Encoder(t1);\n"
-"      if (encoder._fillBuffer\$3(string, 0, end) !== end) {\n"
-"        t2 = end - 1;\n"
-"        if (!(t2 >= 0 && t2 < stringLength))\n"
-"          return A.ioore(string, t2);\n"
-"        encoder._writeReplacementCharacter\$0();\n"
-"      }\n"
-"      return B.NativeUint8List_methods.sublist\$2(t1, 0, encoder._bufferIndex);\n"
-"    }\n"
-"  };\n"
-"  A._Utf8Encoder.prototype = {\n"
-"    _writeReplacementCharacter\$0() {\n"
-"      var t4, _this = this,\n"
-"        t1 = _this._convert\$_buffer,\n"
-"        t2 = _this._bufferIndex,\n"
-"        t3 = _this._bufferIndex = t2 + 1;\n"
-"      t1.\$flags & 2 && A.throwUnsupportedOperation(t1);\n"
-"      t4 = t1.length;\n"
-"      if (!(t2 < t4))\n"
-"        return A.ioore(t1, t2);\n"
-"      t1[t2] = 239;\n"
-"      t2 = _this._bufferIndex = t3 + 1;\n"
-"      if (!(t3 < t4))\n"
-"        return A.ioore(t1, t3);\n"
-"      t1[t3] = 191;\n"
-"      _this._bufferIndex = t2 + 1;\n"
-"      if (!(t2 < t4))\n"
-"        return A.ioore(t1, t2);\n"
-"      t1[t2] = 189;\n"
-"    },\n"
-"    _writeSurrogate\$2(leadingSurrogate, nextCodeUnit) {\n"
-"      var rune, t1, t2, t3, t4, _this = this;\n"
-"      if ((nextCodeUnit & 64512) === 56320) {\n"
-"        rune = 65536 + ((leadingSurrogate & 1023) << 10) | nextCodeUnit & 1023;\n"
-"        t1 = _this._convert\$_buffer;\n"
-"        t2 = _this._bufferIndex;\n"
-"        t3 = _this._bufferIndex = t2 + 1;\n"
-"        t1.\$flags & 2 && A.throwUnsupportedOperation(t1);\n"
-"        t4 = t1.length;\n"
-"        if (!(t2 < t4))\n"
-"          return A.ioore(t1, t2);\n"
-"        t1[t2] = rune >>> 18 | 240;\n"
-"        t2 = _this._bufferIndex = t3 + 1;\n"
-"        if (!(t3 < t4))\n"
-"          return A.ioore(t1, t3);\n"
-"        t1[t3] = rune >>> 12 & 63 | 128;\n"
-"        t3 = _this._bufferIndex = t2 + 1;\n"
-"        if (!(t2 < t4))\n"
-"          return A.ioore(t1, t2);\n"
-"        t1[t2] = rune >>> 6 & 63 | 128;\n"
-"        _this._bufferIndex = t3 + 1;\n"
-"        if (!(t3 < t4))\n"
-"          return A.ioore(t1, t3);\n"
-"        t1[t3] = rune & 63 | 128;\n"
-"        return true;\n"
-"      } else {\n"
-"        _this._writeReplacementCharacter\$0();\n"
-"        return false;\n"
-"      }\n"
-"    },\n"
-"    _fillBuffer\$3(str, start, end) {\n"
-"      var t1, t2, t3, t4, stringIndex, codeUnit, t5, t6, _this = this;\n"
-"      if (start !== end) {\n"
-"        t1 = end - 1;\n"
-"        if (!(t1 >= 0 && t1 < str.length))\n"
-"          return A.ioore(str, t1);\n"
-"        t1 = (str.charCodeAt(t1) & 64512) === 55296;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        --end;\n"
-"      for (t1 = _this._convert\$_buffer, t2 = t1.\$flags | 0, t3 = t1.length, t4 = str.length, stringIndex = start; stringIndex < end; ++stringIndex) {\n"
-"        if (!(stringIndex < t4))\n"
-"          return A.ioore(str, stringIndex);\n"
-"        codeUnit = str.charCodeAt(stringIndex);\n"
-"        if (codeUnit <= 127) {\n"
-"          t5 = _this._bufferIndex;\n"
-"          if (t5 >= t3)\n"
-"            break;\n"
-"          _this._bufferIndex = t5 + 1;\n"
-"          t2 & 2 && A.throwUnsupportedOperation(t1);\n"
-"          t1[t5] = codeUnit;\n"
-"        } else {\n"
-"          t5 = codeUnit & 64512;\n"
-"          if (t5 === 55296) {\n"
-"            if (_this._bufferIndex + 4 > t3)\n"
-"              break;\n"
-"            t5 = stringIndex + 1;\n"
-"            if (!(t5 < t4))\n"
-"              return A.ioore(str, t5);\n"
-"            if (_this._writeSurrogate\$2(codeUnit, str.charCodeAt(t5)))\n"
-"              stringIndex = t5;\n"
-"          } else if (t5 === 56320) {\n"
-"            if (_this._bufferIndex + 3 > t3)\n"
-"              break;\n"
-"            _this._writeReplacementCharacter\$0();\n"
-"          } else if (codeUnit <= 2047) {\n"
-"            t5 = _this._bufferIndex;\n"
-"            t6 = t5 + 1;\n"
-"            if (t6 >= t3)\n"
-"              break;\n"
-"            _this._bufferIndex = t6;\n"
-"            t2 & 2 && A.throwUnsupportedOperation(t1);\n"
-"            if (!(t5 < t3))\n"
-"              return A.ioore(t1, t5);\n"
-"            t1[t5] = codeUnit >>> 6 | 192;\n"
-"            _this._bufferIndex = t6 + 1;\n"
-"            t1[t6] = codeUnit & 63 | 128;\n"
-"          } else {\n"
-"            t5 = _this._bufferIndex;\n"
-"            if (t5 + 2 >= t3)\n"
-"              break;\n"
-"            t6 = _this._bufferIndex = t5 + 1;\n"
-"            t2 & 2 && A.throwUnsupportedOperation(t1);\n"
-"            if (!(t5 < t3))\n"
-"              return A.ioore(t1, t5);\n"
-"            t1[t5] = codeUnit >>> 12 | 224;\n"
-"            t5 = _this._bufferIndex = t6 + 1;\n"
-"            if (!(t6 < t3))\n"
-"              return A.ioore(t1, t6);\n"
-"            t1[t6] = codeUnit >>> 6 & 63 | 128;\n"
-"            _this._bufferIndex = t5 + 1;\n"
-"            if (!(t5 < t3))\n"
-"              return A.ioore(t1, t5);\n"
-"            t1[t5] = codeUnit & 63 | 128;\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      return stringIndex;\n"
-"    }\n"
-"  };\n"
-"  A.Utf8Decoder.prototype = {\n"
-"    convert\$1(codeUnits) {\n"
-"      return new A._Utf8Decoder(this._allowMalformed)._convertGeneral\$4(type\$.List_int._as(codeUnits), 0, null, true);\n"
-"    }\n"
-"  };\n"
-"  A._Utf8Decoder.prototype = {\n"
-"    _convertGeneral\$4(codeUnits, start, maybeEnd, single) {\n"
-"      var end, casted, bytes, errorOffset, t1, result, message, _this = this;\n"
-"      type\$.List_int._as(codeUnits);\n"
-"      end = A.RangeError_checkValidRange(start, maybeEnd, J.get\$length\$asx(codeUnits));\n"
-"      if (start === end)\n"
-"        return \"\";\n"
-"      if (codeUnits instanceof Uint8Array) {\n"
-"        casted = codeUnits;\n"
-"        bytes = casted;\n"
-"        errorOffset = 0;\n"
-"      } else {\n"
-"        bytes = A._Utf8Decoder__makeNativeUint8List(codeUnits, start, end);\n"
-"        end -= start;\n"
-"        errorOffset = start;\n"
-"        start = 0;\n"
-"      }\n"
-"      if (end - start >= 15) {\n"
-"        t1 = _this.allowMalformed;\n"
-"        result = A._Utf8Decoder__convertInterceptedUint8List(t1, bytes, start, end);\n"
-"        if (result != null) {\n"
-"          if (!t1)\n"
-"            return result;\n"
-"          if (result.indexOf(\"\\ufffd\") < 0)\n"
-"            return result;\n"
-"        }\n"
-"      }\n"
-"      result = _this._decodeRecursive\$4(bytes, start, end, true);\n"
-"      t1 = _this._convert\$_state;\n"
-"      if ((t1 & 1) !== 0) {\n"
-"        message = A._Utf8Decoder_errorDescription(t1);\n"
-"        _this._convert\$_state = 0;\n"
-"        throw A.wrapException(A.FormatException\$(message, codeUnits, errorOffset + _this._charOrIndex));\n"
-"      }\n"
-"      return result;\n"
-"    },\n"
-"    _decodeRecursive\$4(bytes, start, end, single) {\n"
-"      var mid, s1, _this = this;\n"
-"      if (end - start > 1000) {\n"
-"        mid = B.JSInt_methods._tdivFast\$1(start + end, 2);\n"
-"        s1 = _this._decodeRecursive\$4(bytes, start, mid, false);\n"
-"        if ((_this._convert\$_state & 1) !== 0)\n"
-"          return s1;\n"
-"        return s1 + _this._decodeRecursive\$4(bytes, mid, end, single);\n"
-"      }\n"
-"      return _this.decodeGeneral\$4(bytes, start, end, single);\n"
-"    },\n"
-"    decodeGeneral\$4(bytes, start, end, single) {\n"
-"      var byte, t2, type, t3, i0, markEnd, i1, m, _this = this,\n"
-"        _s256_ = \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE\",\n"
-"        _s144_ = \" \\x000:XECCCCCN:lDb \\x000:XECCCCCNvlDb \\x000:XECCCCCN:lDb AAAAA\\x00\\x00\\x00\\x00\\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\\x800AAAAA\\x00\\x00\\x00\\x00 AAAAA\",\n"
-"        _65533 = 65533,\n"
-"        state = _this._convert\$_state,\n"
-"        char = _this._charOrIndex,\n"
-"        buffer = new A.StringBuffer(\"\"),\n"
-"        i = start + 1,\n"
-"        t1 = bytes.length;\n"
-"      if (!(start >= 0 && start < t1))\n"
-"        return A.ioore(bytes, start);\n"
-"      byte = bytes[start];\n"
-"      \$label0\$0:\n"
-"        for (t2 = _this.allowMalformed;;) {\n"
-"          for (;; i = i0) {\n"
-"            if (!(byte >= 0 && byte < 256))\n"
-"              return A.ioore(_s256_, byte);\n"
-"            type = _s256_.charCodeAt(byte) & 31;\n"
-"            char = state <= 32 ? byte & 61694 >>> type : (byte & 63 | char << 6) >>> 0;\n"
-"            t3 = state + type;\n"
-"            if (!(t3 >= 0 && t3 < 144))\n"
-"              return A.ioore(_s144_, t3);\n"
-"            state = _s144_.charCodeAt(t3);\n"
-"            if (state === 0) {\n"
-"              t3 = A.Primitives_stringFromCharCode(char);\n"
-"              buffer._contents += t3;\n"
-"              if (i === end)\n"
-"                break \$label0\$0;\n"
-"              break;\n"
-"            } else if ((state & 1) !== 0) {\n"
-"              if (t2)\n"
-"                switch (state) {\n"
-"                  case 69:\n"
-"                  case 67:\n"
-"                    t3 = A.Primitives_stringFromCharCode(_65533);\n"
-"                    buffer._contents += t3;\n"
-"                    break;\n"
-"                  case 65:\n"
-"                    t3 = A.Primitives_stringFromCharCode(_65533);\n"
-"                    buffer._contents += t3;\n"
-"                    --i;\n"
-"                    break;\n"
-"                  default:\n"
-"                    t3 = A.Primitives_stringFromCharCode(_65533);\n"
-"                    buffer._contents = (buffer._contents += t3) + t3;\n"
-"                    break;\n"
-"                }\n"
-"              else {\n"
-"                _this._convert\$_state = state;\n"
-"                _this._charOrIndex = i - 1;\n"
-"                return \"\";\n"
-"              }\n"
-"              state = 0;\n"
-"            }\n"
-"            if (i === end)\n"
-"              break \$label0\$0;\n"
-"            i0 = i + 1;\n"
-"            if (!(i >= 0 && i < t1))\n"
-"              return A.ioore(bytes, i);\n"
-"            byte = bytes[i];\n"
-"          }\n"
-"          i0 = i + 1;\n"
-"          if (!(i >= 0 && i < t1))\n"
-"            return A.ioore(bytes, i);\n"
-"          byte = bytes[i];\n"
-"          if (byte < 128) {\n"
-"            for (;;) {\n"
-"              if (!(i0 < end)) {\n"
-"                markEnd = end;\n"
-"                break;\n"
-"              }\n"
-"              i1 = i0 + 1;\n"
-"              if (!(i0 >= 0 && i0 < t1))\n"
-"                return A.ioore(bytes, i0);\n"
-"              byte = bytes[i0];\n"
-"              if (byte >= 128) {\n"
-"                markEnd = i1 - 1;\n"
-"                i0 = i1;\n"
-"                break;\n"
-"              }\n"
-"              i0 = i1;\n"
-"            }\n"
-"            if (markEnd - i < 20)\n"
-"              for (m = i; m < markEnd; ++m) {\n"
-"                if (!(m < t1))\n"
-"                  return A.ioore(bytes, m);\n"
-"                t3 = A.Primitives_stringFromCharCode(bytes[m]);\n"
-"                buffer._contents += t3;\n"
-"              }\n"
-"            else {\n"
-"              t3 = A.String_String\$fromCharCodes(bytes, i, markEnd);\n"
-"              buffer._contents += t3;\n"
-"            }\n"
-"            if (markEnd === end)\n"
-"              break \$label0\$0;\n"
-"            i = i0;\n"
-"          } else\n"
-"            i = i0;\n"
-"        }\n"
-"      if (single && state > 32)\n"
-"        if (t2) {\n"
-"          t1 = A.Primitives_stringFromCharCode(_65533);\n"
-"          buffer._contents += t1;\n"
-"        } else {\n"
-"          _this._convert\$_state = 77;\n"
-"          _this._charOrIndex = end;\n"
-"          return \"\";\n"
-"        }\n"
-"      _this._convert\$_state = state;\n"
-"      _this._charOrIndex = char;\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    }\n"
-"  };\n"
-"  A.DateTime.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.DateTime && this._value === other._value && this._microsecond === other._microsecond && this.isUtc === other.isUtc;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this._value, this._microsecond, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      var r;\n"
-"      type\$.DateTime._as(other);\n"
-"      r = B.JSInt_methods.compareTo\$1(this._value, other._value);\n"
-"      if (r !== 0)\n"
-"        return r;\n"
-"      return B.JSInt_methods.compareTo\$1(this._microsecond, other._microsecond);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var _this = this,\n"
-"        y = A.DateTime__fourDigits(A.Primitives_getYear(_this)),\n"
-"        m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)),\n"
-"        d = A.DateTime__twoDigits(A.Primitives_getDay(_this)),\n"
-"        h = A.DateTime__twoDigits(A.Primitives_getHours(_this)),\n"
-"        min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)),\n"
-"        sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)),\n"
-"        ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)),\n"
-"        t1 = _this._microsecond,\n"
-"        us = t1 === 0 ? \"\" : A.DateTime__threeDigits(t1);\n"
-"      t1 = y + \"-\" + m;\n"
-"      if (_this.isUtc)\n"
-"        return t1 + \"-\" + d + \" \" + h + \":\" + min + \":\" + sec + \".\" + ms + us + \"Z\";\n"
-"      else\n"
-"        return t1 + \"-\" + d + \" \" + h + \":\" + min + \":\" + sec + \".\" + ms + us;\n"
-"    },\n"
-"    \$isComparable: 1\n"
-"  };\n"
-"  A.Duration.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.Duration && this.inMicroseconds === other.inMicroseconds;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return B.JSInt_methods.get\$hashCode(this.inMicroseconds);\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      return B.JSInt_methods.compareTo\$1(this.inMicroseconds, type\$.Duration._as(other).inMicroseconds);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var sign, minutes, minutesPadding, seconds, secondsPadding,\n"
-"        microseconds = this.inMicroseconds,\n"
-"        hours = B.JSInt_methods._tdivFast\$1(microseconds, 3600000000),\n"
-"        microseconds0 = microseconds % 3600000000;\n"
-"      if (microseconds < 0) {\n"
-"        hours = 0 - hours;\n"
-"        microseconds = 0 - microseconds0;\n"
-"        sign = \"-\";\n"
-"      } else {\n"
-"        microseconds = microseconds0;\n"
-"        sign = \"\";\n"
-"      }\n"
-"      minutes = B.JSInt_methods._tdivFast\$1(microseconds, 60000000);\n"
-"      microseconds %= 60000000;\n"
-"      minutesPadding = minutes < 10 ? \"0\" : \"\";\n"
-"      seconds = B.JSInt_methods._tdivFast\$1(microseconds, 1000000);\n"
-"      secondsPadding = seconds < 10 ? \"0\" : \"\";\n"
-"      return sign + hours + \":\" + minutesPadding + minutes + \":\" + secondsPadding + seconds + \".\" + B.JSString_methods.padLeft\$2(B.JSInt_methods.toString\$0(microseconds % 1000000), 6, \"0\");\n"
-"    },\n"
-"    \$isComparable: 1\n"
-"  };\n"
-"  A._Enum.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return this._enumToString\$0();\n"
-"    }\n"
-"  };\n"
-"  A.Error.prototype = {\n"
-"    get\$stackTrace() {\n"
-"      return A.Primitives_extractStackTrace(this);\n"
-"    }\n"
-"  };\n"
-"  A.AssertionError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.message;\n"
-"      if (t1 != null)\n"
-"        return \"Assertion failed: \" + A.Error_safeToString(t1);\n"
-"      return \"Assertion failed\";\n"
-"    }\n"
-"  };\n"
-"  A.TypeError.prototype = {};\n"
-"  A.ArgumentError.prototype = {\n"
-"    get\$_errorName() {\n"
-"      return \"Invalid argument\" + (!this._hasValue ? \"(s)\" : \"\");\n"
-"    },\n"
-"    get\$_errorExplanation() {\n"
-"      return \"\";\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var _this = this,\n"
-"        \$name = _this.name,\n"
-"        nameString = \$name == null ? \"\" : \" (\" + \$name + \")\",\n"
-"        message = _this.message,\n"
-"        messageString = message == null ? \"\" : \": \" + A.S(message),\n"
-"        prefix = _this.get\$_errorName() + nameString + messageString;\n"
-"      if (!_this._hasValue)\n"
-"        return prefix;\n"
-"      return prefix + _this.get\$_errorExplanation() + \": \" + A.Error_safeToString(_this.get\$invalidValue());\n"
-"    },\n"
-"    get\$invalidValue() {\n"
-"      return this.invalidValue;\n"
-"    }\n"
-"  };\n"
-"  A.RangeError.prototype = {\n"
-"    get\$invalidValue() {\n"
-"      return A._asNumQ(this.invalidValue);\n"
-"    },\n"
-"    get\$_errorName() {\n"
-"      return \"RangeError\";\n"
-"    },\n"
-"    get\$_errorExplanation() {\n"
-"      var explanation,\n"
-"        start = this.start,\n"
-"        end = this.end;\n"
-"      if (start == null)\n"
-"        explanation = end != null ? \": Not less than or equal to \" + A.S(end) : \"\";\n"
-"      else if (end == null)\n"
-"        explanation = \": Not greater than or equal to \" + A.S(start);\n"
-"      else if (end > start)\n"
-"        explanation = \": Not in inclusive range \" + A.S(start) + \"..\" + A.S(end);\n"
-"      else\n"
-"        explanation = end < start ? \": Valid value range is empty\" : \": Only valid value is \" + A.S(start);\n"
-"      return explanation;\n"
-"    }\n"
-"  };\n"
-"  A.IndexError.prototype = {\n"
-"    get\$invalidValue() {\n"
-"      return A._asInt(this.invalidValue);\n"
-"    },\n"
-"    get\$_errorName() {\n"
-"      return \"RangeError\";\n"
-"    },\n"
-"    get\$_errorExplanation() {\n"
-"      if (A._asInt(this.invalidValue) < 0)\n"
-"        return \": index must not be negative\";\n"
-"      var t1 = this.length;\n"
-"      if (t1 === 0)\n"
-"        return \": no indices are valid\";\n"
-"      return \": index should be less than \" + t1;\n"
-"    },\n"
-"    get\$length(receiver) {\n"
-"      return this.length;\n"
-"    }\n"
-"  };\n"
-"  A.UnsupportedError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Unsupported operation: \" + this.message;\n"
-"    }\n"
-"  };\n"
-"  A.UnimplementedError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"UnimplementedError: \" + this.message;\n"
-"    }\n"
-"  };\n"
-"  A.StateError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Bad state: \" + this.message;\n"
-"    }\n"
-"  };\n"
-"  A.ConcurrentModificationError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.modifiedObject;\n"
-"      if (t1 == null)\n"
-"        return \"Concurrent modification during iteration.\";\n"
-"      return \"Concurrent modification during iteration: \" + A.Error_safeToString(t1) + \".\";\n"
-"    }\n"
-"  };\n"
-"  A.OutOfMemoryError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Out of Memory\";\n"
-"    },\n"
-"    get\$stackTrace() {\n"
-"      return null;\n"
-"    },\n"
-"    \$isError: 1\n"
-"  };\n"
-"  A.StackOverflowError.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Stack Overflow\";\n"
-"    },\n"
-"    get\$stackTrace() {\n"
-"      return null;\n"
-"    },\n"
-"    \$isError: 1\n"
-"  };\n"
-"  A._Exception.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Exception: \" + this.message;\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.FormatException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1, lineEnd, lineNum, lineStart, previousCharWasCR, i, char, prefix, postfix, end, start,\n"
-"        message = this.message,\n"
-"        report = \"\" !== message ? \"FormatException: \" + message : \"FormatException\",\n"
-"        offset = this.offset,\n"
-"        source = this.source;\n"
-"      if (typeof source == \"string\") {\n"
-"        if (offset != null)\n"
-"          t1 = offset < 0 || offset > source.length;\n"
-"        else\n"
-"          t1 = false;\n"
-"        if (t1)\n"
-"          offset = null;\n"
-"        if (offset == null) {\n"
-"          if (source.length > 78)\n"
-"            source = B.JSString_methods.substring\$2(source, 0, 75) + \"...\";\n"
-"          return report + \"\\n\" + source;\n"
-"        }\n"
-"        for (lineEnd = source.length, lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {\n"
-"          if (!(i < lineEnd))\n"
-"            return A.ioore(source, i);\n"
-"          char = source.charCodeAt(i);\n"
-"          if (char === 10) {\n"
-"            if (lineStart !== i || !previousCharWasCR)\n"
-"              ++lineNum;\n"
-"            lineStart = i + 1;\n"
-"            previousCharWasCR = false;\n"
-"          } else if (char === 13) {\n"
-"            ++lineNum;\n"
-"            lineStart = i + 1;\n"
-"            previousCharWasCR = true;\n"
-"          }\n"
-"        }\n"
-"        report = lineNum > 1 ? report + (\" (at line \" + lineNum + \", character \" + (offset - lineStart + 1) + \")\\n\") : report + (\" (at character \" + (offset + 1) + \")\\n\");\n"
-"        for (i = offset; i < lineEnd; ++i) {\n"
-"          if (!(i >= 0))\n"
-"            return A.ioore(source, i);\n"
-"          char = source.charCodeAt(i);\n"
-"          if (char === 10 || char === 13) {\n"
-"            lineEnd = i;\n"
-"            break;\n"
-"          }\n"
-"        }\n"
-"        prefix = \"\";\n"
-"        if (lineEnd - lineStart > 78) {\n"
-"          postfix = \"...\";\n"
-"          if (offset - lineStart < 75) {\n"
-"            end = lineStart + 75;\n"
-"            start = lineStart;\n"
-"          } else {\n"
-"            if (lineEnd - offset < 75) {\n"
-"              start = lineEnd - 75;\n"
-"              end = lineEnd;\n"
-"              postfix = \"\";\n"
-"            } else {\n"
-"              start = offset - 36;\n"
-"              end = offset + 36;\n"
-"            }\n"
-"            prefix = \"...\";\n"
-"          }\n"
-"        } else {\n"
-"          end = lineEnd;\n"
-"          start = lineStart;\n"
-"          postfix = \"\";\n"
-"        }\n"
-"        return report + prefix + B.JSString_methods.substring\$2(source, start, end) + postfix + \"\\n\" + B.JSString_methods.\$mul(\" \", offset - start + prefix.length) + \"^\\n\";\n"
-"      } else\n"
-"        return offset != null ? report + (\" (at offset \" + A.S(offset) + \")\") : report;\n"
-"    },\n"
-"    \$isException: 1,\n"
-"    get\$message() {\n"
-"      return this.message;\n"
-"    },\n"
-"    get\$source() {\n"
-"      return this.source;\n"
-"    },\n"
-"    get\$offset() {\n"
-"      return this.offset;\n"
-"    }\n"
-"  };\n"
-"  A.Iterable.prototype = {\n"
-"    cast\$1\$0(_, \$R) {\n"
-"      return A.CastIterable_CastIterable(this, A.instanceType(this)._eval\$1(\"Iterable.E\"), \$R);\n"
-"    },\n"
-"    map\$1\$1(_, toElement, \$T) {\n"
-"      var t1 = A.instanceType(this);\n"
-"      return A.MappedIterable_MappedIterable(this, t1._bind\$1(\$T)._eval\$1(\"1(Iterable.E)\")._as(toElement), t1._eval\$1(\"Iterable.E\"), \$T);\n"
-"    },\n"
-"    contains\$1(_, element) {\n"
-"      var t1;\n"
-"      for (t1 = this.get\$iterator(this); t1.moveNext\$0();)\n"
-"        if (J.\$eq\$(t1.get\$current(), element))\n"
-"          return true;\n"
-"      return false;\n"
-"    },\n"
-"    toList\$1\$growable(_, growable) {\n"
-"      var t1 = A.instanceType(this)._eval\$1(\"Iterable.E\");\n"
-"      if (growable)\n"
-"        t1 = A.List_List\$_of(this, t1);\n"
-"      else {\n"
-"        t1 = A.List_List\$_of(this, t1);\n"
-"        t1.\$flags = 1;\n"
-"        t1 = t1;\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    toList\$0(_) {\n"
-"      return this.toList\$1\$growable(0, true);\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      var count,\n"
-"        it = this.get\$iterator(this);\n"
-"      for (count = 0; it.moveNext\$0();)\n"
-"        ++count;\n"
-"      return count;\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return !this.get\$iterator(this).moveNext\$0();\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return !this.get\$isEmpty(this);\n"
-"    },\n"
-"    take\$1(_, count) {\n"
-"      return A.TakeIterable_TakeIterable(this, count, A.instanceType(this)._eval\$1(\"Iterable.E\"));\n"
-"    },\n"
-"    skip\$1(_, count) {\n"
-"      return A.SkipIterable_SkipIterable(this, count, A.instanceType(this)._eval\$1(\"Iterable.E\"));\n"
-"    },\n"
-"    get\$first(_) {\n"
-"      var it = this.get\$iterator(this);\n"
-"      if (!it.moveNext\$0())\n"
-"        throw A.wrapException(A.IterableElementError_noElement());\n"
-"      return it.get\$current();\n"
-"    },\n"
-"    elementAt\$1(_, index) {\n"
-"      var iterator, skipCount;\n"
-"      A.RangeError_checkNotNegative(index, \"index\");\n"
-"      iterator = this.get\$iterator(this);\n"
-"      for (skipCount = index; iterator.moveNext\$0();) {\n"
-"        if (skipCount === 0)\n"
-"          return iterator.get\$current();\n"
-"        --skipCount;\n"
-"      }\n"
-"      throw A.wrapException(A.IndexError\$withLength(index, index - skipCount, this, null, \"index\"));\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.Iterable_iterableToShortString(this, \"(\", \")\");\n"
-"    }\n"
-"  };\n"
-"  A.MapEntry.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"MapEntry(\" + A.S(this.key) + \": \" + A.S(this.value) + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.Null.prototype = {\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object.prototype.get\$hashCode.call(this, 0);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"null\";\n"
-"    }\n"
-"  };\n"
-"  A.Object.prototype = {\$isObject: 1,\n"
-"    \$eq(_, other) {\n"
-"      return this === other;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Primitives_objectHashCode(this);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"Instance of '\" + A.Primitives_objectTypeName(this) + \"'\";\n"
-"    },\n"
-"    get\$runtimeType(_) {\n"
-"      return A.getRuntimeTypeOfDartObject(this);\n"
-"    },\n"
-"    toString() {\n"
-"      return this.toString\$0(this);\n"
-"    }\n"
-"  };\n"
-"  A._StringStackTrace.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return this._stackTrace;\n"
-"    },\n"
-"    \$isStackTrace: 1\n"
-"  };\n"
-"  A.StringBuffer.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._contents.length;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t1 = this._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    \$isStringSink: 1\n"
-"  };\n"
-"  A.Uri_parseIPv6Address_error.prototype = {\n"
-"    call\$2(msg, position) {\n"
-"      throw A.wrapException(A.FormatException\$(\"Illegal IPv6 address, \" + msg, this.host, position));\n"
-"    },\n"
-"    \$signature: 48\n"
-"  };\n"
-"  A._Uri.prototype = {\n"
-"    get\$_text() {\n"
-"      var t1, t2, t3, t4, _this = this,\n"
-"        value = _this.___Uri__text_FI;\n"
-"      if (value === \$) {\n"
-"        t1 = _this.scheme;\n"
-"        t2 = t1.length !== 0 ? t1 + \":\" : \"\";\n"
-"        t3 = _this._host;\n"
-"        t4 = t3 == null;\n"
-"        if (!t4 || t1 === \"file\") {\n"
-"          t1 = t2 + \"//\";\n"
-"          t2 = _this._userInfo;\n"
-"          if (t2.length !== 0)\n"
-"            t1 = t1 + t2 + \"@\";\n"
-"          if (!t4)\n"
-"            t1 += t3;\n"
-"          t2 = _this._port;\n"
-"          if (t2 != null)\n"
-"            t1 = t1 + \":\" + A.S(t2);\n"
-"        } else\n"
-"          t1 = t2;\n"
-"        t1 += _this.path;\n"
-"        t2 = _this._query;\n"
-"        if (t2 != null)\n"
-"          t1 = t1 + \"?\" + t2;\n"
-"        t2 = _this._fragment;\n"
-"        if (t2 != null)\n"
-"          t1 = t1 + \"#\" + t2;\n"
-"        value = _this.___Uri__text_FI = t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"      }\n"
-"      return value;\n"
-"    },\n"
-"    get\$pathSegments() {\n"
-"      var pathToSplit, t1, result, _this = this,\n"
-"        value = _this.___Uri_pathSegments_FI;\n"
-"      if (value === \$) {\n"
-"        pathToSplit = _this.path;\n"
-"        t1 = pathToSplit.length;\n"
-"        if (t1 !== 0) {\n"
-"          if (0 >= t1)\n"
-"            return A.ioore(pathToSplit, 0);\n"
-"          t1 = pathToSplit.charCodeAt(0) === 47;\n"
-"        } else\n"
-"          t1 = false;\n"
-"        if (t1)\n"
-"          pathToSplit = B.JSString_methods.substring\$1(pathToSplit, 1);\n"
-"        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);\n"
-"        _this.___Uri_pathSegments_FI !== \$ && A.throwLateFieldADI(\"pathSegments\");\n"
-"        value = _this.___Uri_pathSegments_FI = result;\n"
-"      }\n"
-"      return value;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var result, _this = this,\n"
-"        value = _this.___Uri_hashCode_FI;\n"
-"      if (value === \$) {\n"
-"        result = B.JSString_methods.get\$hashCode(_this.get\$_text());\n"
-"        _this.___Uri_hashCode_FI !== \$ && A.throwLateFieldADI(\"hashCode\");\n"
-"        _this.___Uri_hashCode_FI = result;\n"
-"        value = result;\n"
-"      }\n"
-"      return value;\n"
-"    },\n"
-"    get\$userInfo() {\n"
-"      return this._userInfo;\n"
-"    },\n"
-"    get\$host() {\n"
-"      var host = this._host;\n"
-"      if (host == null)\n"
-"        return \"\";\n"
-"      if (B.JSString_methods.startsWith\$1(host, \"[\") && !B.JSString_methods.startsWith\$2(host, \"v\", 1))\n"
-"        return B.JSString_methods.substring\$2(host, 1, host.length - 1);\n"
-"      return host;\n"
-"    },\n"
-"    get\$port() {\n"
-"      var t1 = this._port;\n"
-"      return t1 == null ? A._Uri__defaultPort(this.scheme) : t1;\n"
-"    },\n"
-"    get\$query() {\n"
-"      var t1 = this._query;\n"
-"      return t1 == null ? \"\" : t1;\n"
-"    },\n"
-"    get\$fragment() {\n"
-"      var t1 = this._fragment;\n"
-"      return t1 == null ? \"\" : t1;\n"
-"    },\n"
-"    isScheme\$1(scheme) {\n"
-"      var thisScheme = this.scheme;\n"
-"      if (scheme.length !== thisScheme.length)\n"
-"        return false;\n"
-"      return A._caseInsensitiveCompareStart(scheme, thisScheme, 0) >= 0;\n"
-"    },\n"
-"    replace\$2\$path\$scheme(path, scheme) {\n"
-"      var schemeChanged, isFile, userInfo, port, host, hasAuthority, t1, currentPath, _this = this,\n"
-"        scheme0 = _this.scheme;\n"
-"      if (scheme != null) {\n"
-"        scheme = A._Uri__makeScheme(scheme, 0, scheme.length);\n"
-"        schemeChanged = scheme !== scheme0;\n"
-"      } else {\n"
-"        scheme = scheme0;\n"
-"        schemeChanged = false;\n"
-"      }\n"
-"      isFile = scheme === \"file\";\n"
-"      userInfo = _this._userInfo;\n"
-"      port = _this._port;\n"
-"      if (schemeChanged)\n"
-"        port = A._Uri__makePort(port, scheme);\n"
-"      host = _this._host;\n"
-"      if (!(host != null))\n"
-"        host = userInfo.length !== 0 || port != null || isFile ? \"\" : null;\n"
-"      hasAuthority = host != null;\n"
-"      if (path != null) {\n"
-"        t1 = path.length;\n"
-"        path = A._Uri__makePath(path, 0, t1, null, scheme, hasAuthority);\n"
-"      } else {\n"
-"        currentPath = _this.path;\n"
-"        if (!isFile)\n"
-"          t1 = hasAuthority && currentPath.length !== 0;\n"
-"        else\n"
-"          t1 = true;\n"
-"        if (t1 && !B.JSString_methods.startsWith\$1(currentPath, \"/\"))\n"
-"          currentPath = \"/\" + currentPath;\n"
-"        path = currentPath;\n"
-"      }\n"
-"      return A._Uri\$_internal(scheme, userInfo, host, port, path, _this._query, _this._fragment);\n"
-"    },\n"
-"    replace\$1\$scheme(scheme) {\n"
-"      return this.replace\$2\$path\$scheme(null, scheme);\n"
-"    },\n"
-"    replace\$1\$path(path) {\n"
-"      return this.replace\$2\$path\$scheme(path, null);\n"
-"    },\n"
-"    _mergePaths\$2(base, reference) {\n"
-"      var backCount, refStart, baseEnd, t1, newEnd, delta, t2, t3, t4;\n"
-"      for (backCount = 0, refStart = 0; B.JSString_methods.startsWith\$2(reference, \"../\", refStart);) {\n"
-"        refStart += 3;\n"
-"        ++backCount;\n"
-"      }\n"
-"      baseEnd = B.JSString_methods.lastIndexOf\$1(base, \"/\");\n"
-"      t1 = base.length;\n"
-"      for (;;) {\n"
-"        if (!(baseEnd > 0 && backCount > 0))\n"
-"          break;\n"
-"        newEnd = B.JSString_methods.lastIndexOf\$2(base, \"/\", baseEnd - 1);\n"
-"        if (newEnd < 0)\n"
-"          break;\n"
-"        delta = baseEnd - newEnd;\n"
-"        t2 = delta !== 2;\n"
-"        t3 = false;\n"
-"        if (!t2 || delta === 3) {\n"
-"          t4 = newEnd + 1;\n"
-"          if (!(t4 < t1))\n"
-"            return A.ioore(base, t4);\n"
-"          if (base.charCodeAt(t4) === 46)\n"
-"            if (t2) {\n"
-"              t2 = newEnd + 2;\n"
-"              if (!(t2 < t1))\n"
-"                return A.ioore(base, t2);\n"
-"              t2 = base.charCodeAt(t2) === 46;\n"
-"            } else\n"
-"              t2 = true;\n"
-"          else\n"
-"            t2 = t3;\n"
-"        } else\n"
-"          t2 = t3;\n"
-"        if (t2)\n"
-"          break;\n"
-"        --backCount;\n"
-"        baseEnd = newEnd;\n"
-"      }\n"
-"      return B.JSString_methods.replaceRange\$3(base, baseEnd + 1, null, B.JSString_methods.substring\$1(reference, refStart - 3 * backCount));\n"
-"    },\n"
-"    resolve\$1(reference) {\n"
-"      return this.resolveUri\$1(A.Uri_parse(reference));\n"
-"    },\n"
-"    resolveUri\$1(reference) {\n"
-"      var targetScheme, t1, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, packageNameEnd, packageName, mergedPath, fragment, _this = this;\n"
-"      if (reference.get\$scheme().length !== 0)\n"
-"        return reference;\n"
-"      else {\n"
-"        targetScheme = _this.scheme;\n"
-"        if (reference.get\$hasAuthority()) {\n"
-"          t1 = reference.replace\$1\$scheme(targetScheme);\n"
-"          return t1;\n"
-"        } else {\n"
-"          targetUserInfo = _this._userInfo;\n"
-"          targetHost = _this._host;\n"
-"          targetPort = _this._port;\n"
-"          targetPath = _this.path;\n"
-"          if (reference.get\$hasEmptyPath())\n"
-"            targetQuery = reference.get\$hasQuery() ? reference.get\$query() : _this._query;\n"
-"          else {\n"
-"            packageNameEnd = A._Uri__packageNameEnd(_this, targetPath);\n"
-"            if (packageNameEnd > 0) {\n"
-"              packageName = B.JSString_methods.substring\$2(targetPath, 0, packageNameEnd);\n"
-"              targetPath = reference.get\$hasAbsolutePath() ? packageName + A._Uri__removeDotSegments(reference.get\$path()) : packageName + A._Uri__removeDotSegments(_this._mergePaths\$2(B.JSString_methods.substring\$1(targetPath, packageName.length), reference.get\$path()));\n"
-"            } else if (reference.get\$hasAbsolutePath())\n"
-"              targetPath = A._Uri__removeDotSegments(reference.get\$path());\n"
-"            else if (targetPath.length === 0)\n"
-"              if (targetHost == null)\n"
-"                targetPath = targetScheme.length === 0 ? reference.get\$path() : A._Uri__removeDotSegments(reference.get\$path());\n"
-"              else\n"
-"                targetPath = A._Uri__removeDotSegments(\"/\" + reference.get\$path());\n"
-"            else {\n"
-"              mergedPath = _this._mergePaths\$2(targetPath, reference.get\$path());\n"
-"              t1 = targetScheme.length === 0;\n"
-"              if (!t1 || targetHost != null || B.JSString_methods.startsWith\$1(targetPath, \"/\"))\n"
-"                targetPath = A._Uri__removeDotSegments(mergedPath);\n"
-"              else\n"
-"                targetPath = A._Uri__normalizeRelativePath(mergedPath, !t1 || targetHost != null);\n"
-"            }\n"
-"            targetQuery = reference.get\$hasQuery() ? reference.get\$query() : null;\n"
-"          }\n"
-"        }\n"
-"      }\n"
-"      fragment = reference.get\$hasFragment() ? reference.get\$fragment() : null;\n"
-"      return A._Uri\$_internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, fragment);\n"
-"    },\n"
-"    get\$hasAuthority() {\n"
-"      return this._host != null;\n"
-"    },\n"
-"    get\$hasQuery() {\n"
-"      return this._query != null;\n"
-"    },\n"
-"    get\$hasFragment() {\n"
-"      return this._fragment != null;\n"
-"    },\n"
-"    get\$hasEmptyPath() {\n"
-"      return this.path.length === 0;\n"
-"    },\n"
-"    get\$hasAbsolutePath() {\n"
-"      return B.JSString_methods.startsWith\$1(this.path, \"/\");\n"
-"    },\n"
-"    toFilePath\$0() {\n"
-"      var pathSegments, _this = this,\n"
-"        t1 = _this.scheme;\n"
-"      if (t1 !== \"\" && t1 !== \"file\")\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"Cannot extract a file path from a \" + t1 + \" URI\"));\n"
-"      t1 = _this._query;\n"
-"      if ((t1 == null ? \"\" : t1) !== \"\")\n"
-"        throw A.wrapException(A.UnsupportedError\$(string\$.Cannotfq));\n"
-"      t1 = _this._fragment;\n"
-"      if ((t1 == null ? \"\" : t1) !== \"\")\n"
-"        throw A.wrapException(A.UnsupportedError\$(string\$.Cannotff));\n"
-"      if (_this._host != null && _this.get\$host() !== \"\")\n"
-"        A.throwExpression(A.UnsupportedError\$(string\$.Cannotn));\n"
-"      pathSegments = _this.get\$pathSegments();\n"
-"      A._Uri__checkNonWindowsPathReservedCharacters(pathSegments, false);\n"
-"      t1 = A.StringBuffer__writeAll(B.JSString_methods.startsWith\$1(_this.path, \"/\") ? \"/\" : \"\", pathSegments, \"/\");\n"
-"      t1 = t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"      return t1;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this.get\$_text();\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1, t2, t3, _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (_this === other)\n"
-"        return true;\n"
-"      t1 = false;\n"
-"      if (type\$.Uri._is(other))\n"
-"        if (_this.scheme === other.get\$scheme())\n"
-"          if (_this._host != null === other.get\$hasAuthority())\n"
-"            if (_this._userInfo === other.get\$userInfo())\n"
-"              if (_this.get\$host() === other.get\$host())\n"
-"                if (_this.get\$port() === other.get\$port())\n"
-"                  if (_this.path === other.get\$path()) {\n"
-"                    t2 = _this._query;\n"
-"                    t3 = t2 == null;\n"
-"                    if (!t3 === other.get\$hasQuery()) {\n"
-"                      if (t3)\n"
-"                        t2 = \"\";\n"
-"                      if (t2 === other.get\$query()) {\n"
-"                        t2 = _this._fragment;\n"
-"                        t3 = t2 == null;\n"
-"                        if (!t3 === other.get\$hasFragment()) {\n"
-"                          t1 = t3 ? \"\" : t2;\n"
-"                          t1 = t1 === other.get\$fragment();\n"
-"                        }\n"
-"                      }\n"
-"                    }\n"
-"                  }\n"
-"      return t1;\n"
-"    },\n"
-"    \$isUri: 1,\n"
-"    get\$scheme() {\n"
-"      return this.scheme;\n"
-"    },\n"
-"    get\$path() {\n"
-"      return this.path;\n"
-"    }\n"
-"  };\n"
-"  A._Uri__makePath_closure.prototype = {\n"
-"    call\$1(s) {\n"
-"      return A._Uri__uriEncode(64, A._asString(s), B.C_Utf8Codec, false);\n"
-"    },\n"
-"    \$signature: 9\n"
-"  };\n"
-"  A.UriData.prototype = {\n"
-"    get\$uri() {\n"
-"      var t2, queryIndex, end, query, _this = this, _null = null,\n"
-"        t1 = _this._uriCache;\n"
-"      if (t1 == null) {\n"
-"        t1 = _this._separatorIndices;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, 0);\n"
-"        t2 = _this._text;\n"
-"        t1 = t1[0] + 1;\n"
-"        queryIndex = B.JSString_methods.indexOf\$2(t2, \"?\", t1);\n"
-"        end = t2.length;\n"
-"        if (queryIndex >= 0) {\n"
-"          query = A._Uri__normalizeOrSubstring(t2, queryIndex + 1, end, 256, false, false);\n"
-"          end = queryIndex;\n"
-"        } else\n"
-"          query = _null;\n"
-"        t1 = _this._uriCache = new A._DataUri(\"data\", \"\", _null, _null, A._Uri__normalizeOrSubstring(t2, t1, end, 128, false, false), query, _null);\n"
-"      }\n"
-"      return t1;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t2,\n"
-"        t1 = this._separatorIndices;\n"
-"      if (0 >= t1.length)\n"
-"        return A.ioore(t1, 0);\n"
-"      t2 = this._text;\n"
-"      return t1[0] === -1 ? \"data:\" + t2 : t2;\n"
-"    }\n"
-"  };\n"
-"  A._SimpleUri.prototype = {\n"
-"    get\$hasAuthority() {\n"
-"      return this._hostStart > 0;\n"
-"    },\n"
-"    get\$hasPort() {\n"
-"      return this._hostStart > 0 && this._portStart + 1 < this._pathStart;\n"
-"    },\n"
-"    get\$hasQuery() {\n"
-"      return this._queryStart < this._fragmentStart;\n"
-"    },\n"
-"    get\$hasFragment() {\n"
-"      return this._fragmentStart < this._uri.length;\n"
-"    },\n"
-"    get\$hasAbsolutePath() {\n"
-"      return B.JSString_methods.startsWith\$2(this._uri, \"/\", this._pathStart);\n"
-"    },\n"
-"    get\$hasEmptyPath() {\n"
-"      return this._pathStart === this._queryStart;\n"
-"    },\n"
-"    isScheme\$1(scheme) {\n"
-"      var t1 = scheme.length;\n"
-"      if (t1 === 0)\n"
-"        return this._schemeEnd < 0;\n"
-"      if (t1 !== this._schemeEnd)\n"
-"        return false;\n"
-"      return A._caseInsensitiveCompareStart(scheme, this._uri, 0) >= 0;\n"
-"    },\n"
-"    get\$scheme() {\n"
-"      var t1 = this._schemeCache;\n"
-"      return t1 == null ? this._schemeCache = this._computeScheme\$0() : t1;\n"
-"    },\n"
-"    _computeScheme\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this._schemeEnd;\n"
-"      if (t1 <= 0)\n"
-"        return \"\";\n"
-"      t2 = t1 === 4;\n"
-"      if (t2 && B.JSString_methods.startsWith\$1(_this._uri, \"http\"))\n"
-"        return \"http\";\n"
-"      if (t1 === 5 && B.JSString_methods.startsWith\$1(_this._uri, \"https\"))\n"
-"        return \"https\";\n"
-"      if (t2 && B.JSString_methods.startsWith\$1(_this._uri, \"file\"))\n"
-"        return \"file\";\n"
-"      if (t1 === 7 && B.JSString_methods.startsWith\$1(_this._uri, \"package\"))\n"
-"        return \"package\";\n"
-"      return B.JSString_methods.substring\$2(_this._uri, 0, t1);\n"
-"    },\n"
-"    get\$userInfo() {\n"
-"      var t1 = this._hostStart,\n"
-"        t2 = this._schemeEnd + 3;\n"
-"      return t1 > t2 ? B.JSString_methods.substring\$2(this._uri, t2, t1 - 1) : \"\";\n"
-"    },\n"
-"    get\$host() {\n"
-"      var t1 = this._hostStart;\n"
-"      return t1 > 0 ? B.JSString_methods.substring\$2(this._uri, t1, this._portStart) : \"\";\n"
-"    },\n"
-"    get\$port() {\n"
-"      var t1, _this = this;\n"
-"      if (_this.get\$hasPort())\n"
-"        return A.int_parse(B.JSString_methods.substring\$2(_this._uri, _this._portStart + 1, _this._pathStart), null);\n"
-"      t1 = _this._schemeEnd;\n"
-"      if (t1 === 4 && B.JSString_methods.startsWith\$1(_this._uri, \"http\"))\n"
-"        return 80;\n"
-"      if (t1 === 5 && B.JSString_methods.startsWith\$1(_this._uri, \"https\"))\n"
-"        return 443;\n"
-"      return 0;\n"
-"    },\n"
-"    get\$path() {\n"
-"      return B.JSString_methods.substring\$2(this._uri, this._pathStart, this._queryStart);\n"
-"    },\n"
-"    get\$query() {\n"
-"      var t1 = this._queryStart,\n"
-"        t2 = this._fragmentStart;\n"
-"      return t1 < t2 ? B.JSString_methods.substring\$2(this._uri, t1 + 1, t2) : \"\";\n"
-"    },\n"
-"    get\$fragment() {\n"
-"      var t1 = this._fragmentStart,\n"
-"        t2 = this._uri;\n"
-"      return t1 < t2.length ? B.JSString_methods.substring\$1(t2, t1 + 1) : \"\";\n"
-"    },\n"
-"    _isPort\$1(port) {\n"
-"      var portDigitStart = this._portStart + 1;\n"
-"      return portDigitStart + port.length === this._pathStart && B.JSString_methods.startsWith\$2(this._uri, port, portDigitStart);\n"
-"    },\n"
-"    removeFragment\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._fragmentStart,\n"
-"        t2 = _this._uri;\n"
-"      if (t1 >= t2.length)\n"
-"        return _this;\n"
-"      return new A._SimpleUri(B.JSString_methods.substring\$2(t2, 0, t1), _this._schemeEnd, _this._hostStart, _this._portStart, _this._pathStart, _this._queryStart, t1, _this._schemeCache);\n"
-"    },\n"
-"    replace\$2\$path\$scheme(path, scheme) {\n"
-"      var schemeChanged, isFile, t1, userInfo, port, host, hasAuthority, t2, query, fragment, _this = this, _null = null;\n"
-"      if (scheme != null) {\n"
-"        scheme = A._Uri__makeScheme(scheme, 0, scheme.length);\n"
-"        schemeChanged = !(_this._schemeEnd === scheme.length && B.JSString_methods.startsWith\$1(_this._uri, scheme));\n"
-"      } else {\n"
-"        scheme = _this.get\$scheme();\n"
-"        schemeChanged = false;\n"
-"      }\n"
-"      isFile = scheme === \"file\";\n"
-"      t1 = _this._hostStart;\n"
-"      userInfo = t1 > 0 ? B.JSString_methods.substring\$2(_this._uri, _this._schemeEnd + 3, t1) : \"\";\n"
-"      port = _this.get\$hasPort() ? _this.get\$port() : _null;\n"
-"      if (schemeChanged)\n"
-"        port = A._Uri__makePort(port, scheme);\n"
-"      t1 = _this._hostStart;\n"
-"      if (t1 > 0)\n"
-"        host = B.JSString_methods.substring\$2(_this._uri, t1, _this._portStart);\n"
-"      else\n"
-"        host = userInfo.length !== 0 || port != null || isFile ? \"\" : _null;\n"
-"      hasAuthority = host != null;\n"
-"      if (path != null) {\n"
-"        t1 = path.length;\n"
-"        path = A._Uri__makePath(path, 0, t1, _null, scheme, hasAuthority);\n"
-"      } else {\n"
-"        path = B.JSString_methods.substring\$2(_this._uri, _this._pathStart, _this._queryStart);\n"
-"        if (!isFile)\n"
-"          t1 = hasAuthority && path.length !== 0;\n"
-"        else\n"
-"          t1 = true;\n"
-"        if (t1 && !B.JSString_methods.startsWith\$1(path, \"/\"))\n"
-"          path = \"/\" + path;\n"
-"      }\n"
-"      t1 = _this._queryStart;\n"
-"      t2 = _this._fragmentStart;\n"
-"      query = t1 < t2 ? B.JSString_methods.substring\$2(_this._uri, t1 + 1, t2) : _null;\n"
-"      t1 = _this._fragmentStart;\n"
-"      t2 = _this._uri;\n"
-"      fragment = t1 < t2.length ? B.JSString_methods.substring\$1(t2, t1 + 1) : _null;\n"
-"      return A._Uri\$_internal(scheme, userInfo, host, port, path, query, fragment);\n"
-"    },\n"
-"    replace\$1\$scheme(scheme) {\n"
-"      return this.replace\$2\$path\$scheme(null, scheme);\n"
-"    },\n"
-"    replace\$1\$path(path) {\n"
-"      return this.replace\$2\$path\$scheme(path, null);\n"
-"    },\n"
-"    resolve\$1(reference) {\n"
-"      return this.resolveUri\$1(A.Uri_parse(reference));\n"
-"    },\n"
-"    resolveUri\$1(reference) {\n"
-"      if (reference instanceof A._SimpleUri)\n"
-"        return this._simpleMerge\$2(this, reference);\n"
-"      return this._toNonSimple\$0().resolveUri\$1(reference);\n"
-"    },\n"
-"    _simpleMerge\$2(base, ref) {\n"
-"      var t2, t3, t4, isSimple, delta, refStart, basePathStart, packageNameEnd, basePathStart0, baseStart, baseEnd, baseUri, baseStart0, backCount, refStart0, insert,\n"
-"        t1 = ref._schemeEnd;\n"
-"      if (t1 > 0)\n"
-"        return ref;\n"
-"      t2 = ref._hostStart;\n"
-"      if (t2 > 0) {\n"
-"        t3 = base._schemeEnd;\n"
-"        if (t3 <= 0)\n"
-"          return ref;\n"
-"        t4 = t3 === 4;\n"
-"        if (t4 && B.JSString_methods.startsWith\$1(base._uri, \"file\"))\n"
-"          isSimple = ref._pathStart !== ref._queryStart;\n"
-"        else if (t4 && B.JSString_methods.startsWith\$1(base._uri, \"http\"))\n"
-"          isSimple = !ref._isPort\$1(\"80\");\n"
-"        else\n"
-"          isSimple = !(t3 === 5 && B.JSString_methods.startsWith\$1(base._uri, \"https\")) || !ref._isPort\$1(\"443\");\n"
-"        if (isSimple) {\n"
-"          delta = t3 + 1;\n"
-"          return new A._SimpleUri(B.JSString_methods.substring\$2(base._uri, 0, delta) + B.JSString_methods.substring\$1(ref._uri, t1 + 1), t3, t2 + delta, ref._portStart + delta, ref._pathStart + delta, ref._queryStart + delta, ref._fragmentStart + delta, base._schemeCache);\n"
-"        } else\n"
-"          return this._toNonSimple\$0().resolveUri\$1(ref);\n"
-"      }\n"
-"      refStart = ref._pathStart;\n"
-"      t1 = ref._queryStart;\n"
-"      if (refStart === t1) {\n"
-"        t2 = ref._fragmentStart;\n"
-"        if (t1 < t2) {\n"
-"          t3 = base._queryStart;\n"
-"          delta = t3 - t1;\n"
-"          return new A._SimpleUri(B.JSString_methods.substring\$2(base._uri, 0, t3) + B.JSString_methods.substring\$1(ref._uri, t1), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, t1 + delta, t2 + delta, base._schemeCache);\n"
-"        }\n"
-"        t1 = ref._uri;\n"
-"        if (t2 < t1.length) {\n"
-"          t3 = base._fragmentStart;\n"
-"          return new A._SimpleUri(B.JSString_methods.substring\$2(base._uri, 0, t3) + B.JSString_methods.substring\$1(t1, t2), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, base._queryStart, t2 + (t3 - t2), base._schemeCache);\n"
-"        }\n"
-"        return base.removeFragment\$0();\n"
-"      }\n"
-"      t2 = ref._uri;\n"
-"      if (B.JSString_methods.startsWith\$2(t2, \"/\", refStart)) {\n"
-"        basePathStart = base._pathStart;\n"
-"        packageNameEnd = A._SimpleUri__packageNameEnd(this);\n"
-"        basePathStart0 = packageNameEnd > 0 ? packageNameEnd : basePathStart;\n"
-"        delta = basePathStart0 - refStart;\n"
-"        return new A._SimpleUri(B.JSString_methods.substring\$2(base._uri, 0, basePathStart0) + B.JSString_methods.substring\$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, basePathStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);\n"
-"      }\n"
-"      baseStart = base._pathStart;\n"
-"      baseEnd = base._queryStart;\n"
-"      if (baseStart === baseEnd && base._hostStart > 0) {\n"
-"        while (B.JSString_methods.startsWith\$2(t2, \"../\", refStart))\n"
-"          refStart += 3;\n"
-"        delta = baseStart - refStart + 1;\n"
-"        return new A._SimpleUri(B.JSString_methods.substring\$2(base._uri, 0, baseStart) + \"/\" + B.JSString_methods.substring\$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);\n"
-"      }\n"
-"      baseUri = base._uri;\n"
-"      packageNameEnd = A._SimpleUri__packageNameEnd(this);\n"
-"      if (packageNameEnd >= 0)\n"
-"        baseStart0 = packageNameEnd;\n"
-"      else\n"
-"        for (baseStart0 = baseStart; B.JSString_methods.startsWith\$2(baseUri, \"../\", baseStart0);)\n"
-"          baseStart0 += 3;\n"
-"      backCount = 0;\n"
-"      for (;;) {\n"
-"        refStart0 = refStart + 3;\n"
-"        if (!(refStart0 <= t1 && B.JSString_methods.startsWith\$2(t2, \"../\", refStart)))\n"
-"          break;\n"
-"        ++backCount;\n"
-"        refStart = refStart0;\n"
-"      }\n"
-"      for (t3 = baseUri.length, insert = \"\"; baseEnd > baseStart0;) {\n"
-"        --baseEnd;\n"
-"        if (!(baseEnd >= 0 && baseEnd < t3))\n"
-"          return A.ioore(baseUri, baseEnd);\n"
-"        if (baseUri.charCodeAt(baseEnd) === 47) {\n"
-"          if (backCount === 0) {\n"
-"            insert = \"/\";\n"
-"            break;\n"
-"          }\n"
-"          --backCount;\n"
-"          insert = \"/\";\n"
-"        }\n"
-"      }\n"
-"      if (baseEnd === baseStart0 && base._schemeEnd <= 0 && !B.JSString_methods.startsWith\$2(baseUri, \"/\", baseStart)) {\n"
-"        refStart -= backCount * 3;\n"
-"        insert = \"\";\n"
-"      }\n"
-"      delta = baseEnd - refStart + insert.length;\n"
-"      return new A._SimpleUri(B.JSString_methods.substring\$2(baseUri, 0, baseEnd) + insert + B.JSString_methods.substring\$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);\n"
-"    },\n"
-"    toFilePath\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = _this._schemeEnd;\n"
-"      if (t1 >= 0) {\n"
-"        t2 = !(t1 === 4 && B.JSString_methods.startsWith\$1(_this._uri, \"file\"));\n"
-"        t1 = t2;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"Cannot extract a file path from a \" + _this.get\$scheme() + \" URI\"));\n"
-"      t1 = _this._queryStart;\n"
-"      t2 = _this._uri;\n"
-"      if (t1 < t2.length) {\n"
-"        if (t1 < _this._fragmentStart)\n"
-"          throw A.wrapException(A.UnsupportedError\$(string\$.Cannotfq));\n"
-"        throw A.wrapException(A.UnsupportedError\$(string\$.Cannotff));\n"
-"      }\n"
-"      if (_this._hostStart < _this._portStart)\n"
-"        A.throwExpression(A.UnsupportedError\$(string\$.Cannotn));\n"
-"      t1 = B.JSString_methods.substring\$2(t2, _this._pathStart, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var t1 = this._hashCodeCache;\n"
-"      return t1 == null ? this._hashCodeCache = B.JSString_methods.get\$hashCode(this._uri) : t1;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      return type\$.Uri._is(other) && this._uri === other.toString\$0(0);\n"
-"    },\n"
-"    _toNonSimple\$0() {\n"
-"      var _this = this, _null = null,\n"
-"        t1 = _this.get\$scheme(),\n"
-"        t2 = _this.get\$userInfo(),\n"
-"        t3 = _this._hostStart > 0 ? _this.get\$host() : _null,\n"
-"        t4 = _this.get\$hasPort() ? _this.get\$port() : _null,\n"
-"        t5 = _this._uri,\n"
-"        t6 = _this._queryStart,\n"
-"        t7 = B.JSString_methods.substring\$2(t5, _this._pathStart, t6),\n"
-"        t8 = _this._fragmentStart;\n"
-"      t6 = t6 < t8 ? _this.get\$query() : _null;\n"
-"      return A._Uri\$_internal(t1, t2, t3, t4, t7, t6, t8 < t5.length ? _this.get\$fragment() : _null);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this._uri;\n"
-"    },\n"
-"    \$isUri: 1\n"
-"  };\n"
-"  A._DataUri.prototype = {};\n"
-"  A.NullRejectionException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"Promise was rejected with a value of `\" + (this.isUndefined ? \"undefined\" : \"null\") + \"`.\";\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.FutureOfJSAnyToJSPromise_get_toJS_closure.prototype = {\n"
-"    call\$2(resolve, reject) {\n"
-"      var t1 = type\$.JavaScriptFunction;\n"
-"      this._this.then\$1\$2\$onError(new A.FutureOfJSAnyToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfJSAnyToJSPromise_get_toJS__closure0(t1._as(reject)), type\$.nullable_Object);\n"
-"    },\n"
-"    \$signature: 20\n"
-"  };\n"
-"  A.FutureOfJSAnyToJSPromise_get_toJS__closure.prototype = {\n"
-"    call\$1(value) {\n"
-"      var t1 = this.resolve;\n"
-"      t1.call(t1, value);\n"
-"      return value;\n"
-"    },\n"
-"    \$signature: 10\n"
-"  };\n"
-"  A.FutureOfJSAnyToJSPromise_get_toJS__closure0.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      var jsError = A._convertError(A._asObject(error), type\$.StackTrace._as(stackTrace)),\n"
-"        t1 = this.reject;\n"
-"      t1.call(t1, jsError);\n"
-"      return jsError;\n"
-"    },\n"
-"    \$signature: 21\n"
-"  };\n"
-"  A.FutureOfVoidToJSPromise_get_toJS_closure.prototype = {\n"
-"    call\$2(resolve, reject) {\n"
-"      var t1 = type\$.JavaScriptFunction;\n"
-"      this._this.then\$1\$2\$onError(new A.FutureOfVoidToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfVoidToJSPromise_get_toJS__closure0(t1._as(reject)), type\$.nullable_Object);\n"
-"    },\n"
-"    \$signature: 20\n"
-"  };\n"
-"  A.FutureOfVoidToJSPromise_get_toJS__closure.prototype = {\n"
-"    call\$1(__wc0_formal) {\n"
-"      var t1 = this.resolve;\n"
-"      return t1.call(t1);\n"
-"    },\n"
-"    \$signature: 61\n"
-"  };\n"
-"  A.FutureOfVoidToJSPromise_get_toJS__closure0.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      var jsError = A._convertError(A._asObject(error), type\$.StackTrace._as(stackTrace)),\n"
-"        t1 = this.reject;\n"
-"      t1.call(t1, jsError);\n"
-"      return jsError;\n"
-"    },\n"
-"    \$signature: 21\n"
-"  };\n"
-"  A.jsify__convert.prototype = {\n"
-"    call\$1(o) {\n"
-"      var t1, convertedMap, key, convertedList;\n"
-"      if (A._noJsifyRequired(o))\n"
-"        return o;\n"
-"      t1 = this._convertedObjects;\n"
-"      if (t1.containsKey\$1(o))\n"
-"        return t1.\$index(0, o);\n"
-"      if (type\$.Map_dynamic_dynamic._is(o)) {\n"
-"        convertedMap = {};\n"
-"        t1.\$indexSet(0, o, convertedMap);\n"
-"        for (t1 = o.get\$keys(), t1 = t1.get\$iterator(t1); t1.moveNext\$0();) {\n"
-"          key = t1.get\$current();\n"
-"          convertedMap[key] = this.call\$1(o.\$index(0, key));\n"
-"        }\n"
-"        return convertedMap;\n"
-"      } else if (type\$.Iterable_dynamic._is(o)) {\n"
-"        convertedList = [];\n"
-"        t1.\$indexSet(0, o, convertedList);\n"
-"        B.JSArray_methods.addAll\$1(convertedList, J.map\$1\$1\$ax(o, this, type\$.dynamic));\n"
-"        return convertedList;\n"
-"      } else\n"
-"        return o;\n"
-"    },\n"
-"    \$signature: 10\n"
-"  };\n"
-"  A.promiseToFuture_closure.prototype = {\n"
-"    call\$1(r) {\n"
-"      return this.completer.complete\$1(this.T._eval\$1(\"0/?\")._as(r));\n"
-"    },\n"
-"    \$signature: 3\n"
-"  };\n"
-"  A.promiseToFuture_closure0.prototype = {\n"
-"    call\$1(e) {\n"
-"      if (e == null)\n"
-"        return this.completer.completeError\$1(new A.NullRejectionException(e === undefined));\n"
-"      return this.completer.completeError\$1(e);\n"
-"    },\n"
-"    \$signature: 3\n"
-"  };\n"
-"  A.dartify_convert.prototype = {\n"
-"    call\$1(o) {\n"
-"      var t1, millisSinceEpoch, proto, t2, dartObject, originalKeys, dartKeys, i, jsKey, dartKey, l, \$length;\n"
-"      if (A._noDartifyRequired(o))\n"
-"        return o;\n"
-"      t1 = this._convertedObjects;\n"
-"      o.toString;\n"
-"      if (t1.containsKey\$1(o))\n"
-"        return t1.\$index(0, o);\n"
-"      if (o instanceof Date) {\n"
-"        millisSinceEpoch = o.getTime();\n"
-"        if (millisSinceEpoch < -864e13 || millisSinceEpoch > 864e13)\n"
-"          A.throwExpression(A.RangeError\$range(millisSinceEpoch, -864e13, 864e13, \"millisecondsSinceEpoch\", null));\n"
-"        A.checkNotNullable(true, \"isUtc\", type\$.bool);\n"
-"        return new A.DateTime(millisSinceEpoch, 0, true);\n"
-"      }\n"
-"      if (o instanceof RegExp)\n"
-"        throw A.wrapException(A.ArgumentError\$(\"structured clone of RegExp\", null));\n"
-"      if (o instanceof Promise)\n"
-"        return A.promiseToFuture(o, type\$.nullable_Object);\n"
-"      proto = Object.getPrototypeOf(o);\n"
-"      if (proto === Object.prototype || proto === null) {\n"
-"        t2 = type\$.nullable_Object;\n"
-"        dartObject = A.LinkedHashMap_LinkedHashMap\$_empty(t2, t2);\n"
-"        t1.\$indexSet(0, o, dartObject);\n"
-"        originalKeys = Object.keys(o);\n"
-"        dartKeys = [];\n"
-"        for (t1 = J.getInterceptor\$ax(originalKeys), t2 = t1.get\$iterator(originalKeys); t2.moveNext\$0();)\n"
-"          dartKeys.push(A.dartify(t2.get\$current()));\n"
-"        for (i = 0; i < t1.get\$length(originalKeys); ++i) {\n"
-"          jsKey = t1.\$index(originalKeys, i);\n"
-"          if (!(i < dartKeys.length))\n"
-"            return A.ioore(dartKeys, i);\n"
-"          dartKey = dartKeys[i];\n"
-"          if (jsKey != null)\n"
-"            dartObject.\$indexSet(0, dartKey, this.call\$1(o[jsKey]));\n"
-"        }\n"
-"        return dartObject;\n"
-"      }\n"
-"      if (o instanceof Array) {\n"
-"        l = o;\n"
-"        dartObject = [];\n"
-"        t1.\$indexSet(0, o, dartObject);\n"
-"        \$length = A._asInt(o.length);\n"
-"        for (t1 = J.getInterceptor\$asx(l), i = 0; i < \$length; ++i)\n"
-"          dartObject.push(this.call\$1(t1.\$index(l, i)));\n"
-"        return dartObject;\n"
-"      }\n"
-"      return o;\n"
-"    },\n"
-"    \$signature: 10\n"
-"  };\n"
-"  A._JSRandom.prototype = {\n"
-"    nextInt\$1(max) {\n"
-"      if (max <= 0 || max > 4294967296)\n"
-"        throw A.wrapException(A.RangeError\$(string\$.max_mu + max));\n"
-"      return Math.random() * max >>> 0;\n"
-"    }\n"
-"  };\n"
-"  A._JSSecureRandom.prototype = {\n"
-"    _JSSecureRandom\$0() {\n"
-"      var \$crypto = self.crypto;\n"
-"      if (\$crypto != null)\n"
-"        if (\$crypto.getRandomValues != null)\n"
-"          return;\n"
-"      throw A.wrapException(A.UnsupportedError\$(\"No source of cryptographically secure random numbers available.\"));\n"
-"    },\n"
-"    nextInt\$1(max) {\n"
-"      var byteCount, t1, start, randomLimit, t2, t3, random, result;\n"
-"      if (max <= 0 || max > 4294967296)\n"
-"        throw A.wrapException(A.RangeError\$(string\$.max_mu + max));\n"
-"      if (max > 255)\n"
-"        if (max > 65535)\n"
-"          byteCount = max > 16777215 ? 4 : 3;\n"
-"        else\n"
-"          byteCount = 2;\n"
-"      else\n"
-"        byteCount = 1;\n"
-"      t1 = this._math\$_buffer;\n"
-"      t1.\$flags & 2 && A.throwUnsupportedOperation(t1, 11);\n"
-"      t1.setUint32(0, 0, false);\n"
-"      start = 4 - byteCount;\n"
-"      randomLimit = A._asInt(Math.pow(256, byteCount));\n"
-"      for (t2 = max - 1, t3 = (max & t2) === 0;;) {\n"
-"        crypto.getRandomValues(J.asUint8List\$2\$x(B.NativeByteData_methods.get\$buffer(t1), start, byteCount));\n"
-"        random = t1.getUint32(0, false);\n"
-"        if (t3)\n"
-"          return (random & t2) >>> 0;\n"
-"        result = random % max;\n"
-"        if (random - result + max < randomLimit)\n"
-"          return result;\n"
-"      }\n"
-"    }\n"
-"  };\n"
-"  A.AsyncMemoizer.prototype = {};\n"
-"  A.ErrorResult.prototype = {\n"
-"    complete\$1(completer) {\n"
-"      completer.completeError\$2(this.error, this.stackTrace);\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return (J.get\$hashCode\$(this.error) ^ A.Primitives_objectHashCode(this.stackTrace) ^ 492929599) >>> 0;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.ErrorResult && J.\$eq\$(this.error, other.error) && this.stackTrace === other.stackTrace;\n"
-"    },\n"
-"    \$isResult: 1\n"
-"  };\n"
-"  A.ValueResult.prototype = {\n"
-"    complete\$1(completer) {\n"
-"      this.\$ti._eval\$1(\"Completer<1>\")._as(completer).complete\$1(this.value);\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return (J.get\$hashCode\$(this.value) ^ 842997089) >>> 0;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.ValueResult && J.\$eq\$(this.value, other.value);\n"
-"    },\n"
-"    \$isResult: 1\n"
-"  };\n"
-"  A.StreamQueue.prototype = {\n"
-"    get\$hasNext() {\n"
-"      var t1 = new A._Future(\$.Zone__current, type\$._Future_bool);\n"
-"      this._addRequest\$1(new A._HasNextRequest(new A._AsyncCompleter(t1, type\$._AsyncCompleter_bool), this.\$ti._eval\$1(\"_HasNextRequest<1>\")));\n"
-"      return t1;\n"
-"    },\n"
-"    _updateRequests\$0() {\n"
-"      var t1, t2, t3, t4, t5, _this = this;\n"
-"      for (t1 = _this._requestQueue, t2 = _this._eventQueue, t3 = t1.\$ti._precomputed1; !t1.get\$isEmpty(0);) {\n"
-"        t4 = t1._head;\n"
-"        if (t4 === t1._tail)\n"
-"          A.throwExpression(A.IterableElementError_noElement());\n"
-"        t5 = t1._table;\n"
-"        if (!(t4 < t5.length))\n"
-"          return A.ioore(t5, t4);\n"
-"        t4 = t5[t4];\n"
-"        if (t4 == null)\n"
-"          t4 = t3._as(t4);\n"
-"        if (t4.update\$2(t2, _this._isDone))\n"
-"          t1.removeFirst\$0();\n"
-"        else\n"
-"          return;\n"
-"      }\n"
-"      if (!_this._isDone)\n"
-"        _this._stream_queue\$_subscription.pause\$0();\n"
-"    },\n"
-"    _ensureListening\$0() {\n"
-"      var t1, _this = this;\n"
-"      if (_this._isDone)\n"
-"        return;\n"
-"      t1 = _this._stream_queue\$_subscription;\n"
-"      if (t1 == null)\n"
-"        _this._stream_queue\$_subscription = _this._stream_queue\$_source.listen\$3\$onDone\$onError(new A.StreamQueue__ensureListening_closure(_this), new A.StreamQueue__ensureListening_closure0(_this), new A.StreamQueue__ensureListening_closure1(_this));\n"
-"      else\n"
-"        t1.resume\$0();\n"
-"    },\n"
-"    _addResult\$1(result) {\n"
-"      var t1, _this = this;\n"
-"      _this.\$ti._eval\$1(\"Result<1>\")._as(result);\n"
-"      ++_this._eventsReceived;\n"
-"      t1 = _this._eventQueue;\n"
-"      t1._queue_list\$_add\$1(t1.\$ti._eval\$1(\"QueueList.E\")._as(result));\n"
-"      _this._updateRequests\$0();\n"
-"    },\n"
-"    _addRequest\$1(request) {\n"
-"      var t1, _this = this;\n"
-"      _this.\$ti._eval\$1(\"_EventRequest<1>\")._as(request);\n"
-"      t1 = _this._requestQueue;\n"
-"      if (t1._head === t1._tail) {\n"
-"        if (request.update\$2(_this._eventQueue, _this._isDone))\n"
-"          return;\n"
-"        _this._ensureListening\$0();\n"
-"      }\n"
-"      t1._collection\$_add\$1(t1.\$ti._precomputed1._as(request));\n"
-"    }\n"
-"  };\n"
-"  A.StreamQueue__ensureListening_closure.prototype = {\n"
-"    call\$1(data) {\n"
-"      var t1 = this.\$this,\n"
-"        t2 = t1.\$ti;\n"
-"      t1._addResult\$1(new A.ValueResult(t2._precomputed1._as(data), t2._eval\$1(\"ValueResult<1>\")));\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"~(1)\");\n"
-"    }\n"
-"  };\n"
-"  A.StreamQueue__ensureListening_closure1.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      this.\$this._addResult\$1(new A.ErrorResult(error, stackTrace));\n"
-"    },\n"
-"    \$signature: 8\n"
-"  };\n"
-"  A.StreamQueue__ensureListening_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this;\n"
-"      t1._stream_queue\$_subscription = null;\n"
-"      t1._isDone = true;\n"
-"      t1._updateRequests\$0();\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._NextRequest.prototype = {\n"
-"    update\$2(events, isDone) {\n"
-"      var t1, result;\n"
-"      this.\$ti._eval\$1(\"QueueList<Result<1>>\")._as(events);\n"
-"      if (!events.get\$isEmpty(events)) {\n"
-"        t1 = events._queue_list\$_head;\n"
-"        if (t1 === events._queue_list\$_tail)\n"
-"          A.throwExpression(A.StateError\$(\"No element\"));\n"
-"        result = J.\$index\$asx(events._queue_list\$_table, t1);\n"
-"        if (result == null)\n"
-"          result = events.\$ti._eval\$1(\"QueueList.E\")._as(result);\n"
-"        J.\$indexSet\$ax(events._queue_list\$_table, events._queue_list\$_head, null);\n"
-"        events._queue_list\$_head = (events._queue_list\$_head + 1 & J.get\$length\$asx(events._queue_list\$_table) - 1) >>> 0;\n"
-"        result.complete\$1(this._stream_queue\$_completer);\n"
-"        return true;\n"
-"      }\n"
-"      if (isDone) {\n"
-"        this._stream_queue\$_completer.completeError\$2(new A.StateError(\"No elements\"), A.StackTrace_current());\n"
-"        return true;\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    \$is_EventRequest: 1\n"
-"  };\n"
-"  A._HasNextRequest.prototype = {\n"
-"    update\$2(events, isDone) {\n"
-"      this.\$ti._eval\$1(\"QueueList<Result<1>>\")._as(events);\n"
-"      if (!events.get\$isEmpty(events)) {\n"
-"        this._stream_queue\$_completer.complete\$1(true);\n"
-"        return true;\n"
-"      }\n"
-"      if (isDone) {\n"
-"        this._stream_queue\$_completer.complete\$1(false);\n"
-"        return true;\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    \$is_EventRequest: 1\n"
-"  };\n"
-"  A.CanonicalizedMap.prototype = {\n"
-"    \$index(_, key) {\n"
-"      var pair, _this = this;\n"
-"      if (!_this._isValidKey\$1(key))\n"
-"        return null;\n"
-"      pair = _this._base.\$index(0, _this._canonicalize.call\$1(_this.\$ti._eval\$1(\"CanonicalizedMap.K\")._as(key)));\n"
-"      return pair == null ? null : pair.value;\n"
-"    },\n"
-"    \$indexSet(_, key, value) {\n"
-"      var _this = this,\n"
-"        t1 = _this.\$ti;\n"
-"      t1._eval\$1(\"CanonicalizedMap.K\")._as(key);\n"
-"      t1._eval\$1(\"CanonicalizedMap.V\")._as(value);\n"
-"      if (!_this._isValidKey\$1(key))\n"
-"        return;\n"
-"      _this._base.\$indexSet(0, _this._canonicalize.call\$1(key), new A.MapEntry(key, value, t1._eval\$1(\"MapEntry<CanonicalizedMap.K,CanonicalizedMap.V>\")));\n"
-"    },\n"
-"    addAll\$1(_, other) {\n"
-"      this.\$ti._eval\$1(\"Map<CanonicalizedMap.K,CanonicalizedMap.V>\")._as(other).forEach\$1(0, new A.CanonicalizedMap_addAll_closure(this));\n"
-"    },\n"
-"    cast\$2\$0(_, \$K2, \$V2) {\n"
-"      return this._base.cast\$2\$0(0, \$K2, \$V2);\n"
-"    },\n"
-"    containsKey\$1(key) {\n"
-"      var _this = this;\n"
-"      if (!_this._isValidKey\$1(key))\n"
-"        return false;\n"
-"      return _this._base.containsKey\$1(_this._canonicalize.call\$1(_this.\$ti._eval\$1(\"CanonicalizedMap.K\")._as(key)));\n"
-"    },\n"
-"    forEach\$1(_, f) {\n"
-"      this._base.forEach\$1(0, new A.CanonicalizedMap_forEach_closure(this, this.\$ti._eval\$1(\"~(CanonicalizedMap.K,CanonicalizedMap.V)\")._as(f)));\n"
-"    },\n"
-"    get\$isEmpty(_) {\n"
-"      return this._base.__js_helper\$_length === 0;\n"
-"    },\n"
-"    get\$isNotEmpty(_) {\n"
-"      return this._base.__js_helper\$_length !== 0;\n"
-"    },\n"
-"    get\$keys() {\n"
-"      var t1 = this._base,\n"
-"        t2 = A._instanceType(t1)._eval\$1(\"LinkedHashMapValuesIterable<2>\"),\n"
-"        t3 = this.\$ti._eval\$1(\"CanonicalizedMap.K\");\n"
-"      return A.MappedIterable_MappedIterable(new A.LinkedHashMapValuesIterable(t1, t2), t2._bind\$1(t3)._eval\$1(\"1(Iterable.E)\")._as(new A.CanonicalizedMap_keys_closure(this)), t2._eval\$1(\"Iterable.E\"), t3);\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this._base.__js_helper\$_length;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.MapBase_mapToString(this);\n"
-"    },\n"
-"    _isValidKey\$1(key) {\n"
-"      return this.\$ti._eval\$1(\"CanonicalizedMap.K\")._is(key);\n"
-"    },\n"
-"    \$isMap: 1\n"
-"  };\n"
-"  A.CanonicalizedMap_addAll_closure.prototype = {\n"
-"    call\$2(key, value) {\n"
-"      var t1 = this.\$this,\n"
-"        t2 = t1.\$ti;\n"
-"      t2._eval\$1(\"CanonicalizedMap.K\")._as(key);\n"
-"      t2._eval\$1(\"CanonicalizedMap.V\")._as(value);\n"
-"      t1.\$indexSet(0, key, value);\n"
-"      return value;\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"~(CanonicalizedMap.K,CanonicalizedMap.V)\");\n"
-"    }\n"
-"  };\n"
-"  A.CanonicalizedMap_forEach_closure.prototype = {\n"
-"    call\$2(key, pair) {\n"
-"      var t1 = this.\$this.\$ti;\n"
-"      t1._eval\$1(\"CanonicalizedMap.C\")._as(key);\n"
-"      t1._eval\$1(\"MapEntry<CanonicalizedMap.K,CanonicalizedMap.V>\")._as(pair);\n"
-"      return this.f.call\$2(pair.key, pair.value);\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"~(CanonicalizedMap.C,MapEntry<CanonicalizedMap.K,CanonicalizedMap.V>)\");\n"
-"    }\n"
-"  };\n"
-"  A.CanonicalizedMap_keys_closure.prototype = {\n"
-"    call\$1(pair) {\n"
-"      return this.\$this.\$ti._eval\$1(\"MapEntry<CanonicalizedMap.K,CanonicalizedMap.V>\")._as(pair).key;\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.\$this.\$ti._eval\$1(\"CanonicalizedMap.K(MapEntry<CanonicalizedMap.K,CanonicalizedMap.V>)\");\n"
-"    }\n"
-"  };\n"
-"  A.QueueList.prototype = {\n"
-"    add\$1(_, element) {\n"
-"      this._queue_list\$_add\$1(A._instanceType(this)._eval\$1(\"QueueList.E\")._as(element));\n"
-"    },\n"
-"    cast\$1\$0(_, \$T) {\n"
-"      return new A._CastQueueList(this, J.cast\$1\$0\$ax(this._queue_list\$_table, \$T), -1, -1, A._instanceType(this)._eval\$1(\"@<QueueList.E>\")._bind\$1(\$T)._eval\$1(\"_CastQueueList<1,2>\"));\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return A.Iterable_iterableToFullString(this, \"{\", \"}\");\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return (this.get\$_queue_list\$_tail() - this.get\$_queue_list\$_head() & J.get\$length\$asx(this._queue_list\$_table) - 1) >>> 0;\n"
-"    },\n"
-"    set\$length(_, value) {\n"
-"      var delta, newTail, t1, t2, _this = this;\n"
-"      if (value < 0)\n"
-"        throw A.wrapException(A.RangeError\$(\"Length \" + value + \" may not be negative.\"));\n"
-"      if (value > _this.get\$length(0) && !A._instanceType(_this)._eval\$1(\"QueueList.E\")._is(null))\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"The length can only be increased when the element type is nullable, but the current element type is `\" + A.createRuntimeType(A._instanceType(_this)._eval\$1(\"QueueList.E\")).toString\$0(0) + \"`.\"));\n"
-"      delta = value - _this.get\$length(0);\n"
-"      if (delta >= 0) {\n"
-"        if (J.get\$length\$asx(_this._queue_list\$_table) <= value)\n"
-"          _this._preGrow\$1(value);\n"
-"        _this.set\$_queue_list\$_tail((_this.get\$_queue_list\$_tail() + delta & J.get\$length\$asx(_this._queue_list\$_table) - 1) >>> 0);\n"
-"        return;\n"
-"      }\n"
-"      newTail = _this.get\$_queue_list\$_tail() + delta;\n"
-"      t1 = _this._queue_list\$_table;\n"
-"      if (newTail >= 0)\n"
-"        J.fillRange\$3\$ax(t1, newTail, _this.get\$_queue_list\$_tail(), null);\n"
-"      else {\n"
-"        newTail += J.get\$length\$asx(t1);\n"
-"        J.fillRange\$3\$ax(_this._queue_list\$_table, 0, _this.get\$_queue_list\$_tail(), null);\n"
-"        t1 = _this._queue_list\$_table;\n"
-"        t2 = J.getInterceptor\$asx(t1);\n"
-"        t2.fillRange\$3(t1, newTail, t2.get\$length(t1), null);\n"
-"      }\n"
-"      _this.set\$_queue_list\$_tail(newTail);\n"
-"    },\n"
-"    \$index(_, index) {\n"
-"      var t1, _this = this;\n"
-"      if (index < 0 || index >= _this.get\$length(0))\n"
-"        throw A.wrapException(A.RangeError\$(\"Index \" + index + \" must be in the range [0..\" + _this.get\$length(0) + \").\"));\n"
-"      t1 = J.\$index\$asx(_this._queue_list\$_table, (_this.get\$_queue_list\$_head() + index & J.get\$length\$asx(_this._queue_list\$_table) - 1) >>> 0);\n"
-"      return t1 == null ? A._instanceType(_this)._eval\$1(\"QueueList.E\")._as(t1) : t1;\n"
-"    },\n"
-"    \$indexSet(_, index, value) {\n"
-"      var _this = this;\n"
-"      A._instanceType(_this)._eval\$1(\"QueueList.E\")._as(value);\n"
-"      if (index < 0 || index >= _this.get\$length(0))\n"
-"        throw A.wrapException(A.RangeError\$(\"Index \" + index + \" must be in the range [0..\" + _this.get\$length(0) + \").\"));\n"
-"      J.\$indexSet\$ax(_this._queue_list\$_table, (_this.get\$_queue_list\$_head() + index & J.get\$length\$asx(_this._queue_list\$_table) - 1) >>> 0, value);\n"
-"    },\n"
-"    _queue_list\$_add\$1(element) {\n"
-"      var newTable, split, _this = this,\n"
-"        t1 = A._instanceType(_this);\n"
-"      t1._eval\$1(\"QueueList.E\")._as(element);\n"
-"      J.\$indexSet\$ax(_this._queue_list\$_table, _this.get\$_queue_list\$_tail(), element);\n"
-"      _this.set\$_queue_list\$_tail((_this.get\$_queue_list\$_tail() + 1 & J.get\$length\$asx(_this._queue_list\$_table) - 1) >>> 0);\n"
-"      if (_this.get\$_queue_list\$_head() === _this.get\$_queue_list\$_tail()) {\n"
-"        newTable = A.List_List\$filled(J.get\$length\$asx(_this._queue_list\$_table) * 2, null, false, t1._eval\$1(\"QueueList.E?\"));\n"
-"        split = J.get\$length\$asx(_this._queue_list\$_table) - _this.get\$_queue_list\$_head();\n"
-"        B.JSArray_methods.setRange\$4(newTable, 0, split, _this._queue_list\$_table, _this.get\$_queue_list\$_head());\n"
-"        B.JSArray_methods.setRange\$4(newTable, split, split + _this.get\$_queue_list\$_head(), _this._queue_list\$_table, 0);\n"
-"        _this.set\$_queue_list\$_head(0);\n"
-"        _this.set\$_queue_list\$_tail(J.get\$length\$asx(_this._queue_list\$_table));\n"
-"        _this._queue_list\$_table = newTable;\n"
-"      }\n"
-"    },\n"
-"    _writeToList\$1(target) {\n"
-"      var \$length, firstPartSize, _this = this;\n"
-"      A._instanceType(_this)._eval\$1(\"List<QueueList.E?>\")._as(target);\n"
-"      if (_this.get\$_queue_list\$_head() <= _this.get\$_queue_list\$_tail()) {\n"
-"        \$length = _this.get\$_queue_list\$_tail() - _this.get\$_queue_list\$_head();\n"
-"        B.JSArray_methods.setRange\$4(target, 0, \$length, _this._queue_list\$_table, _this.get\$_queue_list\$_head());\n"
-"        return \$length;\n"
-"      } else {\n"
-"        firstPartSize = J.get\$length\$asx(_this._queue_list\$_table) - _this.get\$_queue_list\$_head();\n"
-"        B.JSArray_methods.setRange\$4(target, 0, firstPartSize, _this._queue_list\$_table, _this.get\$_queue_list\$_head());\n"
-"        B.JSArray_methods.setRange\$4(target, firstPartSize, firstPartSize + _this.get\$_queue_list\$_tail(), _this._queue_list\$_table, 0);\n"
-"        return _this.get\$_queue_list\$_tail() + firstPartSize;\n"
-"      }\n"
-"    },\n"
-"    _preGrow\$1(newElementCount) {\n"
-"      var _this = this,\n"
-"        newTable = A.List_List\$filled(A.QueueList__nextPowerOf2(newElementCount + B.JSInt_methods._shrOtherPositive\$1(newElementCount, 1)), null, false, A._instanceType(_this)._eval\$1(\"QueueList.E?\"));\n"
-"      _this.set\$_queue_list\$_tail(_this._writeToList\$1(newTable));\n"
-"      _this._queue_list\$_table = newTable;\n"
-"      _this.set\$_queue_list\$_head(0);\n"
-"    },\n"
-"    set\$_queue_list\$_head(_head) {\n"
-"      this._queue_list\$_head = A._asInt(_head);\n"
-"    },\n"
-"    set\$_queue_list\$_tail(_tail) {\n"
-"      this._queue_list\$_tail = A._asInt(_tail);\n"
-"    },\n"
-"    \$isEfficientLengthIterable: 1,\n"
-"    \$isQueue: 1,\n"
-"    \$isIterable: 1,\n"
-"    \$isList: 1,\n"
-"    get\$_queue_list\$_head() {\n"
-"      return this._queue_list\$_head;\n"
-"    },\n"
-"    get\$_queue_list\$_tail() {\n"
-"      return this._queue_list\$_tail;\n"
-"    }\n"
-"  };\n"
-"  A._CastQueueList.prototype = {\n"
-"    get\$_queue_list\$_head() {\n"
-"      return this._queue_list\$_delegate.get\$_queue_list\$_head();\n"
-"    },\n"
-"    set\$_queue_list\$_head(value) {\n"
-"      this._queue_list\$_delegate.set\$_queue_list\$_head(value);\n"
-"    },\n"
-"    get\$_queue_list\$_tail() {\n"
-"      return this._queue_list\$_delegate.get\$_queue_list\$_tail();\n"
-"    },\n"
-"    set\$_queue_list\$_tail(value) {\n"
-"      this._queue_list\$_delegate.set\$_queue_list\$_tail(value);\n"
-"    }\n"
-"  };\n"
-"  A._QueueList_Object_ListMixin.prototype = {};\n"
-"  A.BuildStatus.prototype = {\n"
-"    _enumToString\$0() {\n"
-"      return \"BuildStatus.\" + this._name;\n"
-"    },\n"
-"    toJson\$0() {\n"
-"      return this._name;\n"
-"    }\n"
-"  };\n"
-"  A.BuildStatus_BuildStatus\$fromJson_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return type\$.BuildStatus._as(e)._name === this.json;\n"
-"    },\n"
-"    \$signature: 30\n"
-"  };\n"
-"  A.BuildStatus_BuildStatus\$fromJson_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      throw A.wrapException(A.ArgumentError\$(\"Unknown BuildStatus: \" + this.json, null));\n"
-"    },\n"
-"    \$signature: 73\n"
-"  };\n"
-"  A.BuildResult.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"status\", this.status._name], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this !== other)\n"
-"        t1 = other instanceof A.BuildResult && A.getRuntimeTypeOfDartObject(this) === A.getRuntimeTypeOfDartObject(other) && this.status === other.status;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Primitives_objectHashCode(this.status);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"BuildResult(status: \" + this.status.toString\$0(0) + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.ConnectRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"appId\", this.appId, \"instanceId\", this.instanceId, \"entrypointPath\", this.entrypointPath], type\$.String, type\$.dynamic);\n"
-"    }\n"
-"  };\n"
-"  A.DebugEvent.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"kind\", this.kind, \"eventData\", this.eventData, \"timestamp\", this.timestamp], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1, _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (_this !== other)\n"
-"        t1 = other instanceof A.DebugEvent && A.getRuntimeTypeOfDartObject(_this) === A.getRuntimeTypeOfDartObject(other) && _this.kind === other.kind && _this.eventData === other.eventData && _this.timestamp === other.timestamp;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.kind, this.eventData, this.timestamp, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"DebugEvent(kind: \" + this.kind + \", eventData: \" + this.eventData + \", timestamp: \" + this.timestamp + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.BatchedDebugEvents.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t1 = J.map\$1\$1\$ax(this.events, new A.BatchedDebugEvents_toJson_closure(), type\$.Map_String_dynamic);\n"
-"      t1 = A.List_List\$_of(t1, t1.\$ti._eval\$1(\"ListIterable.E\"));\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"events\", t1], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this !== other)\n"
-"        t1 = other instanceof A.BatchedDebugEvents && A.getRuntimeTypeOfDartObject(this) === A.getRuntimeTypeOfDartObject(other) && A._listEquals(this.events, other.events, type\$.DebugEvent);\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hashAll(this.events);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"BatchedDebugEvents(events: \" + A.S(this.events) + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.BatchedDebugEvents_toJson_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return type\$.DebugEvent._as(e).toJson\$0();\n"
-"    },\n"
-"    \$signature: 74\n"
-"  };\n"
-"  A.DebugInfo.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = [\"DebugInfo\"];\n"
-"      B.JSArray_methods.addAll\$1(t1, [\"appEntrypointPath\", _this.appEntrypointPath]);\n"
-"      t2 = _this.appId;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"appId\", t2]);\n"
-"      t2 = _this.appInstanceId;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"appInstanceId\", t2]);\n"
-"      B.JSArray_methods.addAll\$1(t1, [\"appOrigin\", _this.appOrigin]);\n"
-"      B.JSArray_methods.addAll\$1(t1, [\"appUrl\", _this.appUrl]);\n"
-"      t2 = _this.authUrl;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"authUrl\", t2]);\n"
-"      t2 = _this.extensionUrl;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"extensionUrl\", t2]);\n"
-"      t2 = _this.isInternalBuild;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"isInternalBuild\", t2]);\n"
-"      t2 = _this.isFlutterApp;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"isFlutterApp\", t2]);\n"
-"      t2 = _this.workspaceName;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"workspaceName\", t2]);\n"
-"      return t1;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1, _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (_this !== other) {\n"
-"        t1 = false;\n"
-"        if (other instanceof A.DebugInfo)\n"
-"          if (A.getRuntimeTypeOfDartObject(_this) === A.getRuntimeTypeOfDartObject(other))\n"
-"            if (_this.appEntrypointPath === other.appEntrypointPath)\n"
-"              if (_this.appId == other.appId)\n"
-"                if (_this.appInstanceId == other.appInstanceId)\n"
-"                  if (_this.appOrigin === other.appOrigin)\n"
-"                    if (_this.appUrl === other.appUrl)\n"
-"                      if (_this.authUrl == other.authUrl)\n"
-"                        if (_this.extensionUrl == other.extensionUrl)\n"
-"                          if (_this.isInternalBuild == other.isInternalBuild)\n"
-"                            if (_this.isFlutterApp == other.isFlutterApp)\n"
-"                              t1 = _this.workspaceName == other.workspaceName;\n"
-"      } else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var _this = this;\n"
-"      return A.Object_hash(_this.appEntrypointPath, _this.appId, _this.appInstanceId, _this.appOrigin, _this.appUrl, _this.authUrl, null, _this.extensionUrl, _this.isInternalBuild, _this.isFlutterApp, _this.workspaceName, null, null);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var _this = this;\n"
-"      return \"DebugInfo { appEntrypointPath: \" + _this.appEntrypointPath + \", appId: \" + A.S(_this.appId) + \", appInstanceId: \" + A.S(_this.appInstanceId) + \", appOrigin: \" + _this.appOrigin + \", appUrl: \" + _this.appUrl + \", authUrl: \" + A.S(_this.authUrl) + \", dwdsVersion: null, extensionUrl: \" + A.S(_this.extensionUrl) + \", isInternalBuild: \" + A.S(_this.isInternalBuild) + \", isFlutterApp: \" + A.S(_this.isFlutterApp) + \", workspaceName: \" + A.S(_this.workspaceName) + \", tabUrl: null, tabId: null, }\";\n"
-"    }\n"
-"  };\n"
-"  A.DevToolsRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return [\"DevToolsRequest\", \"appId\", this.appId, \"instanceId\", this.instanceId];\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      t1 = false;\n"
-"      if (other instanceof A.DevToolsRequest)\n"
-"        if (other.appId === this.appId)\n"
-"          t1 = other.instanceId === this.instanceId;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var _null = null;\n"
-"      return A.Object_hash(this.appId, this.instanceId, _null, _null, _null, _null, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"DevToolsRequest { appId: \" + this.appId + \", instanceId: \" + this.instanceId + \", contextId: null, tabUrl: null, uriOnly: null, client: null, }\";\n"
-"    }\n"
-"  };\n"
-"  A.DevToolsResponse.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t1 = [\"DevToolsResponse\", \"success\", this.success, \"promptExtension\", this.promptExtension],\n"
-"        t2 = this.error;\n"
-"      if (t2 != null)\n"
-"        B.JSArray_methods.addAll\$1(t1, [\"error\", t2]);\n"
-"      return t1;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (_this === other)\n"
-"        return true;\n"
-"      return other instanceof A.DevToolsResponse && other.success === _this.success && other.promptExtension === _this.promptExtension && other.error == _this.error;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.success, this.promptExtension, this.error, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"DevToolsResponse { success: \" + this.success + \", promptExtension: \" + this.promptExtension + \", error: \" + A.S(this.error) + \" }\";\n"
-"    }\n"
-"  };\n"
-"  A.ErrorResponse.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"error\", this.error, \"stackTrace\", this.stackTrace], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      return other instanceof A.ErrorResponse && other.error === this.error && other.stackTrace === this.stackTrace;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.error, this.stackTrace, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"ErrorResponse(error: \" + this.error + \", stackTrace: \" + this.stackTrace + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.HotReloadRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"id\", this.id], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (other !== this)\n"
-"        t1 = other instanceof A.HotReloadRequest && this.id === other.id;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return B.JSString_methods.get\$hashCode(this.id);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"HotReloadRequest(id: \" + this.id + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.HotReloadResponse.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t2,\n"
-"        t1 = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"      t1.\$indexSet(0, \"id\", this.id);\n"
-"      t1.\$indexSet(0, \"success\", this.success);\n"
-"      t2 = this.errorMessage;\n"
-"      if (t2 != null)\n"
-"        t1.\$indexSet(0, \"error\", t2);\n"
-"      return t1;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1, _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (other !== _this)\n"
-"        t1 = other instanceof A.HotReloadResponse && _this.id === other.id && _this.success === other.success && _this.errorMessage == other.errorMessage;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.id, this.success, this.errorMessage, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"HotReloadResponse(id: \" + this.id + \", success: \" + this.success + \", errorMessage: \" + A.S(this.errorMessage) + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.HotRestartRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"id\", this.id], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var t1;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (other !== this)\n"
-"        t1 = other instanceof A.HotRestartRequest && this.id === other.id;\n"
-"      else\n"
-"        t1 = true;\n"
-"      return t1;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return B.JSString_methods.get\$hashCode(this.id);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"HotRestartRequest(id: \" + this.id + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.HotRestartResponse.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t2,\n"
-"        t1 = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"      t1.\$indexSet(0, \"id\", this.id);\n"
-"      t1.\$indexSet(0, \"success\", this.success);\n"
-"      t2 = this.errorMessage;\n"
-"      if (t2 != null)\n"
-"        t1.\$indexSet(0, \"error\", t2);\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A.PingRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return this === other || other instanceof A.PingRequest;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return 0;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"PingRequest\";\n"
-"    }\n"
-"  };\n"
-"  A.RegisterEvent.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"eventData\", this.eventData, \"timestamp\", this.timestamp], type\$.String, type\$.dynamic);\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (this === other)\n"
-"        return true;\n"
-"      return other instanceof A.RegisterEvent && other.eventData === this.eventData && other.timestamp === this.timestamp;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.eventData, this.timestamp, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"RegisterEvent(eventData: \" + this.eventData + \", timestamp: \" + this.timestamp + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.RunRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"    }\n"
-"  };\n"
-"  A.ServiceExtensionRequest.prototype = {\n"
-"    toJson\$0() {\n"
-"      return A.LinkedHashMap_LinkedHashMap\$_literal([\"id\", this.id, \"method\", this.method, \"args\", this.args], type\$.String, type\$.dynamic);\n"
-"    }\n"
-"  };\n"
-"  A.ServiceExtensionResponse.prototype = {\n"
-"    toJson\$0() {\n"
-"      var t2, _this = this,\n"
-"        t1 = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic);\n"
-"      t1.\$indexSet(0, \"id\", _this.id);\n"
-"      t1.\$indexSet(0, \"success\", _this.success);\n"
-"      t2 = _this.result;\n"
-"      if (t2 != null)\n"
-"        t1.\$indexSet(0, \"result\", t2);\n"
-"      t2 = _this.errorCode;\n"
-"      if (t2 != null)\n"
-"        t1.\$indexSet(0, \"errorCode\", t2);\n"
-"      t2 = _this.errorMessage;\n"
-"      if (t2 != null)\n"
-"        t1.\$indexSet(0, \"errorMessage\", t2);\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A.BatchedStreamController.prototype = {\n"
-"    _batchAndSendEvents\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, t2, t3, t4, t5, t6, t7, t8, now, lastEvent, duration, t1, buffer, lastSendTime, \$async\$temp1, \$async\$temp2;\n"
-"      var \$async\$_batchAndSendEvents\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              duration = A.Duration\$(\$async\$self._checkDelayMilliseconds);\n"
-"              t1 = \$async\$self.\$ti;\n"
-"              buffer = A._setArrayType([], t1._eval\$1(\"JSArray<1>\"));\n"
-"              lastSendTime = Date.now();\n"
-"              t2 = \$async\$self._batchDelayMilliseconds, t3 = \$async\$self._outputController, t4 = A._instanceType(t3), t1 = t1._precomputed1, t5 = t4._eval\$1(\"_DelayedData<1>\");\n"
-"            case 2:\n"
-"              // for condition\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(\$async\$self._hasEventOrTimeOut\$1(duration), \$async\$_batchAndSendEvents\$0);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"              if (!\$async\$result) {\n"
-"                // goto after for\n"
-"                \$async\$goto = 3;\n"
-"                break;\n"
-"              }\n"
-"              \$async\$goto = 7;\n"
-"              return A._asyncAwait(\$async\$self._hasEventDuring\$1(duration), \$async\$_batchAndSendEvents\$0);\n"
-"            case 7:\n"
-"              // returning from await.\n"
-"              \$async\$goto = \$async\$result ? 5 : 6;\n"
-"              break;\n"
-"            case 5:\n"
-"              // then\n"
-"              t6 = \$async\$self.__BatchedStreamController__inputQueue_A;\n"
-"              t6 === \$ && A.throwLateFieldNI(\"_inputQueue\");\n"
-"              t7 = t6.\$ti;\n"
-"              t8 = new A._Future(\$.Zone__current, t7._eval\$1(\"_Future<1>\"));\n"
-"              t6._addRequest\$1(new A._NextRequest(new A._AsyncCompleter(t8, t7._eval\$1(\"_AsyncCompleter<1>\")), t7._eval\$1(\"_NextRequest<1>\")));\n"
-"              \$async\$temp1 = B.JSArray_methods;\n"
-"              \$async\$temp2 = buffer;\n"
-"              \$async\$goto = 8;\n"
-"              return A._asyncAwait(t8, \$async\$_batchAndSendEvents\$0);\n"
-"            case 8:\n"
-"              // returning from await.\n"
-"              \$async\$temp1.add\$1(\$async\$temp2, \$async\$result);\n"
-"            case 6:\n"
-"              // join\n"
-"              now = Date.now();\n"
-"              if (now > lastSendTime + t2) {\n"
-"                if (buffer.length !== 0) {\n"
-"                  t6 = A.List_List\$_of(buffer, t1);\n"
-"                  t4._precomputed1._as(t6);\n"
-"                  t7 = t3._state;\n"
-"                  if (t7 >= 4)\n"
-"                    A.throwExpression(t3._badEventState\$0());\n"
-"                  if ((t7 & 1) !== 0)\n"
-"                    t3._sendData\$1(t6);\n"
-"                  else if ((t7 & 3) === 0) {\n"
-"                    t7 = t3._ensurePendingEvents\$0();\n"
-"                    t6 = new A._DelayedData(t6, t5);\n"
-"                    lastEvent = t7.lastPendingEvent;\n"
-"                    if (lastEvent == null)\n"
-"                      t7.firstPendingEvent = t7.lastPendingEvent = t6;\n"
-"                    else {\n"
-"                      lastEvent.set\$next(t6);\n"
-"                      t7.lastPendingEvent = t6;\n"
-"                    }\n"
-"                  }\n"
-"                  B.JSArray_methods.clear\$0(buffer);\n"
-"                }\n"
-"                lastSendTime = now;\n"
-"              }\n"
-"              // goto for condition\n"
-"              \$async\$goto = 2;\n"
-"              break;\n"
-"            case 3:\n"
-"              // after for\n"
-"              if (buffer.length !== 0) {\n"
-"                t1 = A.List_List\$_of(buffer, t1);\n"
-"                t3.add\$1(0, t4._precomputed1._as(t1));\n"
-"              }\n"
-"              \$async\$self._completer.complete\$1(true);\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_batchAndSendEvents\$0, \$async\$completer);\n"
-"    },\n"
-"    _hasEventOrTimeOut\$1(duration) {\n"
-"      var t1 = this.__BatchedStreamController__inputQueue_A;\n"
-"      t1 === \$ && A.throwLateFieldNI(\"_inputQueue\");\n"
-"      return t1.get\$hasNext().timeout\$2\$onTimeout(duration, new A.BatchedStreamController__hasEventOrTimeOut_closure());\n"
-"    },\n"
-"    _hasEventDuring\$1(duration) {\n"
-"      var t1 = this.__BatchedStreamController__inputQueue_A;\n"
-"      t1 === \$ && A.throwLateFieldNI(\"_inputQueue\");\n"
-"      return t1.get\$hasNext().timeout\$2\$onTimeout(duration, new A.BatchedStreamController__hasEventDuring_closure());\n"
-"    }\n"
-"  };\n"
-"  A.BatchedStreamController__hasEventOrTimeOut_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return true;\n"
-"    },\n"
-"    \$signature: 22\n"
-"  };\n"
-"  A.BatchedStreamController__hasEventDuring_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return false;\n"
-"    },\n"
-"    \$signature: 22\n"
-"  };\n"
-"  A.SocketClient.prototype = {};\n"
-"  A.SseSocketClient.prototype = {\n"
-"    get\$sink() {\n"
-"      var t1 = this._sockets\$_client._outgoingController;\n"
-"      return new A._StreamSinkWrapper(t1, A._instanceType(t1)._eval\$1(\"_StreamSinkWrapper<1>\"));\n"
-"    },\n"
-"    get\$stream() {\n"
-"      var t1 = this._sockets\$_client._incomingController;\n"
-"      return new A._ControllerStream(t1, A._instanceType(t1)._eval\$1(\"_ControllerStream<1>\"));\n"
-"    }\n"
-"  };\n"
-"  A.WebSocketClient.prototype = {\n"
-"    get\$sink() {\n"
-"      var t1 = this._channel._outgoingStreamController;\n"
-"      return new A._StreamSinkWrapper(t1, A._instanceType(t1)._eval\$1(\"_StreamSinkWrapper<1>\"));\n"
-"    },\n"
-"    get\$stream() {\n"
-"      var t1 = this._channel.get\$_incomingStreamController(),\n"
-"        t2 = A._instanceType(t1)._eval\$1(\"_ControllerStream<1>\"),\n"
-"        t3 = t2._eval\$1(\"CastStream<Stream.T,String>\");\n"
-"      return new A._MapStream(t3._eval\$1(\"String(Stream.T)\")._as(new A.WebSocketClient_stream_closure()), new A.CastStream(new A._ControllerStream(t1, t2), t3), t3._eval\$1(\"_MapStream<Stream.T,String>\"));\n"
-"    }\n"
-"  };\n"
-"  A.WebSocketClient_stream_closure.prototype = {\n"
-"    call\$1(o) {\n"
-"      return J.toString\$0\$(o);\n"
-"    },\n"
-"    \$signature: 76\n"
-"  };\n"
-"  A.PersistentWebSocket.prototype = {\n"
-"    get\$_incomingStreamController() {\n"
-"      var result, _this = this,\n"
-"        value = _this.__PersistentWebSocket__incomingStreamController_FI;\n"
-"      if (value === \$) {\n"
-"        result = A.StreamController_StreamController(type\$.dynamic);\n"
-"        result.set\$onListen(_this.get\$_listenWithRetry());\n"
-"        _this.__PersistentWebSocket__incomingStreamController_FI !== \$ && A.throwLateFieldADI(\"_incomingStreamController\");\n"
-"        _this.__PersistentWebSocket__incomingStreamController_FI = result;\n"
-"        value = result;\n"
-"      }\n"
-"      return value;\n"
-"    },\n"
-"    _writeToWebSocket\$1(data) {\n"
-"      var t1, t2, exception;\n"
-"      try {\n"
-"        if (typeof data == \"string\") {\n"
-"          t1 = this._ws;\n"
-"          if ((t1._events._state & 4) !== 0)\n"
-"            A.throwExpression(A.WebSocketConnectionClosed\$());\n"
-"          t2 = A.jsify(data);\n"
-"          t2.toString;\n"
-"          t1._webSocket.send(t2);\n"
-"        } else if (type\$.Uint8List._is(data)) {\n"
-"          t1 = this._ws;\n"
-"          if ((t1._events._state & 4) !== 0)\n"
-"            A.throwExpression(A.WebSocketConnectionClosed\$());\n"
-"          t2 = A.jsify(data);\n"
-"          t2.toString;\n"
-"          t1._webSocket.send(t2);\n"
-"        } else {\n"
-"          t1 = A.UnsupportedError\$(\"Unexpected data type: \" + J.get\$runtimeType\$(data).toString\$0(0));\n"
-"          throw A.wrapException(t1);\n"
-"        }\n"
-"      } catch (exception) {\n"
-"        if (!(A.unwrapException(exception) instanceof A.WebSocketConnectionClosed))\n"
-"          throw exception;\n"
-"      }\n"
-"    },\n"
-"    _listenWithRetry\$0() {\n"
-"      return this._listenWithRetry\$body\$PersistentWebSocket();\n"
-"    },\n"
-"    _listenWithRetry\$body\$PersistentWebSocket() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], \$async\$self = this, attemptRetry, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, exception, eventsSub, t13, _box_0, \$async\$exception;\n"
-"      var \$async\$_listenWithRetry\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              _box_0 = {};\n"
-"              _box_0.retry = false;\n"
-"              _box_0.retryCount = 0;\n"
-"              t1 = \$async\$self._outgoingStreamController;\n"
-"              t2 = A._instanceType(t1);\n"
-"              new A._ControllerStream(t1, t2._eval\$1(\"_ControllerStream<1>\")).listen\$1(\$async\$self.get\$_writeToWebSocket());\n"
-"              attemptRetry = new A.PersistentWebSocket__listenWithRetry_attemptRetry(_box_0, \$async\$self);\n"
-"              t3 = type\$._Future_void;\n"
-"              t4 = type\$._AsyncCompleter_void;\n"
-"              t5 = \$async\$self.uri;\n"
-"              t6 = type\$.void;\n"
-"              t2 = t2._eval\$1(\"_StreamSinkWrapper<1>\");\n"
-"              t7 = \$async\$self.onReconnect;\n"
-"              t8 = \$async\$self.debugName;\n"
-"              t9 = type\$.Exception;\n"
-"              t10 = \$async\$self.maxRetryAttempts;\n"
-"              t11 = false;\n"
-"            case 2:\n"
-"              // do body\n"
-"              t12 = new A._Future(\$.Zone__current, t3);\n"
-"              \$async\$goto = t11 ? 6 : 7;\n"
-"              break;\n"
-"            case 6:\n"
-"              // then\n"
-"              \$async\$handler = 9;\n"
-"              \$async\$goto = 12;\n"
-"              return A._asyncAwait(A.BrowserWebSocket_connect(t5, null), \$async\$_listenWithRetry\$0);\n"
-"            case 12:\n"
-"              // returning from await.\n"
-"              \$async\$self._ws = \$async\$result;\n"
-"              _box_0.retryCount = 0;\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 11;\n"
-"              break;\n"
-"            case 9:\n"
-"              // catch\n"
-"              \$async\$handler = 8;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              \$async\$goto = t9._is(A.unwrapException(\$async\$exception)) ? 13 : 15;\n"
-"              break;\n"
-"            case 13:\n"
-"              // then\n"
-"              \$async\$goto = 16;\n"
-"              return A._asyncAwait(attemptRetry.call\$1(\"Failed to establish connection to \" + t5.toString\$0(0) + \" (\" + t8 + \").\"), \$async\$_listenWithRetry\$0);\n"
-"            case 16:\n"
-"              // returning from await.\n"
-"              // goto break c\$0\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"              // goto join\n"
-"              \$async\$goto = 14;\n"
-"              break;\n"
-"            case 15:\n"
-"              // else\n"
-"              throw \$async\$exception;\n"
-"            case 14:\n"
-"              // join\n"
-"              // goto after finally\n"
-"              \$async\$goto = 11;\n"
-"              break;\n"
-"            case 8:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 11:\n"
-"              // after finally\n"
-"              _box_0.retry = false;\n"
-"            case 7:\n"
-"              // join\n"
-"              eventsSub = A._Cell\$named(\"eventsSub\");\n"
-"              t13 = \$async\$self._ws._events;\n"
-"              eventsSub.__late_helper\$_value = new A._ControllerStream(t13, A._instanceType(t13)._eval\$1(\"_ControllerStream<1>\")).listen\$1(new A.PersistentWebSocket__listenWithRetry_closure(\$async\$self, attemptRetry, eventsSub, new A._AsyncCompleter(t12, t4)));\n"
-"              \$async\$goto = t11 ? 17 : 18;\n"
-"              break;\n"
-"            case 17:\n"
-"              // then\n"
-"              t11 = t7.call\$1(new A._StreamSinkWrapper(t1, t2));\n"
-"              \$async\$goto = 19;\n"
-"              return A._asyncAwait(t11 instanceof A._Future ? t11 : A._Future\$value(t11, t6), \$async\$_listenWithRetry\$0);\n"
-"            case 19:\n"
-"              // returning from await.\n"
-"            case 18:\n"
-"              // join\n"
-"              \$async\$goto = 20;\n"
-"              return A._asyncAwait(t12, \$async\$_listenWithRetry\$0);\n"
-"            case 20:\n"
-"              // returning from await.\n"
-"            case 5:\n"
-"              // break c\$0\n"
-"              t11 = _box_0.retry;\n"
-"            case 3:\n"
-"              // do condition\n"
-"              if (t11 && _box_0.retryCount < t10) {\n"
-"                // goto do body\n"
-"                \$async\$goto = 2;\n"
-"                break;\n"
-"              }\n"
-"            case 4:\n"
-"              // after do\n"
-"              \$async\$self._doneCompleter.complete\$0();\n"
-"              t1 = \$async\$self.get\$_incomingStreamController();\n"
-"              \$async\$goto = (t1._state & 4) === 0 ? 21 : 22;\n"
-"              break;\n"
-"            case 21:\n"
-"              // then\n"
-"              \$async\$goto = 23;\n"
-"              return A._asyncAwait(t1.close\$0(), \$async\$_listenWithRetry\$0);\n"
-"            case 23:\n"
-"              // returning from await.\n"
-"            case 22:\n"
-"              // join\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_listenWithRetry\$0, \$async\$completer);\n"
-"    }\n"
-"  };\n"
-"  A.PersistentWebSocket_connect_closure.prototype = {\n"
-"    call\$1(socket) {\n"
-"      var _this = this;\n"
-"      type\$.WebSocket._as(socket);\n"
-"      return new A.PersistentWebSocket(_this.logger, _this.debugName, _this.maxRetryAttempts, new A._AsyncCompleter(new A._Future(\$.Zone__current, type\$._Future_void), type\$._AsyncCompleter_void), _this.uri, _this.onReconnect, socket, A.StreamController_StreamController(type\$.dynamic));\n"
-"    },\n"
-"    \$signature: 31\n"
-"  };\n"
-"  A.PersistentWebSocket__listenWithRetry_attemptRetry.prototype = {\n"
-"    call\$1(message) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, t1;\n"
-"      var \$async\$call\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = \$async\$self._box_0;\n"
-"              \$async\$goto = 2;\n"
-"              return A._asyncAwait(A.Future_Future\$delayed(A.Duration\$(B.JSInt_methods._shlPositive\$1(100, t1.retryCount)), type\$.void), \$async\$call\$1);\n"
-"            case 2:\n"
-"              // returning from await.\n"
-"              ++t1.retryCount;\n"
-"              t1.retry = true;\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$1, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 23\n"
-"  };\n"
-"  A.PersistentWebSocket__listenWithRetry_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return this.\$call\$body\$PersistentWebSocket__listenWithRetry_closure(type\$.WebSocketEvent._as(e));\n"
-"    },\n"
-"    \$call\$body\$PersistentWebSocket__listenWithRetry_closure(e) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, t1, text, data, code;\n"
-"      var \$async\$call\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = e instanceof A.TextDataReceived;\n"
-"              text = t1 ? e.text : null;\n"
-"              if (t1) {\n"
-"                t1 = \$async\$self.\$this.get\$_incomingStreamController();\n"
-"                t1.add\$1(0, A._instanceType(t1)._precomputed1._as(text));\n"
-"                // goto break \$label0\$1\n"
-"                \$async\$goto = 2;\n"
-"                break;\n"
-"              }\n"
-"              t1 = e instanceof A.BinaryDataReceived;\n"
-"              data = t1 ? e.data : null;\n"
-"              if (t1) {\n"
-"                t1 = \$async\$self.\$this.get\$_incomingStreamController();\n"
-"                t1.add\$1(0, A._instanceType(t1)._precomputed1._as(data));\n"
-"                // goto break \$label0\$1\n"
-"                \$async\$goto = 2;\n"
-"                break;\n"
-"              }\n"
-"              t1 = e instanceof A.CloseReceived;\n"
-"              code = t1 ? e.code : null;\n"
-"              \$async\$goto = t1 ? 3 : 4;\n"
-"              break;\n"
-"            case 3:\n"
-"              // then\n"
-"              \$async\$goto = code === 1006 ? 5 : 6;\n"
-"              break;\n"
-"            case 5:\n"
-"              // then\n"
-"              t1 = \$async\$self.\$this;\n"
-"              \$async\$goto = 7;\n"
-"              return A._asyncAwait(\$async\$self.attemptRetry.call\$1(\"Lost connection to \" + t1.uri.toString\$0(0) + \" (\" + t1.debugName + \").\"), \$async\$call\$1);\n"
-"            case 7:\n"
-"              // returning from await.\n"
-"              \$async\$goto = 8;\n"
-"              return A._asyncAwait(\$async\$self.eventsSub._readLocal\$0().cancel\$0(), \$async\$call\$1);\n"
-"            case 8:\n"
-"              // returning from await.\n"
-"            case 6:\n"
-"              // join\n"
-"              \$async\$self.wsOnDoneCompleter.complete\$0();\n"
-"            case 4:\n"
-"              // join\n"
-"            case 2:\n"
-"              // break \$label0\$1\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$1, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 33\n"
-"  };\n"
-"  A._PersistentWebSocket_Object_StreamChannelMixin.prototype = {};\n"
-"  A.safeUnawaited_closure.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      return \$.\$get\$_logger().log\$4(B.Level_WARNING_900, \"Error in unawaited Future:\", error, stackTrace);\n"
-"    },\n"
-"    \$signature: 7\n"
-"  };\n"
-"  A.Uuid.prototype = {\n"
-"    v4\$0() {\n"
-"      var i, t1, t2, t3,\n"
-"        bytes = new Uint8Array(16);\n"
-"      for (i = 0; i < 16; ++i)\n"
-"        bytes[i] = \$.\$get\$Uuid__random().nextInt\$1(256);\n"
-"      bytes[6] = bytes[6] & 15 | 64;\n"
-"      bytes[8] = bytes[8] & 63 | 128;\n"
-"      for (i = 0, t1 = \"\"; i < 16; ++i, t1 = t3) {\n"
-"        if (i === 4 || i === 6 || i === 8 || i === 10)\n"
-"          t1 += \"-\";\n"
-"        t2 = \$.\$get\$Uuid__hex();\n"
-"        t3 = bytes[i];\n"
-"        if (!(t3 < 256))\n"
-"          return A.ioore(t2, t3);\n"
-"        t3 = t1 + t2[t3];\n"
-"      }\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    }\n"
-"  };\n"
-"  A._StackState.prototype = {};\n"
-"  A.RequestAbortedException.prototype = {};\n"
-"  A.BaseClient.prototype = {\n"
-"    _sendUnstreamed\$3(method, url, headers) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Response),\n"
-"        \$async\$returnValue, \$async\$self = this, request, \$async\$temp1;\n"
-"      var \$async\$_sendUnstreamed\$3 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              request = A.Request\$(method, url);\n"
-"              \$async\$temp1 = A;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(\$async\$self.send\$1(request), \$async\$_sendUnstreamed\$3);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$temp1.Response_fromStream(\$async\$result);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_sendUnstreamed\$3, \$async\$completer);\n"
-"    }\n"
-"  };\n"
-"  A.BaseRequest.prototype = {\n"
-"    finalize\$0() {\n"
-"      if (this._finalized)\n"
-"        throw A.wrapException(A.StateError\$(\"Can't finalize a finalized Request.\"));\n"
-"      this._finalized = true;\n"
-"      return B.ByteStream__EmptyStream;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this.method + \" \" + this.url.toString\$0(0);\n"
-"    }\n"
-"  };\n"
-"  A.BaseRequest_closure.prototype = {\n"
-"    call\$2(key1, key2) {\n"
-"      return A._asString(key1).toLowerCase() === A._asString(key2).toLowerCase();\n"
-"    },\n"
-"    \$signature: 34\n"
-"  };\n"
-"  A.BaseRequest_closure0.prototype = {\n"
-"    call\$1(key) {\n"
-"      return B.JSString_methods.get\$hashCode(A._asString(key).toLowerCase());\n"
-"    },\n"
-"    \$signature: 35\n"
-"  };\n"
-"  A.BaseResponse.prototype = {\n"
-"    BaseResponse\$7\$contentLength\$headers\$isRedirect\$persistentConnection\$reasonPhrase\$request(statusCode, contentLength, headers, isRedirect, persistentConnection, reasonPhrase, request) {\n"
-"      var t1 = this.statusCode;\n"
-"      if (t1 < 100)\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Invalid status code \" + t1 + \".\", null));\n"
-"      else {\n"
-"        t1 = this.contentLength;\n"
-"        if (t1 != null && t1 < 0)\n"
-"          throw A.wrapException(A.ArgumentError\$(\"Invalid content length \" + A.S(t1) + \".\", null));\n"
-"      }\n"
-"    }\n"
-"  };\n"
-"  A.BrowserClient.prototype = {\n"
-"    send\$1(request) {\n"
-"      return this.send\$body\$BrowserClient(request);\n"
-"    },\n"
-"    send\$body\$BrowserClient(request) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.StreamedResponse),\n"
-"        \$async\$returnValue, \$async\$handler = 2, \$async\$errorStack = [], \$async\$next = [], \$async\$self = this, bodyBytes, _0_0, _0_2, _0_2_isSet, abortTrigger, t1, _1_0, contentLength, header, response, contentLengthHeader, contentLength0, headers, e, st, t4, t5, _this, t6, t7, t8, t9, result, exception, t2, abortController, t3, \$async\$exception;\n"
-"      var \$async\$send\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t2 = init.G;\n"
-"              abortController = A._asJSObject(new t2.AbortController());\n"
-"              t3 = \$async\$self._openRequestAbortControllers;\n"
-"              B.JSArray_methods.add\$1(t3, abortController);\n"
-"              request.super\$BaseRequest\$finalize();\n"
-"              t4 = type\$._AsyncStreamController_List_int;\n"
-"              t5 = new A._AsyncStreamController(null, null, null, null, t4);\n"
-"              t5._add\$1(request._bodyBytes);\n"
-"              t5._closeUnchecked\$0();\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(new A.ByteStream(new A._ControllerStream(t5, t4._eval\$1(\"_ControllerStream<1>\"))).toBytes\$0(), \$async\$send\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              bodyBytes = \$async\$result;\n"
-"              \$async\$handler = 5;\n"
-"              _0_0 = request;\n"
-"              _0_2 = null;\n"
-"              _0_2_isSet = false;\n"
-"              abortTrigger = null;\n"
-"              t4 = request.url;\n"
-"              _this = t4.toString\$0(0);\n"
-"              t5 = !J.get\$isEmpty\$asx(bodyBytes) ? bodyBytes : null;\n"
-"              t6 = \$async\$self.withCredentials ? \"include\" : \"same-origin\";\n"
-"              t7 = type\$.String;\n"
-"              t1 = A.LinkedHashMap_LinkedHashMap\$_empty(t7, type\$.Object);\n"
-"              _1_0 = request._bodyBytes.length;\n"
-"              contentLength = null;\n"
-"              if (_1_0 != null) {\n"
-"                contentLength = _1_0;\n"
-"                J.\$indexSet\$ax(t1, \"content-length\", contentLength);\n"
-"              }\n"
-"              for (t8 = request.headers, t8 = new A.LinkedHashMapEntriesIterable(t8, A._instanceType(t8)._eval\$1(\"LinkedHashMapEntriesIterable<1,2>\")).get\$iterator(0); t8.moveNext\$0();) {\n"
-"                t9 = t8.__js_helper\$_current;\n"
-"                t9.toString;\n"
-"                header = t9;\n"
-"                J.\$indexSet\$ax(t1, header.key, header.value);\n"
-"              }\n"
-"              t1 = A.jsify(t1);\n"
-"              t1.toString;\n"
-"              A._asJSObject(t1);\n"
-"              t8 = A._asJSObject(abortController.signal);\n"
-"              \$async\$goto = 8;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(t2.fetch(_this, {method: request.method, headers: t1, body: t5, credentials: t6, redirect: \"follow\", signal: t8})), type\$.JSObject), \$async\$send\$1);\n"
-"            case 8:\n"
-"              // returning from await.\n"
-"              response = \$async\$result;\n"
-"              contentLengthHeader = A._asStringQ(A._asJSObject(response.headers).get(\"content-length\"));\n"
-"              contentLength0 = contentLengthHeader != null ? A.Primitives_parseInt(contentLengthHeader, null) : null;\n"
-"              if (contentLength0 == null && contentLengthHeader != null) {\n"
-"                t1 = A.ClientException\$(\"Invalid content-length header [\" + contentLengthHeader + \"].\", t4);\n"
-"                throw A.wrapException(t1);\n"
-"              }\n"
-"              headers = A.LinkedHashMap_LinkedHashMap\$_empty(t7, t7);\n"
-"              t1 = A._asJSObject(response.headers);\n"
-"              t2 = new A.BrowserClient_send_closure(headers);\n"
-"              if (typeof t2 == \"function\")\n"
-"                A.throwExpression(A.ArgumentError\$(\"Attempting to rewrap a JS function.\", null));\n"
-"              result = function(_call, f) {\n"
-"                return function(arg1, arg2, arg3) {\n"
-"                  return _call(f, arg1, arg2, arg3, arguments.length);\n"
-"                };\n"
-"              }(A._callDartFunctionFast3, t2);\n"
-"              result[\$.\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME()] = t2;\n"
-"              t1.forEach(result);\n"
-"              t1 = A._bodyToStream(request, response);\n"
-"              t2 = A._asInt(response.status);\n"
-"              t4 = headers;\n"
-"              t5 = contentLength0;\n"
-"              A.Uri_parse(A._asString(response.url));\n"
-"              t6 = A._asString(response.statusText);\n"
-"              t1 = new A.StreamedResponseV2(A.toByteStream(t1), request, t2, t6, t5, t4, false, true);\n"
-"              t1.BaseResponse\$7\$contentLength\$headers\$isRedirect\$persistentConnection\$reasonPhrase\$request(t2, t5, t4, false, true, t6, request);\n"
-"              \$async\$returnValue = t1;\n"
-"              \$async\$next = [1];\n"
-"              // goto finally\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"              \$async\$next.push(7);\n"
-"              // goto finally\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 5:\n"
-"              // catch\n"
-"              \$async\$handler = 4;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              st = A.getTraceFromException(\$async\$exception);\n"
-"              A._rethrowAsClientException(e, st, request);\n"
-"              \$async\$next.push(7);\n"
-"              // goto finally\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 4:\n"
-"              // uncaught\n"
-"              \$async\$next = [2];\n"
-"            case 6:\n"
-"              // finally\n"
-"              \$async\$handler = 2;\n"
-"              B.JSArray_methods.remove\$1(t3, abortController);\n"
-"              // goto the next finally handler\n"
-"              \$async\$goto = \$async\$next.pop();\n"
-"              break;\n"
-"            case 7:\n"
-"              // after finally\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"            case 2:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$send\$1, \$async\$completer);\n"
-"    }\n"
-"  };\n"
-"  A.BrowserClient_send_closure.prototype = {\n"
-"    call\$3(value, header, _) {\n"
-"      A._asString(value);\n"
-"      this.headers.\$indexSet(0, A._asString(header).toLowerCase(), value);\n"
-"    },\n"
-"    call\$2(value, header) {\n"
-"      return this.call\$3(value, header, null);\n"
-"    },\n"
-"    \$signature: 36\n"
-"  };\n"
-"  A._bodyToStream_closure.prototype = {\n"
-"    call\$1(listener) {\n"
-"      return A._readStreamBody(this.request, this.response, type\$.MultiStreamController_List_int._as(listener));\n"
-"    },\n"
-"    \$signature: 37\n"
-"  };\n"
-"  A._readStreamBody_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this._box_0,\n"
-"        _0_0 = t1.resumeSignal;\n"
-"      if (_0_0 != null) {\n"
-"        t1.resumeSignal = null;\n"
-"        _0_0.complete\$0();\n"
-"      }\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A._readStreamBody_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], \$async\$self = this, e, s, exception, \$async\$exception;\n"
-"      var \$async\$call\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$handler = 3;\n"
-"              \$async\$self._box_0.cancelled = true;\n"
-"              \$async\$goto = 6;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(\$async\$self.reader.cancel()), type\$.nullable_Object), \$async\$call\$0);\n"
-"            case 6:\n"
-"              // returning from await.\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // catch\n"
-"              \$async\$handler = 2;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              e = A.unwrapException(\$async\$exception);\n"
-"              s = A.getTraceFromException(\$async\$exception);\n"
-"              if (!\$async\$self._box_0.hadError)\n"
-"                A._rethrowAsClientException(e, s, \$async\$self.request);\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 2:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 5:\n"
-"              // after finally\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$0, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 5\n"
-"  };\n"
-"  A.ByteStream.prototype = {\n"
-"    toBytes\$0() {\n"
-"      var t1 = new A._Future(\$.Zone__current, type\$._Future_Uint8List),\n"
-"        completer = new A._AsyncCompleter(t1, type\$._AsyncCompleter_Uint8List),\n"
-"        sink = new A._ByteCallbackSink(new A.ByteStream_toBytes_closure(completer), new Uint8Array(1024));\n"
-"      this.listen\$4\$cancelOnError\$onDone\$onError(type\$.void_Function_List_int._as(sink.get\$add(sink)), true, sink.get\$close(), completer.get\$completeError());\n"
-"      return t1;\n"
-"    }\n"
-"  };\n"
-"  A.ByteStream_toBytes_closure.prototype = {\n"
-"    call\$1(bytes) {\n"
-"      return this.completer.complete\$1(new Uint8Array(A._ensureNativeList(type\$.List_int._as(bytes))));\n"
-"    },\n"
-"    \$signature: 38\n"
-"  };\n"
-"  A.ClientException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.uri.toString\$0(0);\n"
-"      return \"ClientException: \" + this.message + \", uri=\" + t1;\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.Request.prototype = {};\n"
-"  A.Response.prototype = {};\n"
-"  A.StreamedResponse.prototype = {};\n"
-"  A.StreamedResponseV2.prototype = {};\n"
-"  A.CaseInsensitiveMap.prototype = {};\n"
-"  A.MediaType.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var buffer = new A.StringBuffer(\"\"),\n"
-"        t1 = this.type;\n"
-"      buffer._contents = t1;\n"
-"      t1 += \"/\";\n"
-"      buffer._contents = t1;\n"
-"      buffer._contents = t1 + this.subtype;\n"
-"      t1 = this.parameters;\n"
-"      t1._map.forEach\$1(0, t1.\$ti._eval\$1(\"~(1,2)\")._as(new A.MediaType_toString_closure(buffer)));\n"
-"      t1 = buffer._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    }\n"
-"  };\n"
-"  A.MediaType_MediaType\$parse_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t3, t4, t5, t6, parameters, t7, success, t8, value,\n"
-"        t1 = this.mediaType,\n"
-"        scanner = new A.StringScanner(null, t1),\n"
-"        t2 = \$.\$get\$whitespace();\n"
-"      scanner.scan\$1(t2);\n"
-"      t3 = \$.\$get\$token();\n"
-"      scanner.expect\$1(t3);\n"
-"      t4 = scanner.get\$lastMatch().\$index(0, 0);\n"
-"      t4.toString;\n"
-"      scanner.expect\$1(\"/\");\n"
-"      scanner.expect\$1(t3);\n"
-"      t5 = scanner.get\$lastMatch().\$index(0, 0);\n"
-"      t5.toString;\n"
-"      scanner.scan\$1(t2);\n"
-"      t6 = type\$.String;\n"
-"      parameters = A.LinkedHashMap_LinkedHashMap\$_empty(t6, t6);\n"
-"      for (;;) {\n"
-"        t6 = scanner._lastMatch = B.JSString_methods.matchAsPrefix\$2(\";\", t1, scanner._string_scanner\$_position);\n"
-"        t7 = scanner._lastMatchPosition = scanner._string_scanner\$_position;\n"
-"        success = t6 != null;\n"
-"        t6 = success ? scanner._lastMatchPosition = scanner._string_scanner\$_position = t6.get\$end() : t7;\n"
-"        if (!success)\n"
-"          break;\n"
-"        t6 = scanner._lastMatch = t2.matchAsPrefix\$2(0, t1, t6);\n"
-"        scanner._lastMatchPosition = scanner._string_scanner\$_position;\n"
-"        if (t6 != null)\n"
-"          scanner._lastMatchPosition = scanner._string_scanner\$_position = t6.get\$end();\n"
-"        scanner.expect\$1(t3);\n"
-"        if (scanner._string_scanner\$_position !== scanner._lastMatchPosition)\n"
-"          scanner._lastMatch = null;\n"
-"        t6 = scanner._lastMatch.\$index(0, 0);\n"
-"        t6.toString;\n"
-"        scanner.expect\$1(\"=\");\n"
-"        t7 = scanner._lastMatch = t3.matchAsPrefix\$2(0, t1, scanner._string_scanner\$_position);\n"
-"        t8 = scanner._lastMatchPosition = scanner._string_scanner\$_position;\n"
-"        success = t7 != null;\n"
-"        if (success) {\n"
-"          t7 = scanner._lastMatchPosition = scanner._string_scanner\$_position = t7.get\$end();\n"
-"          t8 = t7;\n"
-"        } else\n"
-"          t7 = t8;\n"
-"        if (success) {\n"
-"          if (t7 !== t8)\n"
-"            scanner._lastMatch = null;\n"
-"          t7 = scanner._lastMatch.\$index(0, 0);\n"
-"          t7.toString;\n"
-"          value = t7;\n"
-"        } else\n"
-"          value = A.expectQuotedString(scanner);\n"
-"        t7 = scanner._lastMatch = t2.matchAsPrefix\$2(0, t1, scanner._string_scanner\$_position);\n"
-"        scanner._lastMatchPosition = scanner._string_scanner\$_position;\n"
-"        if (t7 != null)\n"
-"          scanner._lastMatchPosition = scanner._string_scanner\$_position = t7.get\$end();\n"
-"        parameters.\$indexSet(0, t6, value);\n"
-"      }\n"
-"      scanner.expectDone\$0();\n"
-"      return A.MediaType\$(t4, t5, parameters);\n"
-"    },\n"
-"    \$signature: 39\n"
-"  };\n"
-"  A.MediaType_toString_closure.prototype = {\n"
-"    call\$2(attribute, value) {\n"
-"      var t1, t2, t3;\n"
-"      A._asString(attribute);\n"
-"      A._asString(value);\n"
-"      t1 = this.buffer;\n"
-"      t1._contents += \"; \" + attribute + \"=\";\n"
-"      t2 = \$.\$get\$nonToken();\n"
-"      t2 = t2._nativeRegExp.test(value);\n"
-"      t3 = t1._contents;\n"
-"      if (t2) {\n"
-"        t1._contents = t3 + '\"';\n"
-"        t2 = A.stringReplaceAllFuncUnchecked(value, \$.\$get\$_escapedChar(), type\$.nullable_String_Function_Match._as(type\$.String_Function_Match._as(new A.MediaType_toString__closure())), null);\n"
-"        t1._contents = (t1._contents += t2) + '\"';\n"
-"      } else\n"
-"        t1._contents = t3 + value;\n"
-"    },\n"
-"    \$signature: 40\n"
-"  };\n"
-"  A.MediaType_toString__closure.prototype = {\n"
-"    call\$1(match) {\n"
-"      return \"\\\\\" + A.S(match.\$index(0, 0));\n"
-"    },\n"
-"    \$signature: 12\n"
-"  };\n"
-"  A.expectQuotedString_closure.prototype = {\n"
-"    call\$1(match) {\n"
-"      var t1 = match.\$index(0, 1);\n"
-"      t1.toString;\n"
-"      return t1;\n"
-"    },\n"
-"    \$signature: 12\n"
-"  };\n"
-"  A.Level.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.Level && this.value === other.value;\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      return this.value - type\$.Level._as(other).value;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return this.value;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return this.name;\n"
-"    },\n"
-"    \$isComparable: 1\n"
-"  };\n"
-"  A.LogRecord.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"[\" + this.level.name + \"] \" + this.loggerName + \": \" + this.message;\n"
-"    }\n"
-"  };\n"
-"  A.Logger.prototype = {\n"
-"    get\$fullName() {\n"
-"      var t1 = this.parent,\n"
-"        t2 = t1 == null ? null : t1.name.length !== 0,\n"
-"        t3 = this.name;\n"
-"      return t2 === true ? t1.get\$fullName() + \".\" + t3 : t3;\n"
-"    },\n"
-"    get\$level() {\n"
-"      var t1, effectiveLevel;\n"
-"      if (this.parent == null) {\n"
-"        t1 = this._level;\n"
-"        t1.toString;\n"
-"        effectiveLevel = t1;\n"
-"      } else {\n"
-"        t1 = \$.\$get\$Logger_root()._level;\n"
-"        t1.toString;\n"
-"        effectiveLevel = t1;\n"
-"      }\n"
-"      return effectiveLevel;\n"
-"    },\n"
-"    log\$4(logLevel, message, error, stackTrace) {\n"
-"      var record, _this = this,\n"
-"        t1 = logLevel.value;\n"
-"      if (t1 >= _this.get\$level().value) {\n"
-"        if ((stackTrace == null || stackTrace === B._StringStackTrace_OdL) && t1 >= 2000) {\n"
-"          A.StackTrace_current();\n"
-"          if (error == null)\n"
-"            logLevel.toString\$0(0);\n"
-"        }\n"
-"        t1 = _this.get\$fullName();\n"
-"        Date.now();\n"
-"        \$.LogRecord__nextNumber = \$.LogRecord__nextNumber + 1;\n"
-"        record = new A.LogRecord(logLevel, message, t1);\n"
-"        if (_this.parent == null)\n"
-"          _this._publish\$1(record);\n"
-"        else\n"
-"          \$.\$get\$Logger_root()._publish\$1(record);\n"
-"      }\n"
-"    },\n"
-"    _publish\$1(record) {\n"
-"      return null;\n"
-"    }\n"
-"  };\n"
-"  A.Logger_Logger_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var dot, \$parent, t1,\n"
-"        thisName = this.name;\n"
-"      if (B.JSString_methods.startsWith\$1(thisName, \".\"))\n"
-"        A.throwExpression(A.ArgumentError\$(\"name shouldn't start with a '.'\", null));\n"
-"      if (B.JSString_methods.endsWith\$1(thisName, \".\"))\n"
-"        A.throwExpression(A.ArgumentError\$(\"name shouldn't end with a '.'\", null));\n"
-"      dot = B.JSString_methods.lastIndexOf\$1(thisName, \".\");\n"
-"      if (dot === -1)\n"
-"        \$parent = thisName !== \"\" ? A.Logger_Logger(\"\") : null;\n"
-"      else {\n"
-"        \$parent = A.Logger_Logger(B.JSString_methods.substring\$2(thisName, 0, dot));\n"
-"        thisName = B.JSString_methods.substring\$1(thisName, dot + 1);\n"
-"      }\n"
-"      t1 = new A.Logger(thisName, \$parent, A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.Logger));\n"
-"      if (\$parent == null)\n"
-"        t1._level = B.Level_INFO_800;\n"
-"      else\n"
-"        \$parent._children.\$indexSet(0, thisName, t1);\n"
-"      return t1;\n"
-"    },\n"
-"    \$signature: 42\n"
-"  };\n"
-"  A.Context.prototype = {\n"
-"    absolute\$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) {\n"
-"      var t1;\n"
-"      A._validateArgList(\"absolute\", A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15], type\$.JSArray_nullable_String));\n"
-"      t1 = this.style;\n"
-"      t1 = t1.rootLength\$1(part1) > 0 && !t1.isRootRelative\$1(part1);\n"
-"      if (t1)\n"
-"        return part1;\n"
-"      t1 = this._context\$_current;\n"
-"      return this.join\$16(0, t1 == null ? A.current() : t1, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15);\n"
-"    },\n"
-"    absolute\$1(part1) {\n"
-"      var _null = null;\n"
-"      return this.absolute\$15(part1, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);\n"
-"    },\n"
-"    join\$16(_, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16) {\n"
-"      var parts = A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16], type\$.JSArray_nullable_String);\n"
-"      A._validateArgList(\"join\", parts);\n"
-"      return this.joinAll\$1(new A.WhereTypeIterable(parts, type\$.WhereTypeIterable_String));\n"
-"    },\n"
-"    joinAll\$1(parts) {\n"
-"      var t1, t2, t3, needsSeparator, isAbsoluteAndNotRootRelative, t4, t5, parsed, path, t6;\n"
-"      type\$.Iterable_String._as(parts);\n"
-"      for (t1 = parts.\$ti, t2 = t1._eval\$1(\"bool(Iterable.E)\")._as(new A.Context_joinAll_closure()), t3 = parts.get\$iterator(0), t1 = new A.WhereIterator(t3, t2, t1._eval\$1(\"WhereIterator<Iterable.E>\")), t2 = this.style, needsSeparator = false, isAbsoluteAndNotRootRelative = false, t4 = \"\"; t1.moveNext\$0();) {\n"
-"        t5 = t3.get\$current();\n"
-"        if (t2.isRootRelative\$1(t5) && isAbsoluteAndNotRootRelative) {\n"
-"          parsed = A.ParsedPath_ParsedPath\$parse(t5, t2);\n"
-"          path = t4.charCodeAt(0) == 0 ? t4 : t4;\n"
-"          t4 = B.JSString_methods.substring\$2(path, 0, t2.rootLength\$2\$withDrive(path, true));\n"
-"          parsed.root = t4;\n"
-"          if (t2.needsSeparator\$1(t4))\n"
-"            B.JSArray_methods.\$indexSet(parsed.separators, 0, t2.get\$separator());\n"
-"          t4 = parsed.toString\$0(0);\n"
-"        } else if (t2.rootLength\$1(t5) > 0) {\n"
-"          isAbsoluteAndNotRootRelative = !t2.isRootRelative\$1(t5);\n"
-"          t4 = t5;\n"
-"        } else {\n"
-"          t6 = t5.length;\n"
-"          if (t6 !== 0) {\n"
-"            if (0 >= t6)\n"
-"              return A.ioore(t5, 0);\n"
-"            t6 = t2.containsSeparator\$1(t5[0]);\n"
-"          } else\n"
-"            t6 = false;\n"
-"          if (!t6)\n"
-"            if (needsSeparator)\n"
-"              t4 += t2.get\$separator();\n"
-"          t4 += t5;\n"
-"        }\n"
-"        needsSeparator = t2.needsSeparator\$1(t5);\n"
-"      }\n"
-"      return t4.charCodeAt(0) == 0 ? t4 : t4;\n"
-"    },\n"
-"    split\$1(_, path) {\n"
-"      var parsed = A.ParsedPath_ParsedPath\$parse(path, this.style),\n"
-"        t1 = parsed.parts,\n"
-"        t2 = A._arrayInstanceType(t1),\n"
-"        t3 = t2._eval\$1(\"WhereIterable<1>\");\n"
-"      t1 = A.List_List\$_of(new A.WhereIterable(t1, t2._eval\$1(\"bool(1)\")._as(new A.Context_split_closure()), t3), t3._eval\$1(\"Iterable.E\"));\n"
-"      parsed.set\$parts(t1);\n"
-"      t1 = parsed.root;\n"
-"      if (t1 != null)\n"
-"        B.JSArray_methods.insert\$2(parsed.parts, 0, t1);\n"
-"      return parsed.parts;\n"
-"    },\n"
-"    normalize\$1(path) {\n"
-"      var parsed;\n"
-"      if (!this._needsNormalization\$1(path))\n"
-"        return path;\n"
-"      parsed = A.ParsedPath_ParsedPath\$parse(path, this.style);\n"
-"      parsed.normalize\$0();\n"
-"      return parsed.toString\$0(0);\n"
-"    },\n"
-"    _needsNormalization\$1(path) {\n"
-"      var t2, i, start, previous, previousPrevious, codeUnit, t3,\n"
-"        t1 = this.style,\n"
-"        root = t1.rootLength\$1(path);\n"
-"      if (root !== 0) {\n"
-"        if (t1 === \$.\$get\$Style_windows())\n"
-"          for (t2 = path.length, i = 0; i < root; ++i) {\n"
-"            if (!(i < t2))\n"
-"              return A.ioore(path, i);\n"
-"            if (path.charCodeAt(i) === 47)\n"
-"              return true;\n"
-"          }\n"
-"        start = root;\n"
-"        previous = 47;\n"
-"      } else {\n"
-"        start = 0;\n"
-"        previous = null;\n"
-"      }\n"
-"      for (t2 = path.length, i = start, previousPrevious = null; i < t2; ++i, previousPrevious = previous, previous = codeUnit) {\n"
-"        if (!(i >= 0))\n"
-"          return A.ioore(path, i);\n"
-"        codeUnit = path.charCodeAt(i);\n"
-"        if (t1.isSeparator\$1(codeUnit)) {\n"
-"          if (t1 === \$.\$get\$Style_windows() && codeUnit === 47)\n"
-"            return true;\n"
-"          if (previous != null && t1.isSeparator\$1(previous))\n"
-"            return true;\n"
-"          if (previous === 46)\n"
-"            t3 = previousPrevious == null || previousPrevious === 46 || t1.isSeparator\$1(previousPrevious);\n"
-"          else\n"
-"            t3 = false;\n"
-"          if (t3)\n"
-"            return true;\n"
-"        }\n"
-"      }\n"
-"      if (previous == null)\n"
-"        return true;\n"
-"      if (t1.isSeparator\$1(previous))\n"
-"        return true;\n"
-"      if (previous === 46)\n"
-"        t1 = previousPrevious == null || t1.isSeparator\$1(previousPrevious) || previousPrevious === 46;\n"
-"      else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        return true;\n"
-"      return false;\n"
-"    },\n"
-"    relative\$1(path) {\n"
-"      var from, fromParsed, pathParsed, t3, t4, t5, t6, _this = this,\n"
-"        _s26_ = 'Unable to find a path to \"',\n"
-"        t1 = _this.style,\n"
-"        t2 = t1.rootLength\$1(path);\n"
-"      if (t2 <= 0)\n"
-"        return _this.normalize\$1(path);\n"
-"      t2 = _this._context\$_current;\n"
-"      from = t2 == null ? A.current() : t2;\n"
-"      if (t1.rootLength\$1(from) <= 0 && t1.rootLength\$1(path) > 0)\n"
-"        return _this.normalize\$1(path);\n"
-"      if (t1.rootLength\$1(path) <= 0 || t1.isRootRelative\$1(path))\n"
-"        path = _this.absolute\$1(path);\n"
-"      if (t1.rootLength\$1(path) <= 0 && t1.rootLength\$1(from) > 0)\n"
-"        throw A.wrapException(A.PathException\$(_s26_ + path + '\" from \"' + from + '\".'));\n"
-"      fromParsed = A.ParsedPath_ParsedPath\$parse(from, t1);\n"
-"      fromParsed.normalize\$0();\n"
-"      pathParsed = A.ParsedPath_ParsedPath\$parse(path, t1);\n"
-"      pathParsed.normalize\$0();\n"
-"      t2 = fromParsed.parts;\n"
-"      t3 = t2.length;\n"
-"      if (t3 !== 0) {\n"
-"        if (0 >= t3)\n"
-"          return A.ioore(t2, 0);\n"
-"        t2 = t2[0] === \".\";\n"
-"      } else\n"
-"        t2 = false;\n"
-"      if (t2)\n"
-"        return pathParsed.toString\$0(0);\n"
-"      t2 = fromParsed.root;\n"
-"      t3 = pathParsed.root;\n"
-"      if (t2 != t3)\n"
-"        t2 = t2 == null || t3 == null || !t1.pathsEqual\$2(t2, t3);\n"
-"      else\n"
-"        t2 = false;\n"
-"      if (t2)\n"
-"        return pathParsed.toString\$0(0);\n"
-"      for (;;) {\n"
-"        t2 = fromParsed.parts;\n"
-"        t3 = t2.length;\n"
-"        t4 = false;\n"
-"        if (t3 !== 0) {\n"
-"          t5 = pathParsed.parts;\n"
-"          t6 = t5.length;\n"
-"          if (t6 !== 0) {\n"
-"            if (0 >= t3)\n"
-"              return A.ioore(t2, 0);\n"
-"            t2 = t2[0];\n"
-"            if (0 >= t6)\n"
-"              return A.ioore(t5, 0);\n"
-"            t5 = t1.pathsEqual\$2(t2, t5[0]);\n"
-"            t2 = t5;\n"
-"          } else\n"
-"            t2 = t4;\n"
-"        } else\n"
-"          t2 = t4;\n"
-"        if (!t2)\n"
-"          break;\n"
-"        B.JSArray_methods.removeAt\$1(fromParsed.parts, 0);\n"
-"        B.JSArray_methods.removeAt\$1(fromParsed.separators, 1);\n"
-"        B.JSArray_methods.removeAt\$1(pathParsed.parts, 0);\n"
-"        B.JSArray_methods.removeAt\$1(pathParsed.separators, 1);\n"
-"      }\n"
-"      t2 = fromParsed.parts;\n"
-"      t3 = t2.length;\n"
-"      if (t3 !== 0) {\n"
-"        if (0 >= t3)\n"
-"          return A.ioore(t2, 0);\n"
-"        t2 = t2[0] === \"..\";\n"
-"      } else\n"
-"        t2 = false;\n"
-"      if (t2)\n"
-"        throw A.wrapException(A.PathException\$(_s26_ + path + '\" from \"' + from + '\".'));\n"
-"      t2 = type\$.String;\n"
-"      B.JSArray_methods.insertAll\$2(pathParsed.parts, 0, A.List_List\$filled(t3, \"..\", false, t2));\n"
-"      B.JSArray_methods.\$indexSet(pathParsed.separators, 0, \"\");\n"
-"      B.JSArray_methods.insertAll\$2(pathParsed.separators, 1, A.List_List\$filled(fromParsed.parts.length, t1.get\$separator(), false, t2));\n"
-"      t1 = pathParsed.parts;\n"
-"      t2 = t1.length;\n"
-"      if (t2 === 0)\n"
-"        return \".\";\n"
-"      if (t2 > 1 && B.JSArray_methods.get\$last(t1) === \".\") {\n"
-"        B.JSArray_methods.removeLast\$0(pathParsed.parts);\n"
-"        t1 = pathParsed.separators;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"        B.JSArray_methods.add\$1(t1, \"\");\n"
-"      }\n"
-"      pathParsed.root = \"\";\n"
-"      pathParsed.removeTrailingSeparators\$0();\n"
-"      return pathParsed.toString\$0(0);\n"
-"    },\n"
-"    prettyUri\$1(uri) {\n"
-"      var path, rel, _this = this,\n"
-"        typedUri = A._parseUri(uri);\n"
-"      if (typedUri.get\$scheme() === \"file\" && _this.style === \$.\$get\$Style_url())\n"
-"        return typedUri.toString\$0(0);\n"
-"      else if (typedUri.get\$scheme() !== \"file\" && typedUri.get\$scheme() !== \"\" && _this.style !== \$.\$get\$Style_url())\n"
-"        return typedUri.toString\$0(0);\n"
-"      path = _this.normalize\$1(_this.style.pathFromUri\$1(A._parseUri(typedUri)));\n"
-"      rel = _this.relative\$1(path);\n"
-"      return _this.split\$1(0, rel).length > _this.split\$1(0, path).length ? path : rel;\n"
-"    }\n"
-"  };\n"
-"  A.Context_joinAll_closure.prototype = {\n"
-"    call\$1(part) {\n"
-"      return A._asString(part) !== \"\";\n"
-"    },\n"
-"    \$signature: 24\n"
-"  };\n"
-"  A.Context_split_closure.prototype = {\n"
-"    call\$1(part) {\n"
-"      return A._asString(part).length !== 0;\n"
-"    },\n"
-"    \$signature: 24\n"
-"  };\n"
-"  A._validateArgList_closure.prototype = {\n"
-"    call\$1(arg) {\n"
-"      A._asStringQ(arg);\n"
-"      return arg == null ? \"null\" : '\"' + arg + '\"';\n"
-"    },\n"
-"    \$signature: 44\n"
-"  };\n"
-"  A.InternalStyle.prototype = {\n"
-"    getRoot\$1(path) {\n"
-"      var t1,\n"
-"        \$length = this.rootLength\$1(path);\n"
-"      if (\$length > 0)\n"
-"        return B.JSString_methods.substring\$2(path, 0, \$length);\n"
-"      if (this.isRootRelative\$1(path)) {\n"
-"        if (0 >= path.length)\n"
-"          return A.ioore(path, 0);\n"
-"        t1 = path[0];\n"
-"      } else\n"
-"        t1 = null;\n"
-"      return t1;\n"
-"    },\n"
-"    pathsEqual\$2(path1, path2) {\n"
-"      return path1 === path2;\n"
-"    }\n"
-"  };\n"
-"  A.ParsedPath.prototype = {\n"
-"    removeTrailingSeparators\$0() {\n"
-"      var t1, t2, _this = this;\n"
-"      for (;;) {\n"
-"        t1 = _this.parts;\n"
-"        if (!(t1.length !== 0 && B.JSArray_methods.get\$last(t1) === \"\"))\n"
-"          break;\n"
-"        B.JSArray_methods.removeLast\$0(_this.parts);\n"
-"        t1 = _this.separators;\n"
-"        if (0 >= t1.length)\n"
-"          return A.ioore(t1, -1);\n"
-"        t1.pop();\n"
-"      }\n"
-"      t1 = _this.separators;\n"
-"      t2 = t1.length;\n"
-"      if (t2 !== 0)\n"
-"        B.JSArray_methods.\$indexSet(t1, t2 - 1, \"\");\n"
-"    },\n"
-"    normalize\$0() {\n"
-"      var t1, t2, leadingDoubles, _i, part, t3, _this = this,\n"
-"        newParts = A._setArrayType([], type\$.JSArray_String);\n"
-"      for (t1 = _this.parts, t2 = t1.length, leadingDoubles = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {\n"
-"        part = t1[_i];\n"
-"        if (!(part === \".\" || part === \"\"))\n"
-"          if (part === \"..\") {\n"
-"            t3 = newParts.length;\n"
-"            if (t3 !== 0) {\n"
-"              if (0 >= t3)\n"
-"                return A.ioore(newParts, -1);\n"
-"              newParts.pop();\n"
-"            } else\n"
-"              ++leadingDoubles;\n"
-"          } else\n"
-"            B.JSArray_methods.add\$1(newParts, part);\n"
-"      }\n"
-"      if (_this.root == null)\n"
-"        B.JSArray_methods.insertAll\$2(newParts, 0, A.List_List\$filled(leadingDoubles, \"..\", false, type\$.String));\n"
-"      if (newParts.length === 0 && _this.root == null)\n"
-"        B.JSArray_methods.add\$1(newParts, \".\");\n"
-"      _this.parts = newParts;\n"
-"      t1 = _this.style;\n"
-"      _this.separators = A.List_List\$filled(newParts.length + 1, t1.get\$separator(), true, type\$.String);\n"
-"      t2 = _this.root;\n"
-"      if (t2 == null || newParts.length === 0 || !t1.needsSeparator\$1(t2))\n"
-"        B.JSArray_methods.\$indexSet(_this.separators, 0, \"\");\n"
-"      t2 = _this.root;\n"
-"      if (t2 != null && t1 === \$.\$get\$Style_windows())\n"
-"        _this.root = A.stringReplaceAllUnchecked(t2, \"/\", \"\\\\\");\n"
-"      _this.removeTrailingSeparators\$0();\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t2, t3, t4, t5, i,\n"
-"        t1 = this.root;\n"
-"      t1 = t1 != null ? t1 : \"\";\n"
-"      for (t2 = this.parts, t3 = t2.length, t4 = this.separators, t5 = t4.length, i = 0; i < t3; ++i) {\n"
-"        if (!(i < t5))\n"
-"          return A.ioore(t4, i);\n"
-"        t1 = t1 + t4[i] + t2[i];\n"
-"      }\n"
-"      t1 += B.JSArray_methods.get\$last(t4);\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    set\$parts(parts) {\n"
-"      this.parts = type\$.List_String._as(parts);\n"
-"    }\n"
-"  };\n"
-"  A.PathException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"PathException: \" + this.message;\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.Style.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return this.get\$name();\n"
-"    }\n"
-"  };\n"
-"  A.PosixStyle.prototype = {\n"
-"    containsSeparator\$1(path) {\n"
-"      return B.JSString_methods.contains\$1(path, \"/\");\n"
-"    },\n"
-"    isSeparator\$1(codeUnit) {\n"
-"      return codeUnit === 47;\n"
-"    },\n"
-"    needsSeparator\$1(path) {\n"
-"      var t2,\n"
-"        t1 = path.length;\n"
-"      if (t1 !== 0) {\n"
-"        t2 = t1 - 1;\n"
-"        if (!(t2 >= 0))\n"
-"          return A.ioore(path, t2);\n"
-"        t2 = path.charCodeAt(t2) !== 47;\n"
-"        t1 = t2;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      return t1;\n"
-"    },\n"
-"    rootLength\$2\$withDrive(path, withDrive) {\n"
-"      var t1 = path.length;\n"
-"      if (t1 !== 0) {\n"
-"        if (0 >= t1)\n"
-"          return A.ioore(path, 0);\n"
-"        t1 = path.charCodeAt(0) === 47;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      if (t1)\n"
-"        return 1;\n"
-"      return 0;\n"
-"    },\n"
-"    rootLength\$1(path) {\n"
-"      return this.rootLength\$2\$withDrive(path, false);\n"
-"    },\n"
-"    isRootRelative\$1(path) {\n"
-"      return false;\n"
-"    },\n"
-"    pathFromUri\$1(uri) {\n"
-"      var t1;\n"
-"      if (uri.get\$scheme() === \"\" || uri.get\$scheme() === \"file\") {\n"
-"        t1 = uri.get\$path();\n"
-"        return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);\n"
-"      }\n"
-"      throw A.wrapException(A.ArgumentError\$(\"Uri \" + uri.toString\$0(0) + \" must have scheme 'file:'.\", null));\n"
-"    },\n"
-"    get\$name() {\n"
-"      return \"posix\";\n"
-"    },\n"
-"    get\$separator() {\n"
-"      return \"/\";\n"
-"    }\n"
-"  };\n"
-"  A.UrlStyle.prototype = {\n"
-"    containsSeparator\$1(path) {\n"
-"      return B.JSString_methods.contains\$1(path, \"/\");\n"
-"    },\n"
-"    isSeparator\$1(codeUnit) {\n"
-"      return codeUnit === 47;\n"
-"    },\n"
-"    needsSeparator\$1(path) {\n"
-"      var t2,\n"
-"        t1 = path.length;\n"
-"      if (t1 === 0)\n"
-"        return false;\n"
-"      t2 = t1 - 1;\n"
-"      if (!(t2 >= 0))\n"
-"        return A.ioore(path, t2);\n"
-"      if (path.charCodeAt(t2) !== 47)\n"
-"        return true;\n"
-"      return B.JSString_methods.endsWith\$1(path, \"://\") && this.rootLength\$1(path) === t1;\n"
-"    },\n"
-"    rootLength\$2\$withDrive(path, withDrive) {\n"
-"      var i, codeUnit, index,\n"
-"        t1 = path.length;\n"
-"      if (t1 === 0)\n"
-"        return 0;\n"
-"      if (0 >= t1)\n"
-"        return A.ioore(path, 0);\n"
-"      if (path.charCodeAt(0) === 47)\n"
-"        return 1;\n"
-"      for (i = 0; i < t1; ++i) {\n"
-"        codeUnit = path.charCodeAt(i);\n"
-"        if (codeUnit === 47)\n"
-"          return 0;\n"
-"        if (codeUnit === 58) {\n"
-"          if (i === 0)\n"
-"            return 0;\n"
-"          index = B.JSString_methods.indexOf\$2(path, \"/\", B.JSString_methods.startsWith\$2(path, \"//\", i + 1) ? i + 3 : i);\n"
-"          if (index <= 0)\n"
-"            return t1;\n"
-"          if (!withDrive || t1 < index + 3)\n"
-"            return index;\n"
-"          if (!B.JSString_methods.startsWith\$1(path, \"file://\"))\n"
-"            return index;\n"
-"          t1 = A.driveLetterEnd(path, index + 1);\n"
-"          return t1 == null ? index : t1;\n"
-"        }\n"
-"      }\n"
-"      return 0;\n"
-"    },\n"
-"    rootLength\$1(path) {\n"
-"      return this.rootLength\$2\$withDrive(path, false);\n"
-"    },\n"
-"    isRootRelative\$1(path) {\n"
-"      var t1 = path.length;\n"
-"      if (t1 !== 0) {\n"
-"        if (0 >= t1)\n"
-"          return A.ioore(path, 0);\n"
-"        t1 = path.charCodeAt(0) === 47;\n"
-"      } else\n"
-"        t1 = false;\n"
-"      return t1;\n"
-"    },\n"
-"    pathFromUri\$1(uri) {\n"
-"      return uri.toString\$0(0);\n"
-"    },\n"
-"    get\$name() {\n"
-"      return \"url\";\n"
-"    },\n"
-"    get\$separator() {\n"
-"      return \"/\";\n"
-"    }\n"
-"  };\n"
-"  A.WindowsStyle.prototype = {\n"
-"    containsSeparator\$1(path) {\n"
-"      return B.JSString_methods.contains\$1(path, \"/\");\n"
-"    },\n"
-"    isSeparator\$1(codeUnit) {\n"
-"      return codeUnit === 47 || codeUnit === 92;\n"
-"    },\n"
-"    needsSeparator\$1(path) {\n"
-"      var t2,\n"
-"        t1 = path.length;\n"
-"      if (t1 === 0)\n"
-"        return false;\n"
-"      t2 = t1 - 1;\n"
-"      if (!(t2 >= 0))\n"
-"        return A.ioore(path, t2);\n"
-"      t2 = path.charCodeAt(t2);\n"
-"      return !(t2 === 47 || t2 === 92);\n"
-"    },\n"
-"    rootLength\$2\$withDrive(path, withDrive) {\n"
-"      var t2, index,\n"
-"        t1 = path.length;\n"
-"      if (t1 === 0)\n"
-"        return 0;\n"
-"      if (0 >= t1)\n"
-"        return A.ioore(path, 0);\n"
-"      if (path.charCodeAt(0) === 47)\n"
-"        return 1;\n"
-"      if (path.charCodeAt(0) === 92) {\n"
-"        if (t1 >= 2) {\n"
-"          if (1 >= t1)\n"
-"            return A.ioore(path, 1);\n"
-"          t2 = path.charCodeAt(1) !== 92;\n"
-"        } else\n"
-"          t2 = true;\n"
-"        if (t2)\n"
-"          return 1;\n"
-"        index = B.JSString_methods.indexOf\$2(path, \"\\\\\", 2);\n"
-"        if (index > 0) {\n"
-"          index = B.JSString_methods.indexOf\$2(path, \"\\\\\", index + 1);\n"
-"          if (index > 0)\n"
-"            return index;\n"
-"        }\n"
-"        return t1;\n"
-"      }\n"
-"      if (t1 < 3)\n"
-"        return 0;\n"
-"      if (!A.isAlphabetic(path.charCodeAt(0)))\n"
-"        return 0;\n"
-"      if (path.charCodeAt(1) !== 58)\n"
-"        return 0;\n"
-"      t1 = path.charCodeAt(2);\n"
-"      if (!(t1 === 47 || t1 === 92))\n"
-"        return 0;\n"
-"      return 3;\n"
-"    },\n"
-"    rootLength\$1(path) {\n"
-"      return this.rootLength\$2\$withDrive(path, false);\n"
-"    },\n"
-"    isRootRelative\$1(path) {\n"
-"      return this.rootLength\$1(path) === 1;\n"
-"    },\n"
-"    pathFromUri\$1(uri) {\n"
-"      var path, t1;\n"
-"      if (uri.get\$scheme() !== \"\" && uri.get\$scheme() !== \"file\")\n"
-"        throw A.wrapException(A.ArgumentError\$(\"Uri \" + uri.toString\$0(0) + \" must have scheme 'file:'.\", null));\n"
-"      path = uri.get\$path();\n"
-"      if (uri.get\$host() === \"\") {\n"
-"        if (path.length >= 3 && B.JSString_methods.startsWith\$1(path, \"/\") && A.driveLetterEnd(path, 1) != null)\n"
-"          path = B.JSString_methods.replaceFirst\$2(path, \"/\", \"\");\n"
-"      } else\n"
-"        path = \"\\\\\\\\\" + uri.get\$host() + path;\n"
-"      t1 = A.stringReplaceAllUnchecked(path, \"/\", \"\\\\\");\n"
-"      return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);\n"
-"    },\n"
-"    codeUnitsEqual\$2(codeUnit1, codeUnit2) {\n"
-"      var upperCase1;\n"
-"      if (codeUnit1 === codeUnit2)\n"
-"        return true;\n"
-"      if (codeUnit1 === 47)\n"
-"        return codeUnit2 === 92;\n"
-"      if (codeUnit1 === 92)\n"
-"        return codeUnit2 === 47;\n"
-"      if ((codeUnit1 ^ codeUnit2) !== 32)\n"
-"        return false;\n"
-"      upperCase1 = codeUnit1 | 32;\n"
-"      return upperCase1 >= 97 && upperCase1 <= 122;\n"
-"    },\n"
-"    pathsEqual\$2(path1, path2) {\n"
-"      var t1, t2, i;\n"
-"      if (path1 === path2)\n"
-"        return true;\n"
-"      t1 = path1.length;\n"
-"      t2 = path2.length;\n"
-"      if (t1 !== t2)\n"
-"        return false;\n"
-"      for (i = 0; i < t1; ++i) {\n"
-"        if (!(i < t2))\n"
-"          return A.ioore(path2, i);\n"
-"        if (!this.codeUnitsEqual\$2(path1.charCodeAt(i), path2.charCodeAt(i)))\n"
-"          return false;\n"
-"      }\n"
-"      return true;\n"
-"    },\n"
-"    get\$name() {\n"
-"      return \"windows\";\n"
-"    },\n"
-"    get\$separator() {\n"
-"      return \"\\\\\";\n"
-"    }\n"
-"  };\n"
-"  A.Pool.prototype = {\n"
-"    request\$0() {\n"
-"      var t1, t2, _this = this;\n"
-"      if ((_this._closeMemo._async_memoizer\$_completer.future._state & 30) !== 0)\n"
-"        throw A.wrapException(A.StateError\$(\"request() may not be called on a closed Pool.\"));\n"
-"      t1 = _this._allocatedResources;\n"
-"      if (t1 < _this._maxAllocatedResources) {\n"
-"        _this._allocatedResources = t1 + 1;\n"
-"        return A.Future_Future\$value(new A.PoolResource(_this), type\$.PoolResource);\n"
-"      } else {\n"
-"        t1 = _this._onReleaseCallbacks;\n"
-"        if (!t1.get\$isEmpty(0))\n"
-"          return _this._runOnRelease\$1(t1.removeFirst\$0());\n"
-"        else {\n"
-"          t1 = new A._Future(\$.Zone__current, type\$._Future_PoolResource);\n"
-"          t2 = _this._requestedResources;\n"
-"          t2._collection\$_add\$1(t2.\$ti._precomputed1._as(new A._AsyncCompleter(t1, type\$._AsyncCompleter_PoolResource)));\n"
-"          _this._resetTimer\$0();\n"
-"          return t1;\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    withResource\$1\$1(callback, \$T) {\n"
-"      return this.withResource\$body\$Pool(\$T._eval\$1(\"0/()\")._as(callback), \$T, \$T);\n"
-"    },\n"
-"    withResource\$body\$Pool(callback, \$T, \$async\$type) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(\$async\$type),\n"
-"        \$async\$returnValue, \$async\$handler = 2, \$async\$errorStack = [], \$async\$next = [], \$async\$self = this, resource, t1, t2;\n"
-"      var \$async\$withResource\$1\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              if ((\$async\$self._closeMemo._async_memoizer\$_completer.future._state & 30) !== 0)\n"
-"                throw A.wrapException(A.StateError\$(\"withResource() may not be called on a closed Pool.\"));\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(\$async\$self.request\$0(), \$async\$withResource\$1\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              resource = \$async\$result;\n"
-"              \$async\$handler = 4;\n"
-"              t1 = callback.call\$0();\n"
-"              \$async\$goto = 7;\n"
-"              return A._asyncAwait(\$T._eval\$1(\"Future<0>\")._is(t1) ? t1 : A._Future\$value(\$T._as(t1), \$T), \$async\$withResource\$1\$1);\n"
-"            case 7:\n"
-"              // returning from await.\n"
-"              t1 = \$async\$result;\n"
-"              \$async\$returnValue = t1;\n"
-"              \$async\$next = [1];\n"
-"              // goto finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"              \$async\$next.push(6);\n"
-"              // goto finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 4:\n"
-"              // uncaught\n"
-"              \$async\$next = [2];\n"
-"            case 5:\n"
-"              // finally\n"
-"              \$async\$handler = 2;\n"
-"              t1 = resource;\n"
-"              if (t1._released)\n"
-"                A.throwExpression(A.StateError\$(\"A PoolResource may only be released once.\"));\n"
-"              t1._released = true;\n"
-"              t1 = t1._pool;\n"
-"              t1._resetTimer\$0();\n"
-"              t2 = t1._requestedResources;\n"
-"              if (!t2.get\$isEmpty(0))\n"
-"                t2.removeFirst\$0().complete\$1(new A.PoolResource(t1));\n"
-"              else {\n"
-"                t2 = --t1._allocatedResources;\n"
-"                if ((t1._closeMemo._async_memoizer\$_completer.future._state & 30) !== 0 && t2 === 0)\n"
-"                  null.close\$0();\n"
-"              }\n"
-"              // goto the next finally handler\n"
-"              \$async\$goto = \$async\$next.pop();\n"
-"              break;\n"
-"            case 6:\n"
-"              // after finally\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"            case 2:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$withResource\$1\$1, \$async\$completer);\n"
-"    },\n"
-"    _runOnRelease\$1(onRelease) {\n"
-"      var t1, t2;\n"
-"      type\$.void_Function._as(onRelease);\n"
-"      t1 = new A._Future(\$.Zone__current, type\$._Future_PoolResource);\n"
-"      t2 = this._onReleaseCompleters;\n"
-"      t2._collection\$_add\$1(t2.\$ti._precomputed1._as(new A._SyncCompleter(t1, type\$._SyncCompleter_PoolResource)));\n"
-"      A.Future_Future\$sync(onRelease, type\$.void).catchError\$1(new A.Pool__runOnRelease_closure()).then\$1\$1(new A.Pool__runOnRelease_closure0(this), type\$.Null);\n"
-"      return t1;\n"
-"    },\n"
-"    _resetTimer\$0() {\n"
-"      var t2,\n"
-"        t1 = this._timer;\n"
-"      if (t1 == null)\n"
-"        return;\n"
-"      t2 = this._requestedResources;\n"
-"      if (t2._head === t2._tail)\n"
-"        t1._restartable_timer\$_timer.cancel\$0();\n"
-"      else {\n"
-"        t1._restartable_timer\$_timer.cancel\$0();\n"
-"        t1._restartable_timer\$_timer = A.Timer_Timer(t1._duration, t1._restartable_timer\$_callback);\n"
-"      }\n"
-"    }\n"
-"  };\n"
-"  A.Pool__runOnRelease_closure.prototype = {\n"
-"    call\$1(_) {\n"
-"    },\n"
-"    \$signature: 6\n"
-"  };\n"
-"  A.Pool__runOnRelease_closure0.prototype = {\n"
-"    call\$1(_) {\n"
-"      var t1 = this.\$this;\n"
-"      t1._onReleaseCompleters.removeFirst\$0().complete\$1(new A.PoolResource(t1));\n"
-"    },\n"
-"    \$signature: 45\n"
-"  };\n"
-"  A.PoolResource.prototype = {};\n"
-"  A.SourceFile.prototype = {\n"
-"    get\$length(_) {\n"
-"      return this._decodedChars.length;\n"
-"    },\n"
-"    get\$lines() {\n"
-"      return this._lineStarts.length;\n"
-"    },\n"
-"    SourceFile\$_fromList\$2\$url(decodedChars, url) {\n"
-"      var t1, t2, t3, t4, t5, t6, i, c, j, t7;\n"
-"      for (t1 = this._decodedChars, t2 = t1.length, t3 = decodedChars.__internal\$_string, t4 = t3.length, t5 = t1.\$flags | 0, t6 = this._lineStarts, i = 0; i < t2; ++i) {\n"
-"        if (!(i < t4))\n"
-"          return A.ioore(t3, i);\n"
-"        c = t3.charCodeAt(i);\n"
-"        t5 & 2 && A.throwUnsupportedOperation(t1);\n"
-"        t1[i] = c;\n"
-"        if (c === 13) {\n"
-"          j = i + 1;\n"
-"          if (j < t4) {\n"
-"            if (!(j < t4))\n"
-"              return A.ioore(t3, j);\n"
-"            t7 = t3.charCodeAt(j) !== 10;\n"
-"          } else\n"
-"            t7 = true;\n"
-"          if (t7)\n"
-"            c = 10;\n"
-"        }\n"
-"        if (c === 10)\n"
-"          B.JSArray_methods.add\$1(t6, i + 1);\n"
-"      }\n"
-"    },\n"
-"    getLine\$1(offset) {\n"
-"      var t1, _this = this;\n"
-"      if (offset < 0)\n"
-"        throw A.wrapException(A.RangeError\$(\"Offset may not be negative, was \" + offset + \".\"));\n"
-"      else if (offset > _this._decodedChars.length)\n"
-"        throw A.wrapException(A.RangeError\$(\"Offset \" + offset + string\$.x20must_ + _this.get\$length(0) + \".\"));\n"
-"      t1 = _this._lineStarts;\n"
-"      if (offset < B.JSArray_methods.get\$first(t1))\n"
-"        return -1;\n"
-"      if (offset >= B.JSArray_methods.get\$last(t1))\n"
-"        return t1.length - 1;\n"
-"      if (_this._isNearCachedLine\$1(offset)) {\n"
-"        t1 = _this._cachedLine;\n"
-"        t1.toString;\n"
-"        return t1;\n"
-"      }\n"
-"      return _this._cachedLine = _this._binarySearch\$1(offset) - 1;\n"
-"    },\n"
-"    _isNearCachedLine\$1(offset) {\n"
-"      var t2, t3, t4,\n"
-"        t1 = this._cachedLine;\n"
-"      if (t1 == null)\n"
-"        return false;\n"
-"      t2 = this._lineStarts;\n"
-"      t3 = t2.length;\n"
-"      if (t1 >>> 0 !== t1 || t1 >= t3)\n"
-"        return A.ioore(t2, t1);\n"
-"      if (offset < t2[t1])\n"
-"        return false;\n"
-"      if (!(t1 >= t3 - 1)) {\n"
-"        t4 = t1 + 1;\n"
-"        if (!(t4 < t3))\n"
-"          return A.ioore(t2, t4);\n"
-"        t4 = offset < t2[t4];\n"
-"      } else\n"
-"        t4 = true;\n"
-"      if (t4)\n"
-"        return true;\n"
-"      if (!(t1 >= t3 - 2)) {\n"
-"        t4 = t1 + 2;\n"
-"        if (!(t4 < t3))\n"
-"          return A.ioore(t2, t4);\n"
-"        t4 = offset < t2[t4];\n"
-"        t2 = t4;\n"
-"      } else\n"
-"        t2 = true;\n"
-"      if (t2) {\n"
-"        this._cachedLine = t1 + 1;\n"
-"        return true;\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    _binarySearch\$1(offset) {\n"
-"      var min, half,\n"
-"        t1 = this._lineStarts,\n"
-"        t2 = t1.length,\n"
-"        max = t2 - 1;\n"
-"      for (min = 0; min < max;) {\n"
-"        half = min + B.JSInt_methods._tdivFast\$1(max - min, 2);\n"
-"        if (!(half >= 0 && half < t2))\n"
-"          return A.ioore(t1, half);\n"
-"        if (t1[half] > offset)\n"
-"          max = half;\n"
-"        else\n"
-"          min = half + 1;\n"
-"      }\n"
-"      return max;\n"
-"    },\n"
-"    getColumn\$1(offset) {\n"
-"      var line, t1, lineStart, _this = this;\n"
-"      if (offset < 0)\n"
-"        throw A.wrapException(A.RangeError\$(\"Offset may not be negative, was \" + offset + \".\"));\n"
-"      else if (offset > _this._decodedChars.length)\n"
-"        throw A.wrapException(A.RangeError\$(\"Offset \" + offset + \" must be not be greater than the number of characters in the file, \" + _this.get\$length(0) + \".\"));\n"
-"      line = _this.getLine\$1(offset);\n"
-"      t1 = _this._lineStarts;\n"
-"      if (!(line >= 0 && line < t1.length))\n"
-"        return A.ioore(t1, line);\n"
-"      lineStart = t1[line];\n"
-"      if (lineStart > offset)\n"
-"        throw A.wrapException(A.RangeError\$(\"Line \" + line + \" comes after offset \" + offset + \".\"));\n"
-"      return offset - lineStart;\n"
-"    },\n"
-"    getOffset\$1(line) {\n"
-"      var t1, t2, result, t3;\n"
-"      if (line < 0)\n"
-"        throw A.wrapException(A.RangeError\$(\"Line may not be negative, was \" + line + \".\"));\n"
-"      else {\n"
-"        t1 = this._lineStarts;\n"
-"        t2 = t1.length;\n"
-"        if (line >= t2)\n"
-"          throw A.wrapException(A.RangeError\$(\"Line \" + line + \" must be less than the number of lines in the file, \" + this.get\$lines() + \".\"));\n"
-"      }\n"
-"      result = t1[line];\n"
-"      if (result <= this._decodedChars.length) {\n"
-"        t3 = line + 1;\n"
-"        t1 = t3 < t2 && result >= t1[t3];\n"
-"      } else\n"
-"        t1 = true;\n"
-"      if (t1)\n"
-"        throw A.wrapException(A.RangeError\$(\"Line \" + line + \" doesn't have 0 columns.\"));\n"
-"      return result;\n"
-"    }\n"
-"  };\n"
-"  A.FileLocation.prototype = {\n"
-"    get\$sourceUrl() {\n"
-"      return this.file.url;\n"
-"    },\n"
-"    get\$line() {\n"
-"      return this.file.getLine\$1(this.offset);\n"
-"    },\n"
-"    get\$column() {\n"
-"      return this.file.getColumn\$1(this.offset);\n"
-"    },\n"
-"    get\$offset() {\n"
-"      return this.offset;\n"
-"    }\n"
-"  };\n"
-"  A._FileSpan.prototype = {\n"
-"    get\$sourceUrl() {\n"
-"      return this.file.url;\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this._file\$_end - this._file\$_start;\n"
-"    },\n"
-"    get\$start() {\n"
-"      return A.FileLocation\$_(this.file, this._file\$_start);\n"
-"    },\n"
-"    get\$end() {\n"
-"      return A.FileLocation\$_(this.file, this._file\$_end);\n"
-"    },\n"
-"    get\$text() {\n"
-"      return A.String_String\$fromCharCodes(B.NativeUint32List_methods.sublist\$2(this.file._decodedChars, this._file\$_start, this._file\$_end), 0, null);\n"
-"    },\n"
-"    get\$context() {\n"
-"      var _this = this,\n"
-"        t1 = _this.file,\n"
-"        endOffset = _this._file\$_end,\n"
-"        endLine = t1.getLine\$1(endOffset);\n"
-"      if (t1.getColumn\$1(endOffset) === 0 && endLine !== 0) {\n"
-"        if (endOffset - _this._file\$_start === 0)\n"
-"          return endLine === t1._lineStarts.length - 1 ? \"\" : A.String_String\$fromCharCodes(B.NativeUint32List_methods.sublist\$2(t1._decodedChars, t1.getOffset\$1(endLine), t1.getOffset\$1(endLine + 1)), 0, null);\n"
-"      } else\n"
-"        endOffset = endLine === t1._lineStarts.length - 1 ? t1._decodedChars.length : t1.getOffset\$1(endLine + 1);\n"
-"      return A.String_String\$fromCharCodes(B.NativeUint32List_methods.sublist\$2(t1._decodedChars, t1.getOffset\$1(t1.getLine\$1(_this._file\$_start)), endOffset), 0, null);\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      var result;\n"
-"      type\$.SourceSpan._as(other);\n"
-"      if (!(other instanceof A._FileSpan))\n"
-"        return this.super\$SourceSpanMixin\$compareTo(0, other);\n"
-"      result = B.JSInt_methods.compareTo\$1(this._file\$_start, other._file\$_start);\n"
-"      return result === 0 ? B.JSInt_methods.compareTo\$1(this._file\$_end, other._file\$_end) : result;\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      var _this = this;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (!(other instanceof A._FileSpan))\n"
-"        return _this.super\$SourceSpanMixin\$\$eq(0, other);\n"
-"      return _this._file\$_start === other._file\$_start && _this._file\$_end === other._file\$_end && J.\$eq\$(_this.file.url, other.file.url);\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this._file\$_start, this._file\$_end, this.file.url, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    \$isSourceSpanWithContext: 1\n"
-"  };\n"
-"  A.Highlighter.prototype = {\n"
-"    highlight\$0() {\n"
-"      var t2, highlightsByColumn, t3, t4, i, line, lastLine, t5, t6, t7, t8, t9, t10, t11, index, primaryIdx, primary, _i, _this = this, _null = null,\n"
-"        t1 = _this._lines;\n"
-"      _this._writeFileStart\$1(B.JSArray_methods.get\$first(t1).url);\n"
-"      t2 = _this._maxMultilineSpans;\n"
-"      highlightsByColumn = A.List_List\$filled(t2, _null, false, type\$.nullable__Highlight);\n"
-"      for (t3 = _this._buffer, t2 = t2 !== 0, t4 = _this._primaryColor, i = 0; i < t1.length; ++i) {\n"
-"        line = t1[i];\n"
-"        if (i > 0) {\n"
-"          lastLine = t1[i - 1];\n"
-"          t5 = line.url;\n"
-"          if (!J.\$eq\$(lastLine.url, t5)) {\n"
-"            _this._writeSidebar\$1\$end(\"\\u2575\");\n"
-"            t3._contents += \"\\n\";\n"
-"            _this._writeFileStart\$1(t5);\n"
-"          } else if (lastLine.number + 1 !== line.number) {\n"
-"            _this._writeSidebar\$1\$text(\"...\");\n"
-"            t3._contents += \"\\n\";\n"
-"          }\n"
-"        }\n"
-"        for (t5 = line.highlights, t6 = A._arrayInstanceType(t5)._eval\$1(\"ReversedListIterable<1>\"), t7 = new A.ReversedListIterable(t5, t6), t7 = new A.ListIterator(t7, t7.get\$length(0), t6._eval\$1(\"ListIterator<ListIterable.E>\")), t6 = t6._eval\$1(\"ListIterable.E\"), t8 = line.number, t9 = line.text; t7.moveNext\$0();) {\n"
-"          t10 = t7.__internal\$_current;\n"
-"          if (t10 == null)\n"
-"            t10 = t6._as(t10);\n"
-"          t11 = t10.span;\n"
-"          if (t11.get\$start().get\$line() !== t11.get\$end().get\$line() && t11.get\$start().get\$line() === t8 && _this._isOnlyWhitespace\$1(B.JSString_methods.substring\$2(t9, 0, t11.get\$start().get\$column()))) {\n"
-"            index = B.JSArray_methods.indexOf\$1(highlightsByColumn, _null);\n"
-"            if (index < 0)\n"
-"              A.throwExpression(A.ArgumentError\$(A.S(highlightsByColumn) + \" contains no null elements.\", _null));\n"
-"            B.JSArray_methods.\$indexSet(highlightsByColumn, index, t10);\n"
-"          }\n"
-"        }\n"
-"        _this._writeSidebar\$1\$line(t8);\n"
-"        t3._contents += \" \";\n"
-"        _this._writeMultilineHighlights\$2(line, highlightsByColumn);\n"
-"        if (t2)\n"
-"          t3._contents += \" \";\n"
-"        primaryIdx = B.JSArray_methods.indexWhere\$1(t5, new A.Highlighter_highlight_closure());\n"
-"        if (primaryIdx === -1)\n"
-"          primary = _null;\n"
-"        else {\n"
-"          if (!(primaryIdx >= 0 && primaryIdx < t5.length))\n"
-"            return A.ioore(t5, primaryIdx);\n"
-"          primary = t5[primaryIdx];\n"
-"        }\n"
-"        t6 = primary != null;\n"
-"        if (t6) {\n"
-"          t7 = primary.span;\n"
-"          t10 = t7.get\$start().get\$line() === t8 ? t7.get\$start().get\$column() : 0;\n"
-"          _this._writeHighlightedText\$4\$color(t9, t10, t7.get\$end().get\$line() === t8 ? t7.get\$end().get\$column() : t9.length, t4);\n"
-"        } else\n"
-"          _this._writeText\$1(t9);\n"
-"        t3._contents += \"\\n\";\n"
-"        if (t6)\n"
-"          _this._writeIndicator\$3(line, primary, highlightsByColumn);\n"
-"        for (t5 = t5.length, _i = 0; _i < t5; ++_i)\n"
-"          continue;\n"
-"      }\n"
-"      _this._writeSidebar\$1\$end(\"\\u2575\");\n"
-"      t1 = t3._contents;\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    },\n"
-"    _writeFileStart\$1(url) {\n"
-"      var t1, t2, _this = this;\n"
-"      if (!_this._multipleFiles || !type\$.Uri._is(url))\n"
-"        _this._writeSidebar\$1\$end(\"\\u2577\");\n"
-"      else {\n"
-"        _this._writeSidebar\$1\$end(\"\\u250c\");\n"
-"        _this._colorize\$1\$2\$color(new A.Highlighter__writeFileStart_closure(_this), \"\\x1b[34m\", type\$.void);\n"
-"        t1 = _this._buffer;\n"
-"        t2 = \" \" + \$.\$get\$context().prettyUri\$1(url);\n"
-"        t1._contents += t2;\n"
-"      }\n"
-"      _this._buffer._contents += \"\\n\";\n"
-"    },\n"
-"    _writeMultilineHighlights\$3\$current(line, highlightsByColumn, current) {\n"
-"      var t1, currentColor, t2, t3, t4, t5, t6, foundCurrent, _i, highlight, t7, startLine, endLine, _this = this, _box_0 = {};\n"
-"      type\$.List_nullable__Highlight._as(highlightsByColumn);\n"
-"      _box_0.openedOnThisLine = false;\n"
-"      _box_0.openedOnThisLineColor = null;\n"
-"      t1 = current == null;\n"
-"      if (t1)\n"
-"        currentColor = null;\n"
-"      else\n"
-"        currentColor = _this._primaryColor;\n"
-"      for (t2 = highlightsByColumn.length, t3 = type\$.Null, t4 = _this._primaryColor, t1 = !t1, t5 = _this._buffer, t6 = type\$.void, foundCurrent = false, _i = 0; _i < t2; ++_i) {\n"
-"        highlight = highlightsByColumn[_i];\n"
-"        t7 = highlight == null;\n"
-"        startLine = t7 ? null : highlight.span.get\$start().get\$line();\n"
-"        endLine = t7 ? null : highlight.span.get\$end().get\$line();\n"
-"        if (t1 && highlight === current) {\n"
-"          _this._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights_closure(_this, startLine, line), currentColor, t3);\n"
-"          foundCurrent = true;\n"
-"        } else if (foundCurrent)\n"
-"          _this._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights_closure0(_this, highlight), currentColor, t3);\n"
-"        else if (t7)\n"
-"          if (_box_0.openedOnThisLine)\n"
-"            _this._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights_closure1(_this), _box_0.openedOnThisLineColor, t6);\n"
-"          else\n"
-"            t5._contents += \" \";\n"
-"        else\n"
-"          _this._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights_closure2(_box_0, _this, current, startLine, line, highlight, endLine), t4, t3);\n"
-"      }\n"
-"    },\n"
-"    _writeMultilineHighlights\$2(line, highlightsByColumn) {\n"
-"      return this._writeMultilineHighlights\$3\$current(line, highlightsByColumn, null);\n"
-"    },\n"
-"    _writeHighlightedText\$4\$color(text, startColumn, endColumn, color) {\n"
-"      var _this = this;\n"
-"      _this._writeText\$1(B.JSString_methods.substring\$2(text, 0, startColumn));\n"
-"      _this._colorize\$1\$2\$color(new A.Highlighter__writeHighlightedText_closure(_this, text, startColumn, endColumn), color, type\$.void);\n"
-"      _this._writeText\$1(B.JSString_methods.substring\$2(text, endColumn, text.length));\n"
-"    },\n"
-"    _writeIndicator\$3(line, highlight, highlightsByColumn) {\n"
-"      var color, t1, t2, _this = this;\n"
-"      type\$.List_nullable__Highlight._as(highlightsByColumn);\n"
-"      color = _this._primaryColor;\n"
-"      t1 = highlight.span;\n"
-"      if (t1.get\$start().get\$line() === t1.get\$end().get\$line()) {\n"
-"        _this._writeSidebar\$0();\n"
-"        t1 = _this._buffer;\n"
-"        t1._contents += \" \";\n"
-"        _this._writeMultilineHighlights\$3\$current(line, highlightsByColumn, highlight);\n"
-"        if (highlightsByColumn.length !== 0)\n"
-"          t1._contents += \" \";\n"
-"        _this._writeLabel\$3(highlight, highlightsByColumn, _this._colorize\$1\$2\$color(new A.Highlighter__writeIndicator_closure(_this, line, highlight), color, type\$.int));\n"
-"      } else {\n"
-"        t2 = line.number;\n"
-"        if (t1.get\$start().get\$line() === t2) {\n"
-"          if (B.JSArray_methods.contains\$1(highlightsByColumn, highlight))\n"
-"            return;\n"
-"          A.replaceFirstNull(highlightsByColumn, highlight, type\$._Highlight);\n"
-"          _this._writeSidebar\$0();\n"
-"          t1 = _this._buffer;\n"
-"          t1._contents += \" \";\n"
-"          _this._writeMultilineHighlights\$3\$current(line, highlightsByColumn, highlight);\n"
-"          _this._colorize\$1\$2\$color(new A.Highlighter__writeIndicator_closure0(_this, line, highlight), color, type\$.void);\n"
-"          t1._contents += \"\\n\";\n"
-"        } else if (t1.get\$end().get\$line() === t2) {\n"
-"          t1 = t1.get\$end().get\$column();\n"
-"          if (t1 === line.text.length) {\n"
-"            A.replaceWithNull(highlightsByColumn, highlight, type\$._Highlight);\n"
-"            return;\n"
-"          }\n"
-"          _this._writeSidebar\$0();\n"
-"          _this._buffer._contents += \" \";\n"
-"          _this._writeMultilineHighlights\$3\$current(line, highlightsByColumn, highlight);\n"
-"          _this._writeLabel\$3(highlight, highlightsByColumn, _this._colorize\$1\$2\$color(new A.Highlighter__writeIndicator_closure1(_this, false, line, highlight), color, type\$.int));\n"
-"          A.replaceWithNull(highlightsByColumn, highlight, type\$._Highlight);\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    _writeArrow\$3\$beginning(line, column, beginning) {\n"
-"      var t1 = beginning ? 0 : 1,\n"
-"        t2 = this._buffer;\n"
-"      t1 = B.JSString_methods.\$mul(\"\\u2500\", 1 + column + this._countTabs\$1(B.JSString_methods.substring\$2(line.text, 0, column + t1)) * 3);\n"
-"      t2._contents = (t2._contents += t1) + \"^\";\n"
-"    },\n"
-"    _writeArrow\$2(line, column) {\n"
-"      return this._writeArrow\$3\$beginning(line, column, true);\n"
-"    },\n"
-"    _writeLabel\$3(highlight, highlightsByColumn, underlineLength) {\n"
-"      type\$.List_nullable__Highlight._as(highlightsByColumn);\n"
-"      this._buffer._contents += \"\\n\";\n"
-"      return;\n"
-"    },\n"
-"    _writeText\$1(text) {\n"
-"      var t1, t2, t3, t4;\n"
-"      for (t1 = new A.CodeUnits(text), t2 = type\$.CodeUnits, t1 = new A.ListIterator(t1, t1.get\$length(0), t2._eval\$1(\"ListIterator<ListBase.E>\")), t3 = this._buffer, t2 = t2._eval\$1(\"ListBase.E\"); t1.moveNext\$0();) {\n"
-"        t4 = t1.__internal\$_current;\n"
-"        if (t4 == null)\n"
-"          t4 = t2._as(t4);\n"
-"        if (t4 === 9)\n"
-"          t3._contents += B.JSString_methods.\$mul(\" \", 4);\n"
-"        else {\n"
-"          t4 = A.Primitives_stringFromCharCode(t4);\n"
-"          t3._contents += t4;\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    _writeSidebar\$3\$end\$line\$text(end, line, text) {\n"
-"      var t1 = {};\n"
-"      t1.text = text;\n"
-"      if (line != null)\n"
-"        t1.text = B.JSInt_methods.toString\$0(line + 1);\n"
-"      this._colorize\$1\$2\$color(new A.Highlighter__writeSidebar_closure(t1, this, end), \"\\x1b[34m\", type\$.Null);\n"
-"    },\n"
-"    _writeSidebar\$1\$end(end) {\n"
-"      return this._writeSidebar\$3\$end\$line\$text(end, null, null);\n"
-"    },\n"
-"    _writeSidebar\$1\$text(text) {\n"
-"      return this._writeSidebar\$3\$end\$line\$text(null, null, text);\n"
-"    },\n"
-"    _writeSidebar\$1\$line(line) {\n"
-"      return this._writeSidebar\$3\$end\$line\$text(null, line, null);\n"
-"    },\n"
-"    _writeSidebar\$0() {\n"
-"      return this._writeSidebar\$3\$end\$line\$text(null, null, null);\n"
-"    },\n"
-"    _countTabs\$1(text) {\n"
-"      var t1, t2, count, t3;\n"
-"      for (t1 = new A.CodeUnits(text), t2 = type\$.CodeUnits, t1 = new A.ListIterator(t1, t1.get\$length(0), t2._eval\$1(\"ListIterator<ListBase.E>\")), t2 = t2._eval\$1(\"ListBase.E\"), count = 0; t1.moveNext\$0();) {\n"
-"        t3 = t1.__internal\$_current;\n"
-"        if ((t3 == null ? t2._as(t3) : t3) === 9)\n"
-"          ++count;\n"
-"      }\n"
-"      return count;\n"
-"    },\n"
-"    _isOnlyWhitespace\$1(text) {\n"
-"      var t1, t2, t3;\n"
-"      for (t1 = new A.CodeUnits(text), t2 = type\$.CodeUnits, t1 = new A.ListIterator(t1, t1.get\$length(0), t2._eval\$1(\"ListIterator<ListBase.E>\")), t2 = t2._eval\$1(\"ListBase.E\"); t1.moveNext\$0();) {\n"
-"        t3 = t1.__internal\$_current;\n"
-"        if (t3 == null)\n"
-"          t3 = t2._as(t3);\n"
-"        if (t3 !== 32 && t3 !== 9)\n"
-"          return false;\n"
-"      }\n"
-"      return true;\n"
-"    },\n"
-"    _colorize\$1\$2\$color(callback, color, \$T) {\n"
-"      var t1, result;\n"
-"      \$T._eval\$1(\"0()\")._as(callback);\n"
-"      t1 = this._primaryColor != null;\n"
-"      if (t1 && color != null)\n"
-"        this._buffer._contents += color;\n"
-"      result = callback.call\$0();\n"
-"      if (t1 && color != null)\n"
-"        this._buffer._contents += \"\\x1b[0m\";\n"
-"      return result;\n"
-"    }\n"
-"  };\n"
-"  A.Highlighter_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return this.color;\n"
-"    },\n"
-"    \$signature: 46\n"
-"  };\n"
-"  A.Highlighter\$__closure.prototype = {\n"
-"    call\$1(line) {\n"
-"      var t1 = type\$._Line._as(line).highlights,\n"
-"        t2 = A._arrayInstanceType(t1);\n"
-"      return new A.WhereIterable(t1, t2._eval\$1(\"bool(1)\")._as(new A.Highlighter\$___closure()), t2._eval\$1(\"WhereIterable<1>\")).get\$length(0);\n"
-"    },\n"
-"    \$signature: 47\n"
-"  };\n"
-"  A.Highlighter\$___closure.prototype = {\n"
-"    call\$1(highlight) {\n"
-"      var t1 = type\$._Highlight._as(highlight).span;\n"
-"      return t1.get\$start().get\$line() !== t1.get\$end().get\$line();\n"
-"    },\n"
-"    \$signature: 13\n"
-"  };\n"
-"  A.Highlighter\$__closure0.prototype = {\n"
-"    call\$1(line) {\n"
-"      return type\$._Line._as(line).url;\n"
-"    },\n"
-"    \$signature: 49\n"
-"  };\n"
-"  A.Highlighter__collateLines_closure.prototype = {\n"
-"    call\$1(highlight) {\n"
-"      var t1 = type\$._Highlight._as(highlight).span.get\$sourceUrl();\n"
-"      return t1 == null ? new A.Object() : t1;\n"
-"    },\n"
-"    \$signature: 50\n"
-"  };\n"
-"  A.Highlighter__collateLines_closure0.prototype = {\n"
-"    call\$2(highlight1, highlight2) {\n"
-"      var t1 = type\$._Highlight;\n"
-"      return t1._as(highlight1).span.compareTo\$1(0, t1._as(highlight2).span);\n"
-"    },\n"
-"    \$signature: 51\n"
-"  };\n"
-"  A.Highlighter__collateLines_closure1.prototype = {\n"
-"    call\$1(entry) {\n"
-"      var url, highlightsForFile, lines, t1, t2, t3, t4, context, t5, linesBeforeSpan, lineNumber, _i, line, activeHighlights, flags, highlightIndex, oldHighlightLength, t6, t7;\n"
-"      type\$.MapEntry_of_Object_and_List__Highlight._as(entry);\n"
-"      url = entry.key;\n"
-"      highlightsForFile = entry.value;\n"
-"      lines = A._setArrayType([], type\$.JSArray__Line);\n"
-"      for (t1 = J.getInterceptor\$ax(highlightsForFile), t2 = t1.get\$iterator(highlightsForFile), t3 = type\$.JSArray__Highlight; t2.moveNext\$0();) {\n"
-"        t4 = t2.get\$current().span;\n"
-"        context = t4.get\$context();\n"
-"        t5 = A.findLineStart(context, t4.get\$text(), t4.get\$start().get\$column());\n"
-"        t5.toString;\n"
-"        linesBeforeSpan = B.JSString_methods.allMatches\$1(\"\\n\", B.JSString_methods.substring\$2(context, 0, t5)).get\$length(0);\n"
-"        lineNumber = t4.get\$start().get\$line() - linesBeforeSpan;\n"
-"        for (t4 = context.split(\"\\n\"), t5 = t4.length, _i = 0; _i < t5; ++_i) {\n"
-"          line = t4[_i];\n"
-"          if (lines.length === 0 || lineNumber > B.JSArray_methods.get\$last(lines).number)\n"
-"            B.JSArray_methods.add\$1(lines, new A._Line(line, lineNumber, url, A._setArrayType([], t3)));\n"
-"          ++lineNumber;\n"
-"        }\n"
-"      }\n"
-"      activeHighlights = A._setArrayType([], t3);\n"
-"      for (t2 = lines.length, t3 = type\$.bool_Function__Highlight, flags = activeHighlights.\$flags | 0, highlightIndex = 0, _i = 0; _i < lines.length; lines.length === t2 || (0, A.throwConcurrentModificationError)(lines), ++_i) {\n"
-"        line = lines[_i];\n"
-"        t4 = t3._as(new A.Highlighter__collateLines__closure(line));\n"
-"        flags & 1 && A.throwUnsupportedOperation(activeHighlights, 16);\n"
-"        B.JSArray_methods._removeWhere\$2(activeHighlights, t4, true);\n"
-"        oldHighlightLength = activeHighlights.length;\n"
-"        for (t4 = t1.skip\$1(highlightsForFile, highlightIndex), t5 = t4.\$ti, t4 = new A.ListIterator(t4, t4.get\$length(0), t5._eval\$1(\"ListIterator<ListIterable.E>\")), t6 = line.number, t5 = t5._eval\$1(\"ListIterable.E\"); t4.moveNext\$0();) {\n"
-"          t7 = t4.__internal\$_current;\n"
-"          if (t7 == null)\n"
-"            t7 = t5._as(t7);\n"
-"          if (t7.span.get\$start().get\$line() > t6)\n"
-"            break;\n"
-"          B.JSArray_methods.add\$1(activeHighlights, t7);\n"
-"        }\n"
-"        highlightIndex += activeHighlights.length - oldHighlightLength;\n"
-"        B.JSArray_methods.addAll\$1(line.highlights, activeHighlights);\n"
-"      }\n"
-"      return lines;\n"
-"    },\n"
-"    \$signature: 78\n"
-"  };\n"
-"  A.Highlighter__collateLines__closure.prototype = {\n"
-"    call\$1(highlight) {\n"
-"      return type\$._Highlight._as(highlight).span.get\$end().get\$line() < this.line.number;\n"
-"    },\n"
-"    \$signature: 13\n"
-"  };\n"
-"  A.Highlighter_highlight_closure.prototype = {\n"
-"    call\$1(highlight) {\n"
-"      type\$._Highlight._as(highlight);\n"
-"      return true;\n"
-"    },\n"
-"    \$signature: 13\n"
-"  };\n"
-"  A.Highlighter__writeFileStart_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._buffer._contents += B.JSString_methods.\$mul(\"\\u2500\", 2) + \">\";\n"
-"      return null;\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this._buffer,\n"
-"        t2 = this.startLine === this.line.number ? \"\\u250c\" : \"\\u2514\";\n"
-"      t1._contents += t2;\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this._buffer,\n"
-"        t2 = this.highlight == null ? \"\\u2500\" : \"\\u253c\";\n"
-"      t1._contents += t2;\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights_closure1.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._buffer._contents += \"\\u2500\";\n"
-"      return null;\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights_closure2.prototype = {\n"
-"    call\$0() {\n"
-"      var t2, t3, _this = this,\n"
-"        t1 = _this._box_0,\n"
-"        vertical = t1.openedOnThisLine ? \"\\u253c\" : \"\\u2502\";\n"
-"      if (_this.current != null)\n"
-"        _this.\$this._buffer._contents += vertical;\n"
-"      else {\n"
-"        t2 = _this.line;\n"
-"        t3 = t2.number;\n"
-"        if (_this.startLine === t3) {\n"
-"          t2 = _this.\$this;\n"
-"          t2._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights__closure(t1, t2), t1.openedOnThisLineColor, type\$.Null);\n"
-"          t1.openedOnThisLine = true;\n"
-"          if (t1.openedOnThisLineColor == null)\n"
-"            t1.openedOnThisLineColor = t2._primaryColor;\n"
-"        } else {\n"
-"          t2 = _this.endLine === t3 && _this.highlight.span.get\$end().get\$column() === t2.text.length;\n"
-"          t3 = _this.\$this;\n"
-"          if (t2)\n"
-"            t3._buffer._contents += \"\\u2514\";\n"
-"          else\n"
-"            t3._colorize\$1\$2\$color(new A.Highlighter__writeMultilineHighlights__closure0(t3, vertical), t1.openedOnThisLineColor, type\$.Null);\n"
-"        }\n"
-"      }\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights__closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this._buffer,\n"
-"        t2 = this._box_0.openedOnThisLine ? \"\\u252c\" : \"\\u250c\";\n"
-"      t1._contents += t2;\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.Highlighter__writeMultilineHighlights__closure0.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._buffer._contents += this.vertical;\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.Highlighter__writeHighlightedText_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var _this = this;\n"
-"      return _this.\$this._writeText\$1(B.JSString_methods.substring\$2(_this.text, _this.startColumn, _this.endColumn));\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Highlighter__writeIndicator_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var tabsBefore, tabsInside,\n"
-"        t1 = this.\$this,\n"
-"        t2 = t1._buffer,\n"
-"        t3 = t2._contents,\n"
-"        t4 = this.highlight.span,\n"
-"        startColumn = t4.get\$start().get\$column(),\n"
-"        endColumn = t4.get\$end().get\$column();\n"
-"      t4 = this.line.text;\n"
-"      tabsBefore = t1._countTabs\$1(B.JSString_methods.substring\$2(t4, 0, startColumn));\n"
-"      tabsInside = t1._countTabs\$1(B.JSString_methods.substring\$2(t4, startColumn, endColumn));\n"
-"      startColumn += tabsBefore * 3;\n"
-"      t4 = (t2._contents += B.JSString_methods.\$mul(\" \", startColumn)) + B.JSString_methods.\$mul(\"^\", Math.max(endColumn + (tabsBefore + tabsInside) * 3 - startColumn, 1));\n"
-"      t2._contents = t4;\n"
-"      return t4.length - t3.length;\n"
-"    },\n"
-"    \$signature: 25\n"
-"  };\n"
-"  A.Highlighter__writeIndicator_closure0.prototype = {\n"
-"    call\$0() {\n"
-"      return this.\$this._writeArrow\$2(this.line, this.highlight.span.get\$start().get\$column());\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.Highlighter__writeIndicator_closure1.prototype = {\n"
-"    call\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this.\$this,\n"
-"        t2 = t1._buffer,\n"
-"        t3 = t2._contents;\n"
-"      if (_this.coversWholeLine)\n"
-"        t2._contents = t3 + B.JSString_methods.\$mul(\"\\u2500\", 3);\n"
-"      else\n"
-"        t1._writeArrow\$3\$beginning(_this.line, Math.max(_this.highlight.span.get\$end().get\$column() - 1, 0), false);\n"
-"      return t2._contents.length - t3.length;\n"
-"    },\n"
-"    \$signature: 25\n"
-"  };\n"
-"  A.Highlighter__writeSidebar_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this.\$this,\n"
-"        t2 = t1._buffer,\n"
-"        t3 = this._box_0.text;\n"
-"      if (t3 == null)\n"
-"        t3 = \"\";\n"
-"      t1 = B.JSString_methods.padRight\$1(t3, t1._paddingBeforeSidebar);\n"
-"      t1 = t2._contents += t1;\n"
-"      t3 = this.end;\n"
-"      t2._contents = t1 + (t3 == null ? \"\\u2502\" : t3);\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A._Highlight.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.span;\n"
-"      t1 = \"primary \" + (\"\" + t1.get\$start().get\$line() + \":\" + t1.get\$start().get\$column() + \"-\" + t1.get\$end().get\$line() + \":\" + t1.get\$end().get\$column());\n"
-"      return t1.charCodeAt(0) == 0 ? t1 : t1;\n"
-"    }\n"
-"  };\n"
-"  A._Highlight_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1, t2, t3, t4,\n"
-"        newSpan = this.span;\n"
-"      if (!(type\$.SourceSpanWithContext._is(newSpan) && A.findLineStart(newSpan.get\$context(), newSpan.get\$text(), newSpan.get\$start().get\$column()) != null)) {\n"
-"        t1 = A.SourceLocation\$(newSpan.get\$start().get\$offset(), 0, 0, newSpan.get\$sourceUrl());\n"
-"        t2 = newSpan.get\$end().get\$offset();\n"
-"        t3 = newSpan.get\$sourceUrl();\n"
-"        t4 = A.countCodeUnits(newSpan.get\$text(), 10);\n"
-"        newSpan = A.SourceSpanWithContext\$(t1, A.SourceLocation\$(t2, A._Highlight__lastLineLength(newSpan.get\$text()), t4, t3), newSpan.get\$text(), newSpan.get\$text());\n"
-"      }\n"
-"      return A._Highlight__normalizeEndOfLine(A._Highlight__normalizeTrailingNewline(A._Highlight__normalizeNewlines(newSpan)));\n"
-"    },\n"
-"    \$signature: 54\n"
-"  };\n"
-"  A._Line.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"\" + this.number + ': \"' + this.text + '\" (' + B.JSArray_methods.join\$1(this.highlights, \", \") + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.SourceLocation.prototype = {\n"
-"    distance\$1(other) {\n"
-"      var t1 = this.sourceUrl;\n"
-"      if (!J.\$eq\$(t1, other.get\$sourceUrl()))\n"
-"        throw A.wrapException(A.ArgumentError\$('Source URLs \"' + A.S(t1) + '\" and \"' + A.S(other.get\$sourceUrl()) + \"\\\" don't match.\", null));\n"
-"      return Math.abs(this.offset - other.get\$offset());\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      var t1;\n"
-"      type\$.SourceLocation._as(other);\n"
-"      t1 = this.sourceUrl;\n"
-"      if (!J.\$eq\$(t1, other.get\$sourceUrl()))\n"
-"        throw A.wrapException(A.ArgumentError\$('Source URLs \"' + A.S(t1) + '\" and \"' + A.S(other.get\$sourceUrl()) + \"\\\" don't match.\", null));\n"
-"      return this.offset - other.get\$offset();\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return type\$.SourceLocation._is(other) && J.\$eq\$(this.sourceUrl, other.get\$sourceUrl()) && this.offset === other.get\$offset();\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var t1 = this.sourceUrl;\n"
-"      t1 = t1 == null ? null : t1.get\$hashCode(t1);\n"
-"      if (t1 == null)\n"
-"        t1 = 0;\n"
-"      return t1 + this.offset;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var _this = this,\n"
-"        t1 = A.getRuntimeTypeOfDartObject(_this).toString\$0(0),\n"
-"        source = _this.sourceUrl;\n"
-"      return \"<\" + t1 + \": \" + _this.offset + \" \" + (A.S(source == null ? \"unknown source\" : source) + \":\" + (_this.line + 1) + \":\" + (_this.column + 1)) + \">\";\n"
-"    },\n"
-"    \$isComparable: 1,\n"
-"    get\$sourceUrl() {\n"
-"      return this.sourceUrl;\n"
-"    },\n"
-"    get\$offset() {\n"
-"      return this.offset;\n"
-"    },\n"
-"    get\$line() {\n"
-"      return this.line;\n"
-"    },\n"
-"    get\$column() {\n"
-"      return this.column;\n"
-"    }\n"
-"  };\n"
-"  A.SourceLocationMixin.prototype = {\n"
-"    distance\$1(other) {\n"
-"      if (!J.\$eq\$(this.file.url, other.get\$sourceUrl()))\n"
-"        throw A.wrapException(A.ArgumentError\$('Source URLs \"' + A.S(this.get\$sourceUrl()) + '\" and \"' + A.S(other.get\$sourceUrl()) + \"\\\" don't match.\", null));\n"
-"      return Math.abs(this.offset - other.get\$offset());\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      type\$.SourceLocation._as(other);\n"
-"      if (!J.\$eq\$(this.file.url, other.get\$sourceUrl()))\n"
-"        throw A.wrapException(A.ArgumentError\$('Source URLs \"' + A.S(this.get\$sourceUrl()) + '\" and \"' + A.S(other.get\$sourceUrl()) + \"\\\" don't match.\", null));\n"
-"      return this.offset - other.get\$offset();\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return type\$.SourceLocation._is(other) && J.\$eq\$(this.file.url, other.get\$sourceUrl()) && this.offset === other.get\$offset();\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      var t1 = this.file.url;\n"
-"      t1 = t1 == null ? null : t1.get\$hashCode(t1);\n"
-"      if (t1 == null)\n"
-"        t1 = 0;\n"
-"      return t1 + this.offset;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t1 = A.getRuntimeTypeOfDartObject(this).toString\$0(0),\n"
-"        t2 = this.offset,\n"
-"        t3 = this.file,\n"
-"        source = t3.url;\n"
-"      return \"<\" + t1 + \": \" + t2 + \" \" + (A.S(source == null ? \"unknown source\" : source) + \":\" + (t3.getLine\$1(t2) + 1) + \":\" + (t3.getColumn\$1(t2) + 1)) + \">\";\n"
-"    },\n"
-"    \$isComparable: 1,\n"
-"    \$isSourceLocation: 1\n"
-"  };\n"
-"  A.SourceSpanBase.prototype = {\n"
-"    SourceSpanBase\$3(start, end, text) {\n"
-"      var t3,\n"
-"        t1 = this.end,\n"
-"        t2 = this.start;\n"
-"      if (!J.\$eq\$(t1.get\$sourceUrl(), t2.get\$sourceUrl()))\n"
-"        throw A.wrapException(A.ArgumentError\$('Source URLs \"' + A.S(t2.get\$sourceUrl()) + '\" and  \"' + A.S(t1.get\$sourceUrl()) + \"\\\" don't match.\", null));\n"
-"      else if (t1.get\$offset() < t2.get\$offset())\n"
-"        throw A.wrapException(A.ArgumentError\$(\"End \" + t1.toString\$0(0) + \" must come after start \" + t2.toString\$0(0) + \".\", null));\n"
-"      else {\n"
-"        t3 = this.text;\n"
-"        if (t3.length !== t2.distance\$1(t1))\n"
-"          throw A.wrapException(A.ArgumentError\$('Text \"' + t3 + '\" must be ' + t2.distance\$1(t1) + \" characters long.\", null));\n"
-"      }\n"
-"    },\n"
-"    get\$start() {\n"
-"      return this.start;\n"
-"    },\n"
-"    get\$end() {\n"
-"      return this.end;\n"
-"    },\n"
-"    get\$text() {\n"
-"      return this.text;\n"
-"    }\n"
-"  };\n"
-"  A.SourceSpanException.prototype = {\n"
-"    get\$message() {\n"
-"      return this._span_exception\$_message;\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var t3, t4, highlight,\n"
-"        t1 = this._span,\n"
-"        t2 = \"line \" + (t1.get\$start().get\$line() + 1) + \", column \" + (t1.get\$start().get\$column() + 1);\n"
-"      if (t1.get\$sourceUrl() != null) {\n"
-"        t3 = t1.get\$sourceUrl();\n"
-"        t4 = \$.\$get\$context();\n"
-"        t3.toString;\n"
-"        t3 = t2 + (\" of \" + t4.prettyUri\$1(t3));\n"
-"        t2 = t3;\n"
-"      }\n"
-"      t2 += \": \" + this._span_exception\$_message;\n"
-"      highlight = t1.highlight\$1\$color(null);\n"
-"      t1 = highlight.length !== 0 ? t2 + \"\\n\" + highlight : t2;\n"
-"      return \"Error on \" + (t1.charCodeAt(0) == 0 ? t1 : t1);\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.SourceSpanFormatException.prototype = {\n"
-"    get\$offset() {\n"
-"      var t1 = this._span;\n"
-"      t1 = A.FileLocation\$_(t1.file, t1._file\$_start);\n"
-"      return t1.offset;\n"
-"    },\n"
-"    \$isFormatException: 1,\n"
-"    get\$source() {\n"
-"      return this.source;\n"
-"    }\n"
-"  };\n"
-"  A.SourceSpanMixin.prototype = {\n"
-"    get\$sourceUrl() {\n"
-"      return this.get\$start().get\$sourceUrl();\n"
-"    },\n"
-"    get\$length(_) {\n"
-"      return this.get\$end().get\$offset() - this.get\$start().get\$offset();\n"
-"    },\n"
-"    compareTo\$1(_, other) {\n"
-"      var result;\n"
-"      type\$.SourceSpan._as(other);\n"
-"      result = this.get\$start().compareTo\$1(0, other.get\$start());\n"
-"      return result === 0 ? this.get\$end().compareTo\$1(0, other.get\$end()) : result;\n"
-"    },\n"
-"    highlight\$1\$color(color) {\n"
-"      var _this = this;\n"
-"      if (!type\$.SourceSpanWithContext._is(_this) && _this.get\$length(_this) === 0)\n"
-"        return \"\";\n"
-"      return A.Highlighter\$(_this, color).highlight\$0();\n"
-"    },\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.SourceSpanMixin && this.get\$start().\$eq(0, other.get\$start()) && this.get\$end().\$eq(0, other.get\$end());\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Object_hash(this.get\$start(), this.get\$end(), B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue, B.C_SentinelValue);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      var _this = this;\n"
-"      return \"<\" + A.getRuntimeTypeOfDartObject(_this).toString\$0(0) + \": from \" + _this.get\$start().toString\$0(0) + \" to \" + _this.get\$end().toString\$0(0) + ' \"' + _this.get\$text() + '\">';\n"
-"    },\n"
-"    \$isComparable: 1,\n"
-"    \$isSourceSpan: 1\n"
-"  };\n"
-"  A.SourceSpanWithContext.prototype = {\n"
-"    get\$context() {\n"
-"      return this._context;\n"
-"    }\n"
-"  };\n"
-"  A.SseClient.prototype = {\n"
-"    SseClient\$2\$debugKey(serverUrl, debugKey) {\n"
-"      var t2, _this = this,\n"
-"        t1 = serverUrl + \"?sseClientId=\" + _this._clientId;\n"
-"      _this.__SseClient__serverUrl_A = t1;\n"
-"      t1 = A._asJSObject(new init.G.EventSource(t1, {withCredentials: true}));\n"
-"      _this.__SseClient__eventSource_A = t1;\n"
-"      new A._EventStream(t1, \"open\", false, type\$._EventStream_JSObject).get\$first(0).whenComplete\$1(new A.SseClient_closure(_this));\n"
-"      _this.__SseClient__eventSource_A.addEventListener(\"message\", A._functionToJS1(_this.get\$_onIncomingMessage()));\n"
-"      _this.__SseClient__eventSource_A.addEventListener(\"control\", A._functionToJS1(_this.get\$_onIncomingControlMessage()));\n"
-"      t1 = type\$.nullable_void_Function_JSObject;\n"
-"      t2 = type\$.JSObject;\n"
-"      A._EventStreamSubscription\$(_this.__SseClient__eventSource_A, \"open\", t1._as(new A.SseClient_closure0(_this)), false, t2);\n"
-"      A._EventStreamSubscription\$(_this.__SseClient__eventSource_A, \"error\", t1._as(new A.SseClient_closure1(_this)), false, t2);\n"
-"    },\n"
-"    close\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this.__SseClient__eventSource_A;\n"
-"      t1 === \$ && A.throwLateFieldNI(\"_eventSource\");\n"
-"      t1.close();\n"
-"      if ((_this._onConnected.future._state & 30) === 0) {\n"
-"        t1 = _this._outgoingController;\n"
-"        new A._ControllerStream(t1, A._instanceType(t1)._eval\$1(\"_ControllerStream<1>\")).listen\$2\$cancelOnError(null, true).asFuture\$1\$1(null, type\$.void);\n"
-"      }\n"
-"      _this._incomingController.close\$0();\n"
-"      _this._outgoingController.close\$0();\n"
-"    },\n"
-"    _closeWithError\$1(error) {\n"
-"      var _0_0, error0, stackTrace, t2,\n"
-"        t1 = this._incomingController;\n"
-"      if (t1._state >= 4)\n"
-"        A.throwExpression(t1._badEventState\$0());\n"
-"      _0_0 = A._interceptUserError(error, null);\n"
-"      error0 = _0_0.error;\n"
-"      stackTrace = _0_0.stackTrace;\n"
-"      t2 = t1._state;\n"
-"      if ((t2 & 1) !== 0)\n"
-"        t1._sendError\$2(error0, stackTrace);\n"
-"      else if ((t2 & 3) === 0)\n"
-"        t1._ensurePendingEvents\$0().add\$1(0, new A._DelayedError(error0, stackTrace));\n"
-"      this.close\$0();\n"
-"      t1 = this._onConnected;\n"
-"      if ((t1.future._state & 30) === 0)\n"
-"        t1.completeError\$1(error);\n"
-"    },\n"
-"    _onIncomingControlMessage\$1(message) {\n"
-"      var data = A._asJSObject(message).data;\n"
-"      if (J.\$eq\$(A.dartify(data), \"close\"))\n"
-"        this.close\$0();\n"
-"      else\n"
-"        throw A.wrapException(A.UnsupportedError\$(\"[\" + this._clientId + '] Illegal Control Message \"' + A.S(data) + '\"'));\n"
-"    },\n"
-"    _onIncomingMessage\$1(message) {\n"
-"      this._incomingController.add\$1(0, A._asString(B.C_JsonCodec.decode\$2\$reviver(A._asString(A._asJSObject(message).data), null)));\n"
-"    },\n"
-"    _onOutgoingDone\$0() {\n"
-"      this.close\$0();\n"
-"    },\n"
-"    _onOutgoingMessage\$1(message) {\n"
-"      return this._onOutgoingMessage\$body\$SseClient(A._asStringQ(message));\n"
-"    },\n"
-"    _onOutgoingMessage\$body\$SseClient(message) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, t1;\n"
-"      var \$async\$_onOutgoingMessage\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = {};\n"
-"              t1.encodedMessage = null;\n"
-"              \$async\$goto = 2;\n"
-"              return A._asyncAwait(\$.\$get\$_requestPool().withResource\$1\$1(new A.SseClient__onOutgoingMessage_closure(t1, \$async\$self, message), type\$.Null), \$async\$_onOutgoingMessage\$1);\n"
-"            case 2:\n"
-"              // returning from await.\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_onOutgoingMessage\$1, \$async\$completer);\n"
-"    }\n"
-"  };\n"
-"  A.SseClient_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t2,\n"
-"        t1 = this.\$this;\n"
-"      t1._onConnected.complete\$0();\n"
-"      t2 = t1._outgoingController;\n"
-"      new A._ControllerStream(t2, A._instanceType(t2)._eval\$1(\"_ControllerStream<1>\")).listen\$2\$onDone(t1.get\$_onOutgoingMessage(), t1.get\$_onOutgoingDone());\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.SseClient_closure0.prototype = {\n"
-"    call\$1(__wc0_formal) {\n"
-"      var t1 = this.\$this._errorTimer;\n"
-"      if (t1 != null)\n"
-"        t1.cancel\$0();\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.SseClient_closure1.prototype = {\n"
-"    call\$1(error) {\n"
-"      var t1 = this.\$this,\n"
-"        t2 = t1._errorTimer;\n"
-"      t2 = t2 == null ? null : t2.get\$isActive();\n"
-"      if (t2 !== true)\n"
-"        t1._errorTimer = A.Timer_Timer(B.Duration_5000000, new A.SseClient__closure(t1, error));\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.SseClient__closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.\$this._closeWithError\$1(this.error);\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.SseClient__onOutgoingMessage_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Null),\n"
-"        \$async\$handler = 1, \$async\$errorStack = [], \$async\$self = this, e, e0, url, error, augmentedError, exception, t1, t2, \$async\$exception;\n"
-"      var \$async\$call\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              try {\n"
-"                \$async\$self._box_0.encodedMessage = B.C_JsonCodec.encode\$2\$toEncodable(\$async\$self.message, null);\n"
-"              } catch (exception) {\n"
-"                t1 = A.unwrapException(exception);\n"
-"                if (t1 instanceof A.JsonUnsupportedObjectError) {\n"
-"                  e = t1;\n"
-"                  t1 = \$async\$self.\$this;\n"
-"                  t1._logger.log\$4(B.Level_WARNING_900, \"[\" + t1._clientId + \"] Unable to encode outgoing message: \" + A.S(e), null, null);\n"
-"                } else if (t1 instanceof A.ArgumentError) {\n"
-"                  e0 = t1;\n"
-"                  t1 = \$async\$self.\$this;\n"
-"                  t1._logger.log\$4(B.Level_WARNING_900, \"[\" + t1._clientId + \"] Invalid argument: \" + A.S(e0), null, null);\n"
-"                } else\n"
-"                  throw exception;\n"
-"              }\n"
-"              \$async\$handler = 3;\n"
-"              t1 = \$async\$self.\$this;\n"
-"              t2 = t1.__SseClient__serverUrl_A;\n"
-"              t2 === \$ && A.throwLateFieldNI(\"_serverUrl\");\n"
-"              url = t2 + \"&messageId=\" + ++t1._lastMessageId;\n"
-"              t1 = \$async\$self._box_0.encodedMessage;\n"
-"              if (t1 == null)\n"
-"                t1 = null;\n"
-"              t1 = {method: \"POST\", body: t1, credentials: \"include\"};\n"
-"              \$async\$goto = 6;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A._asJSObject(init.G.window).fetch(url, t1)), type\$.JSObject), \$async\$call\$0);\n"
-"            case 6:\n"
-"              // returning from await.\n"
-"              \$async\$handler = 1;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // catch\n"
-"              \$async\$handler = 2;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              error = A.unwrapException(\$async\$exception);\n"
-"              t1 = \$async\$self.\$this;\n"
-"              augmentedError = \"[\" + t1._clientId + \"] SSE client failed to send \" + A.S(\$async\$self.message) + \":\\n \" + A.S(error);\n"
-"              t1._logger.log\$4(B.Level_SEVERE_1000, augmentedError, null, null);\n"
-"              t1._closeWithError\$1(augmentedError);\n"
-"              // goto after finally\n"
-"              \$async\$goto = 5;\n"
-"              break;\n"
-"            case 2:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 5:\n"
-"              // after finally\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"            case 1:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$0, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 57\n"
-"  };\n"
-"  A.StreamChannelMixin.prototype = {};\n"
-"  A.StringScannerException.prototype = {\n"
-"    get\$source() {\n"
-"      return A._asString(this.source);\n"
-"    }\n"
-"  };\n"
-"  A.StringScanner.prototype = {\n"
-"    get\$lastMatch() {\n"
-"      var _this = this;\n"
-"      if (_this._string_scanner\$_position !== _this._lastMatchPosition)\n"
-"        _this._lastMatch = null;\n"
-"      return _this._lastMatch;\n"
-"    },\n"
-"    scan\$1(pattern) {\n"
-"      var success, _this = this,\n"
-"        t1 = _this._lastMatch = J.matchAsPrefix\$2\$s(pattern, _this.string, _this._string_scanner\$_position);\n"
-"      _this._lastMatchPosition = _this._string_scanner\$_position;\n"
-"      success = t1 != null;\n"
-"      if (success)\n"
-"        _this._lastMatchPosition = _this._string_scanner\$_position = t1.get\$end();\n"
-"      return success;\n"
-"    },\n"
-"    expect\$2\$name(pattern, \$name) {\n"
-"      var t1;\n"
-"      if (this.scan\$1(pattern))\n"
-"        return;\n"
-"      if (\$name == null)\n"
-"        if (pattern instanceof A.JSSyntaxRegExp)\n"
-"          \$name = \"/\" + pattern.pattern + \"/\";\n"
-"        else {\n"
-"          t1 = J.toString\$0\$(pattern);\n"
-"          t1 = A.stringReplaceAllUnchecked(t1, \"\\\\\", \"\\\\\\\\\");\n"
-"          \$name = '\"' + A.stringReplaceAllUnchecked(t1, '\"', '\\\\\"') + '\"';\n"
-"        }\n"
-"      this._fail\$1(\$name);\n"
-"    },\n"
-"    expect\$1(pattern) {\n"
-"      return this.expect\$2\$name(pattern, null);\n"
-"    },\n"
-"    expectDone\$0() {\n"
-"      if (this._string_scanner\$_position === this.string.length)\n"
-"        return;\n"
-"      this._fail\$1(\"no more input\");\n"
-"    },\n"
-"    error\$3\$length\$position(message, \$length, position) {\n"
-"      var t2, t3, end, sourceFile, end0,\n"
-"        t1 = this.string;\n"
-"      if (position < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"position must be greater than or equal to 0.\"));\n"
-"      else if (position > t1.length)\n"
-"        A.throwExpression(A.RangeError\$(\"position must be less than or equal to the string length.\"));\n"
-"      t2 = position + \$length > t1.length;\n"
-"      if (t2)\n"
-"        A.throwExpression(A.RangeError\$(\"position plus length must not go beyond the end of the string.\"));\n"
-"      t2 = this.sourceUrl;\n"
-"      t3 = A._setArrayType([0], type\$.JSArray_int);\n"
-"      end = t1.length;\n"
-"      sourceFile = new A.SourceFile(t2, t3, new Uint32Array(end));\n"
-"      sourceFile.SourceFile\$_fromList\$2\$url(new A.CodeUnits(t1), t2);\n"
-"      end0 = position + \$length;\n"
-"      if (end0 > end)\n"
-"        A.throwExpression(A.RangeError\$(\"End \" + end0 + string\$.x20must_ + sourceFile.get\$length(0) + \".\"));\n"
-"      else if (position < 0)\n"
-"        A.throwExpression(A.RangeError\$(\"Start may not be negative, was \" + position + \".\"));\n"
-"      throw A.wrapException(new A.StringScannerException(t1, message, new A._FileSpan(sourceFile, position, end0)));\n"
-"    },\n"
-"    _fail\$1(\$name) {\n"
-"      this.error\$3\$length\$position(\"expected \" + \$name + \".\", 0, this._string_scanner\$_position);\n"
-"    }\n"
-"  };\n"
-"  A.EventStreamProvider.prototype = {};\n"
-"  A._EventStream.prototype = {\n"
-"    listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, onError) {\n"
-"      var t1 = this.\$ti;\n"
-"      t1._eval\$1(\"~(1)?\")._as(onData);\n"
-"      type\$.nullable_void_Function._as(onDone);\n"
-"      return A._EventStreamSubscription\$(this._target, this._eventType, onData, false, t1._precomputed1);\n"
-"    },\n"
-"    listen\$3\$onDone\$onError(onData, onDone, onError) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, null, onDone, onError);\n"
-"    },\n"
-"    listen\$3\$cancelOnError\$onDone(onData, cancelOnError, onDone) {\n"
-"      return this.listen\$4\$cancelOnError\$onDone\$onError(onData, cancelOnError, onDone, null);\n"
-"    }\n"
-"  };\n"
-"  A._EventStreamSubscription.prototype = {\n"
-"    cancel\$0() {\n"
-"      var _this = this,\n"
-"        emptyFuture = A.Future_Future\$value(null, type\$.void);\n"
-"      if (_this._target == null)\n"
-"        return emptyFuture;\n"
-"      _this._unlisten\$0();\n"
-"      _this._onData = _this._target = null;\n"
-"      return emptyFuture;\n"
-"    },\n"
-"    onData\$1(handleData) {\n"
-"      var t1, _this = this;\n"
-"      _this.\$ti._eval\$1(\"~(1)?\")._as(handleData);\n"
-"      if (_this._target == null)\n"
-"        throw A.wrapException(A.StateError\$(\"Subscription has been canceled.\"));\n"
-"      _this._unlisten\$0();\n"
-"      t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type\$.JSObject);\n"
-"      t1 = t1 == null ? null : A._functionToJS1(t1);\n"
-"      _this._onData = t1;\n"
-"      _this._tryResume\$0();\n"
-"    },\n"
-"    onError\$1(handleError) {\n"
-"    },\n"
-"    pause\$1(resumeSignal) {\n"
-"      if (this._target == null)\n"
-"        return;\n"
-"      ++this._pauseCount;\n"
-"      this._unlisten\$0();\n"
-"    },\n"
-"    pause\$0() {\n"
-"      return this.pause\$1(null);\n"
-"    },\n"
-"    resume\$0() {\n"
-"      var _this = this;\n"
-"      if (_this._target == null || _this._pauseCount <= 0)\n"
-"        return;\n"
-"      --_this._pauseCount;\n"
-"      _this._tryResume\$0();\n"
-"    },\n"
-"    _tryResume\$0() {\n"
-"      var _this = this,\n"
-"        t1 = _this._onData;\n"
-"      if (t1 != null && _this._pauseCount <= 0)\n"
-"        _this._target.addEventListener(_this._eventType, t1, false);\n"
-"    },\n"
-"    _unlisten\$0() {\n"
-"      var t1 = this._onData;\n"
-"      if (t1 != null)\n"
-"        this._target.removeEventListener(this._eventType, t1, false);\n"
-"    },\n"
-"    \$isStreamSubscription: 1\n"
-"  };\n"
-"  A._EventStreamSubscription_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return this.onData.call\$1(A._asJSObject(e));\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A._EventStreamSubscription_onData_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return this.handleData.call\$1(A._asJSObject(e));\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.BrowserWebSocket.prototype = {\n"
-"    _closed\$2(code, reason) {\n"
-"      var t1 = this._events;\n"
-"      if ((t1._state & 4) !== 0)\n"
-"        return;\n"
-"      t1.add\$1(0, new A.CloseReceived(code, reason));\n"
-"      t1.close\$0();\n"
-"    },\n"
-"    \$isWebSocket: 1\n"
-"  };\n"
-"  A.BrowserWebSocket_connect_closure.prototype = {\n"
-"    call\$1(_) {\n"
-"      A._asJSObject(_);\n"
-"      this.webSocketConnected.complete\$1(this.browserSocket);\n"
-"    },\n"
-"    \$signature: 14\n"
-"  };\n"
-"  A.BrowserWebSocket_connect_closure0.prototype = {\n"
-"    call\$1(e) {\n"
-"      var t1;\n"
-"      A._asJSObject(e);\n"
-"      t1 = this.webSocketConnected;\n"
-"      if ((t1.future._state & 30) === 0)\n"
-"        t1.completeError\$1(new A.WebSocketException(\"Failed to connect WebSocket\"));\n"
-"      else\n"
-"        this.browserSocket._closed\$2(1006, \"error\");\n"
-"    },\n"
-"    \$signature: 14\n"
-"  };\n"
-"  A.BrowserWebSocket_connect_closure1.prototype = {\n"
-"    call\$1(e) {\n"
-"      var t2, data,\n"
-"        t1 = this.browserSocket._events;\n"
-"      if ((t1._state & 4) !== 0)\n"
-"        return;\n"
-"      t2 = e.data;\n"
-"      t2.toString;\n"
-"      data = A._Cell\$named(\"data\");\n"
-"      if (typeof t2 === \"string\")\n"
-"        data.__late_helper\$_value = new A.TextDataReceived(A._asString(t2));\n"
-"      else if (typeof t2 === \"object\" && A.JSAnyUtilityExtension_instanceOfString(A._asJSObject(t2), \"ArrayBuffer\"))\n"
-"        data.__late_helper\$_value = new A.BinaryDataReceived(A.NativeUint8List_NativeUint8List\$view(type\$.NativeArrayBuffer._as(t2), 0, null));\n"
-"      else\n"
-"        throw A.wrapException(A.StateError\$(\"unexpected message type: \" + J.get\$runtimeType\$(t2).toString\$0(0)));\n"
-"      t1.add\$1(0, data._readLocal\$0());\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.BrowserWebSocket_connect_closure2.prototype = {\n"
-"    call\$1(\$event) {\n"
-"      var t1;\n"
-"      A._asJSObject(\$event);\n"
-"      t1 = this.webSocketConnected;\n"
-"      if ((t1.future._state & 30) === 0)\n"
-"        t1.complete\$1(this.browserSocket);\n"
-"      this.browserSocket._closed\$2(A._asInt(\$event.code), A._asString(\$event.reason));\n"
-"    },\n"
-"    \$signature: 14\n"
-"  };\n"
-"  A.WebSocketEvent.prototype = {};\n"
-"  A.TextDataReceived.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.TextDataReceived && other.text === this.text;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return B.JSString_methods.get\$hashCode(this.text);\n"
-"    }\n"
-"  };\n"
-"  A.BinaryDataReceived.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      var t1, t2, t3, t4, i;\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      if (other instanceof A.BinaryDataReceived && other.data.length === this.data.length) {\n"
-"        for (t1 = this.data, t2 = t1.length, t3 = other.data, t4 = t3.length, i = 0; i < t2; ++i) {\n"
-"          if (!(i < t4))\n"
-"            return A.ioore(t3, i);\n"
-"          if (t3[i] !== t1[i])\n"
-"            return false;\n"
-"        }\n"
-"        return true;\n"
-"      }\n"
-"      return false;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Primitives_objectHashCode(this.data);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"BinaryDataReceived(\" + A.S(this.data) + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.CloseReceived.prototype = {\n"
-"    \$eq(_, other) {\n"
-"      if (other == null)\n"
-"        return false;\n"
-"      return other instanceof A.CloseReceived && other.code === this.code && other.reason === this.reason;\n"
-"    },\n"
-"    get\$hashCode(_) {\n"
-"      return A.Primitives_objectHashCode([this.code, this.reason]);\n"
-"    },\n"
-"    toString\$0(_) {\n"
-"      return \"CloseReceived(\" + this.code + \", \" + this.reason + \")\";\n"
-"    }\n"
-"  };\n"
-"  A.WebSocketException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.message;\n"
-"      if (t1.length === 0)\n"
-"        return \"WebSocketException\";\n"
-"      else\n"
-"        return \"WebSocketException: \" + t1;\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.WebSocketConnectionClosed.prototype = {\n"
-"    toString\$0(_) {\n"
-"      var t1 = this.message;\n"
-"      if (t1.length === 0)\n"
-"        return \"WebSocketConnectionClosed\";\n"
-"      else\n"
-"        return \"WebSocketConnectionClosed: \" + t1;\n"
-"    }\n"
-"  };\n"
-"  A.main_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return this.\$call\$body\$main_closure();\n"
-"    },\n"
-"    \$call\$body\$main_closure() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        storedInstanceId, t2, t3, uri, fixedPath, fixedUri, client, _0_0, manager, t4, t5, debugEventController, t6, _box_0, t1, \$async\$temp1;\n"
-"      var \$async\$call\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              _box_0 = {};\n"
-"              t1 = init.G;\n"
-"              if (A._asStringQ(t1.\$dartAppInstanceId) == null) {\n"
-"                storedInstanceId = A._isPageReload() ? A._asStringQ(A._asJSObject(A._asJSObject(t1.window).sessionStorage).getItem(\"dartAppInstanceId\")) : null;\n"
-"                if (storedInstanceId != null)\n"
-"                  t1.\$dartAppInstanceId = storedInstanceId;\n"
-"                else {\n"
-"                  t1.\$dartAppInstanceId = B.C_Uuid.v4\$0();\n"
-"                  t2 = A._asJSObject(A._asJSObject(t1.window).sessionStorage);\n"
-"                  t3 = A._asStringQ(t1.\$dartAppInstanceId);\n"
-"                  t3.toString;\n"
-"                  t2.setItem(\"dartAppInstanceId\", t3);\n"
-"                }\n"
-"              }\n"
-"              t2 = A._asString(t1.\$dwdsDevHandlerPath);\n"
-"              t3 = A._asString(A._asJSObject(A._asJSObject(t1.window).location).protocol);\n"
-"              uri = A.Uri_parse(t2);\n"
-"              if (t3 === \"https:\" && uri.get\$host() !== \"localhost\")\n"
-"                if (uri.get\$scheme() === \"http\")\n"
-"                  uri = uri.replace\$1\$scheme(\"https\");\n"
-"                else if (uri.get\$scheme() === \"ws\")\n"
-"                  uri = uri.replace\$1\$scheme(\"wss\");\n"
-"              fixedPath = uri.toString\$0(0);\n"
-"              fixedUri = A.Uri_parse(fixedPath);\n"
-"              \$async\$goto = fixedUri.isScheme\$1(\"ws\") || fixedUri.isScheme\$1(\"wss\") ? 2 : 4;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$temp1 = A;\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(A.PersistentWebSocket_connect(fixedUri, A.client__initializeConnection\$closure()), \$async\$call\$0);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              \$async\$result = new \$async\$temp1.WebSocketClient(\$async\$result);\n"
-"              // goto join\n"
-"              \$async\$goto = 3;\n"
-"              break;\n"
-"            case 4:\n"
-"              // else\n"
-"              \$async\$result = new A.SseSocketClient(A.SseClient\$(fixedPath, \"InjectedClient\"));\n"
-"            case 3:\n"
-"              // join\n"
-"              client = \$async\$result;\n"
-"              _0_0 = A._asString(t1.\$dartModuleStrategy);\n"
-"              \$async\$goto = \"require-js\" === _0_0 ? 7 : 8;\n"
-"              break;\n"
-"            case 7:\n"
-"              // then\n"
-"              \$async\$goto = 9;\n"
-"              return A._asyncAwait(A.RequireRestarter_create(), \$async\$call\$0);\n"
-"            case 9:\n"
-"              // returning from await.\n"
-"              t2 = \$async\$result;\n"
-"              // goto break \$label0\$0\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 8:\n"
-"              // join\n"
-"              if (\"ddc-library-bundle\" === _0_0) {\n"
-"                t2 = new A.DdcLibraryBundleRestarter();\n"
-"                // goto break \$label0\$0\n"
-"                \$async\$goto = 6;\n"
-"                break;\n"
-"              }\n"
-"              if (\"ddc\" === _0_0 || \"legacy\" === _0_0) {\n"
-"                t2 = new A.DdcRestarter();\n"
-"                // goto break \$label0\$0\n"
-"                \$async\$goto = 6;\n"
-"                break;\n"
-"              }\n"
-"              t2 = A.throwExpression(A.StateError\$(\"Unknown module strategy: \" + A.S(A.getProperty(A.staticInteropGlobalContext(), \"\$dartModuleStrategy\", type\$.String))));\n"
-"            case 6:\n"
-"              // break \$label0\$0\n"
-"              manager = new A.ReloadingManager(client, t2);\n"
-"              t1.\$dartHotReloadStartDwds = A._functionToJS0(new A.main__closure(manager));\n"
-"              t1.\$dartHotReloadEndDwds = A._functionToJS0(new A.main__closure0(manager));\n"
-"              t1.\$dartHotRestartBeginDwds = A._functionToJS0(new A.main__closure1(manager));\n"
-"              t1.\$dartHotRestartEndDwds = A._functionToJS0(manager.get\$hotRestartEnd());\n"
-"              _box_0.readyToRunMainCompleter = null;\n"
-"              t1.\$dartHotRestartDwds = A._functionToJS2(new A.main__closure2(_box_0, manager));\n"
-"              t1.\$dartRequestHotRestartDwds = A._functionToJS1(new A.main__closure3(client));\n"
-"              t1.\$dartReadyToRunMain = A._functionToJS0(new A.main__closure4(_box_0));\n"
-"              t2 = \$.Zone__current;\n"
-"              t3 = Math.max(100, 1);\n"
-"              t4 = A.StreamController_StreamController(type\$.DebugEvent);\n"
-"              t5 = A.StreamController_StreamController(type\$.List_DebugEvent);\n"
-"              debugEventController = new A.BatchedStreamController(t3, 1000, t4, t5, new A._AsyncCompleter(new A._Future(t2, type\$._Future_bool), type\$._AsyncCompleter_bool), type\$.BatchedStreamController_DebugEvent);\n"
-"              t2 = A.List_List\$filled(A.QueueList__computeInitialCapacity(null), null, false, type\$.nullable_Result_DebugEvent);\n"
-"              t3 = A.ListQueue\$(type\$._EventRequest_dynamic);\n"
-"              t6 = type\$.StreamQueue_DebugEvent;\n"
-"              debugEventController.__BatchedStreamController__inputQueue_A = t6._as(new A.StreamQueue(new A._ControllerStream(t4, A._instanceType(t4)._eval\$1(\"_ControllerStream<1>\")), new A.QueueList(t2, 0, 0, type\$.QueueList_Result_DebugEvent), t3, t6));\n"
-"              A.safeUnawaited(debugEventController._batchAndSendEvents\$0());\n"
-"              new A._ControllerStream(t5, A._instanceType(t5)._eval\$1(\"_ControllerStream<1>\")).listen\$1(new A.main__closure5(client));\n"
-"              t1.\$emitDebugEvent = A._functionToJS2(new A.main__closure6(debugEventController));\n"
-"              t1.\$emitRegisterEvent = A._functionToJS1(new A.main__closure7(client));\n"
-"              t1.\$launchDevTools = A._functionToJS0(new A.main__closure8(client));\n"
-"              _box_0.mainRun = false;\n"
-"              client.get\$stream().listen\$2\$onError(new A.main__closure9(_box_0, manager, client), new A.main__closure10());\n"
-"              if (A._asBool(t1.\$dwdsEnableDevToolsLaunch))\n"
-"                A._EventStreamSubscription\$(A._asJSObject(t1.window), \"keydown\", type\$.nullable_void_Function_JSObject._as(new A.main__closure11()), false, type\$.JSObject);\n"
-"              A.initializeConnection(client.get\$sink());\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$0, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 5\n"
-"  };\n"
-"  A.main__closure.prototype = {\n"
-"    call\$0() {\n"
-"      var path = A._asStringQ(init.G.\$reloadedSourcesPath);\n"
-"      path.toString;\n"
-"      return A.FutureOfJSAnyToJSPromise_get_toJS(this.manager._restarter.hotReloadStart\$1(path), type\$.JSArray_nullable_Object);\n"
-"    },\n"
-"    \$signature: 4\n"
-"  };\n"
-"  A.main__closure0.prototype = {\n"
-"    call\$0() {\n"
-"      return A.FutureOfVoidToJSPromise_get_toJS(this.manager.hotReloadEnd\$0());\n"
-"    },\n"
-"    \$signature: 4\n"
-"  };\n"
-"  A.main__closure1.prototype = {\n"
-"    call\$0() {\n"
-"      var path = A._asStringQ(init.G.\$reloadedSourcesPath);\n"
-"      path.toString;\n"
-"      return A.FutureOfJSAnyToJSPromise_get_toJS(this.manager.hotRestartBegin\$1(path), type\$.JSArray_nullable_Object);\n"
-"    },\n"
-"    \$signature: 4\n"
-"  };\n"
-"  A.main__closure2.prototype = {\n"
-"    call\$2(runId, pauseIsolatesOnStart) {\n"
-"      var t1, t2, t3, t4;\n"
-"      A._asString(runId);\n"
-"      A._asBoolQ(pauseIsolatesOnStart);\n"
-"      t1 = this.manager;\n"
-"      t2 = init.G;\n"
-"      t3 = type\$.nullable_JSArray_nullable_Object;\n"
-"      if (pauseIsolatesOnStart === true) {\n"
-"        t4 = new A._Future(\$.Zone__current, type\$._Future_dynamic);\n"
-"        this._box_0.readyToRunMainCompleter = new A._AsyncCompleter(t4, type\$._AsyncCompleter_dynamic);\n"
-"        return A.FutureOfJSAnyToJSPromise_get_toJS(t1.hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(t4, A._asStringQ(t2.\$reloadedSourcesPath), runId), t3);\n"
-"      } else\n"
-"        return A.FutureOfJSAnyToJSPromise_get_toJS(t1.hotRestart\$2\$reloadedSourcesPath\$runId(A._asStringQ(t2.\$reloadedSourcesPath), runId), t3);\n"
-"    },\n"
-"    call\$1(runId) {\n"
-"      return this.call\$2(runId, null);\n"
-"    },\n"
-"    \$signature: 60\n"
-"  };\n"
-"  A.main__closure3.prototype = {\n"
-"    call\$1(runId) {\n"
-"      var t1;\n"
-"      A._asString(runId);\n"
-"      t1 = type\$.dynamic;\n"
-"      A._trySendEvent(this.client.get\$sink(), B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"HotRestartRequest\", A.LinkedHashMap_LinkedHashMap\$_literal([\"id\", runId], type\$.String, t1)], type\$.JSArray_Object), null), t1);\n"
-"    },\n"
-"    \$signature: 26\n"
-"  };\n"
-"  A.main__closure4.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = this._box_0,\n"
-"        t2 = t1.readyToRunMainCompleter;\n"
-"      if (t2 == null)\n"
-"        return;\n"
-"      if ((t2.future._state & 30) !== 0)\n"
-"        return;\n"
-"      t2.complete\$0();\n"
-"      t1.readyToRunMainCompleter = null;\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.main__closure5.prototype = {\n"
-"    call\$1(events) {\n"
-"      type\$.List_DebugEvent._as(events);\n"
-"      if (A._asBool(init.G.\$dartEmitDebugEvents))\n"
-"        A._trySendEvent(this.client.get\$sink(), B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"BatchedDebugEvents\", new A.BatchedDebugEvents(events).toJson\$0()], type\$.JSArray_Object), null), type\$.dynamic);\n"
-"    },\n"
-"    \$signature: 62\n"
-"  };\n"
-"  A.main__closure6.prototype = {\n"
-"    call\$2(kind, eventData) {\n"
-"      var t1;\n"
-"      A._asString(kind);\n"
-"      A._asString(eventData);\n"
-"      if (A._asBool(init.G.\$dartEmitDebugEvents)) {\n"
-"        t1 = this.debugEventController._inputController;\n"
-"        A._trySendEvent(new A._StreamSinkWrapper(t1, A._instanceType(t1)._eval\$1(\"_StreamSinkWrapper<1>\")), new A.DebugEvent(kind, eventData, Date.now()), type\$.DebugEvent);\n"
-"      }\n"
-"    },\n"
-"    \$signature: 63\n"
-"  };\n"
-"  A.main__closure7.prototype = {\n"
-"    call\$1(eventData) {\n"
-"      A._asString(eventData);\n"
-"      A._trySendEvent(this.client.get\$sink(), B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"RegisterEvent\", new A.RegisterEvent(eventData, Date.now()).toJson\$0()], type\$.JSArray_Object), null), type\$.dynamic);\n"
-"    },\n"
-"    \$signature: 26\n"
-"  };\n"
-"  A.main__closure8.prototype = {\n"
-"    call\$0() {\n"
-"      var t1, t2, t3;\n"
-"      if (!A._isChromium()) {\n"
-"        A._asJSObject(init.G.window).alert(\"Dart DevTools is only supported on Chromium based browsers.\");\n"
-"        return;\n"
-"      }\n"
-"      t1 = this.client.get\$sink();\n"
-"      t2 = init.G;\n"
-"      t3 = A._asString(t2.\$dartAppId);\n"
-"      t2 = A._asStringQ(t2.\$dartAppInstanceId);\n"
-"      t2.toString;\n"
-"      A._trySendEvent(t1, B.C_JsonCodec.encode\$2\$toEncodable(new A.DevToolsRequest(t3, t2), null), type\$.dynamic);\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.main__closure9.prototype = {\n"
-"    call\$1(serialized) {\n"
-"      return this.\$call\$body\$main__closure(A._asString(serialized));\n"
-"    },\n"
-"    \$call\$body\$main__closure(serialized) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, t1, t2, t3, path, \$alert, \$event;\n"
-"      var \$async\$call\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$event = A._deserializeEvent(B.C_JsonCodec.decode\$2\$reviver(serialized, null));\n"
-"              \$async\$goto = \$event instanceof A.BuildResult ? 2 : 4;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              t1 = init.G;\n"
-"              \$async\$goto = A._asString(t1.\$dartReloadConfiguration) === \"ReloadConfiguration.liveReload\" ? 5 : 7;\n"
-"              break;\n"
-"            case 5:\n"
-"              // then\n"
-"              A._asJSObject(A._asJSObject(t1.window).location).reload();\n"
-"              // goto join\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 7:\n"
-"              // else\n"
-"              \$async\$goto = A._asString(t1.\$dartReloadConfiguration) === \"ReloadConfiguration.hotRestart\" ? 8 : 10;\n"
-"              break;\n"
-"            case 8:\n"
-"              // then\n"
-"              t2 = \$async\$self.manager;\n"
-"              \$async\$goto = A._asString(t1.\$dartModuleStrategy) === \"ddc-library-bundle\" ? 11 : 13;\n"
-"              break;\n"
-"            case 11:\n"
-"              // then\n"
-"              t3 = A._asStringQ(t1.\$reloadedSourcesPath);\n"
-"              t3.toString;\n"
-"              \$async\$goto = 14;\n"
-"              return A._asyncAwait(t2.hotRestartBegin\$1(t3), \$async\$call\$1);\n"
-"            case 14:\n"
-"              // returning from await.\n"
-"              type\$.TwoPhaseRestarter._as(t2._restarter);\n"
-"              A._asJSObject(t1.dartDevEmbedder).hotRestartEnd();\n"
-"              // goto join\n"
-"              \$async\$goto = 12;\n"
-"              break;\n"
-"            case 13:\n"
-"              // else\n"
-"              \$async\$goto = 15;\n"
-"              return A._asyncAwait(t2.hotRestart\$1\$reloadedSourcesPath(A._asStringQ(t1.\$reloadedSourcesPath)), \$async\$call\$1);\n"
-"            case 15:\n"
-"              // returning from await.\n"
-"            case 12:\n"
-"              // join\n"
-"              // goto join\n"
-"              \$async\$goto = 9;\n"
-"              break;\n"
-"            case 10:\n"
-"              // else\n"
-"              \$async\$goto = A._asString(t1.\$dartReloadConfiguration) === \"ReloadConfiguration.hotReload\" ? 16 : 17;\n"
-"              break;\n"
-"            case 16:\n"
-"              // then\n"
-"              t2 = \$async\$self.manager;\n"
-"              path = A._asStringQ(t1.\$reloadedSourcesPath);\n"
-"              path.toString;\n"
-"              \$async\$goto = 18;\n"
-"              return A._asyncAwait(t2._restarter.hotReloadStart\$1(path), \$async\$call\$1);\n"
-"            case 18:\n"
-"              // returning from await.\n"
-"              \$async\$goto = 19;\n"
-"              return A._asyncAwait(t2.hotReloadEnd\$0(), \$async\$call\$1);\n"
-"            case 19:\n"
-"              // returning from await.\n"
-"            case 17:\n"
-"              // join\n"
-"            case 9:\n"
-"              // join\n"
-"            case 6:\n"
-"              // join\n"
-"              // goto join\n"
-"              \$async\$goto = 3;\n"
-"              break;\n"
-"            case 4:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.DevToolsResponse ? 20 : 22;\n"
-"              break;\n"
-"            case 20:\n"
-"              // then\n"
-"              if (!\$event.success) {\n"
-"                \$alert = \"DevTools failed to open with:\\n\" + A.S(\$event.error);\n"
-"                t1 = \$event.promptExtension && A._asBool(A._asJSObject(init.G.window).confirm(\$alert));\n"
-"                t2 = init.G;\n"
-"                if (t1)\n"
-"                  A._asJSObjectQ(A._asJSObject(t2.window).open(\"https://dart.dev/to/web-debug-extension\", \"_blank\"));\n"
-"                else\n"
-"                  A._asJSObject(t2.window).alert(\$alert);\n"
-"              }\n"
-"              // goto join\n"
-"              \$async\$goto = 21;\n"
-"              break;\n"
-"            case 22:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.RunRequest ? 23 : 25;\n"
-"              break;\n"
-"            case 23:\n"
-"              // then\n"
-"              t1 = \$async\$self._box_0;\n"
-"              if (!t1.mainRun) {\n"
-"                t1.mainRun = true;\n"
-"                A.runMain();\n"
-"              }\n"
-"              // goto join\n"
-"              \$async\$goto = 24;\n"
-"              break;\n"
-"            case 25:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.ErrorResponse ? 26 : 28;\n"
-"              break;\n"
-"            case 26:\n"
-"              // then\n"
-"              A._asJSObject(init.G.window).reportError(\"Error from backend:\\n\\nError: \" + \$event.error + \"\\n\\nStack Trace:\\n\" + \$event.stackTrace);\n"
-"              // goto join\n"
-"              \$async\$goto = 27;\n"
-"              break;\n"
-"            case 28:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.HotReloadRequest ? 29 : 31;\n"
-"              break;\n"
-"            case 29:\n"
-"              // then\n"
-"              \$async\$goto = 32;\n"
-"              return A._asyncAwait(A.handleWebSocketHotReloadRequest(\$event, \$async\$self.manager, \$async\$self.client.get\$sink()), \$async\$call\$1);\n"
-"            case 32:\n"
-"              // returning from await.\n"
-"              // goto join\n"
-"              \$async\$goto = 30;\n"
-"              break;\n"
-"            case 31:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.HotRestartRequest ? 33 : 35;\n"
-"              break;\n"
-"            case 33:\n"
-"              // then\n"
-"              \$async\$goto = 36;\n"
-"              return A._asyncAwait(A.handleWebSocketHotRestartRequest(\$event, \$async\$self.manager, \$async\$self.client.get\$sink()), \$async\$call\$1);\n"
-"            case 36:\n"
-"              // returning from await.\n"
-"              // goto join\n"
-"              \$async\$goto = 34;\n"
-"              break;\n"
-"            case 35:\n"
-"              // else\n"
-"              \$async\$goto = \$event instanceof A.ServiceExtensionRequest ? 37 : 38;\n"
-"              break;\n"
-"            case 37:\n"
-"              // then\n"
-"              \$async\$goto = 39;\n"
-"              return A._asyncAwait(A.handleServiceExtensionRequest(\$event, \$async\$self.client.get\$sink(), \$async\$self.manager), \$async\$call\$1);\n"
-"            case 39:\n"
-"              // returning from await.\n"
-"            case 38:\n"
-"              // join\n"
-"            case 34:\n"
-"              // join\n"
-"            case 30:\n"
-"              // join\n"
-"            case 27:\n"
-"              // join\n"
-"            case 24:\n"
-"              // join\n"
-"            case 21:\n"
-"              // join\n"
-"            case 3:\n"
-"              // join\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$call\$1, \$async\$completer);\n"
-"    },\n"
-"    \$signature: 23\n"
-"  };\n"
-"  A.main__closure10.prototype = {\n"
-"    call\$1(error) {\n"
-"    },\n"
-"    \$signature: 6\n"
-"  };\n"
-"  A.main__closure11.prototype = {\n"
-"    call\$1(e) {\n"
-"      var t1 = A.JSAnyUtilityExtension_instanceOfString(e, \"KeyboardEvent\");\n"
-"      if (t1)\n"
-"        if (B.JSArray_methods.contains\$1(B.List_fAJ, A._asString(e.key)) && A._asBool(e.altKey) && !A._asBool(e.ctrlKey) && !A._asBool(e.metaKey)) {\n"
-"          e.preventDefault();\n"
-"          type\$.JavaScriptFunction._as(init.G.\$launchDevTools).call();\n"
-"        }\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.main_closure0.prototype = {\n"
-"    call\$2(error, stackTrace) {\n"
-"      A._asObject(error);\n"
-"      type\$.StackTrace._as(stackTrace);\n"
-"      A.print(\"Unhandled error detected in the injected client.js script.\\n\\nYou can disable this script in webdev by passing --no-injected-client if it\\nis preventing your app from loading, but note that this will also prevent\\nall debugging and hot reload/restart functionality from working.\\n\\nThe original error is below, please file an issue at\\nhttps://github.com/dart-lang/webdev/issues/new and attach this output:\\n\\n\" + A.S(error) + \"\\n\" + stackTrace.toString\$0(0) + \"\\n\");\n"
-"    },\n"
-"    \$signature: 7\n"
-"  };\n"
-"  A._handleAuthRequest_closure.prototype = {\n"
-"    call\$1(isAuthenticated) {\n"
-"      return A._dispatchEvent(\"dart-auth-response\", \"\" + A._asBool(isAuthenticated));\n"
-"    },\n"
-"    \$signature: 64\n"
-"  };\n"
-"  A._sendHotReloadResponse_closure.prototype = {\n"
-"    call\$3(id, success, errorMessage) {\n"
-"      return new A.HotReloadResponse(id, success, errorMessage);\n"
-"    },\n"
-"    \$signature: 65\n"
-"  };\n"
-"  A._sendHotRestartResponse_closure.prototype = {\n"
-"    call\$3(id, success, errorMessage) {\n"
-"      return new A.HotRestartResponse(id, success, errorMessage);\n"
-"    },\n"
-"    \$signature: 66\n"
-"  };\n"
-"  A.DdcLibraryBundleRestarter.prototype = {\n"
-"    _runMainWhenReady\$2(readyToRunMain, runMain) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void);\n"
-"      var \$async\$_runMainWhenReady\$2 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = readyToRunMain != null ? 2 : 3;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(readyToRunMain, \$async\$_runMainWhenReady\$2);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"            case 3:\n"
-"              // join\n"
-"              runMain.call();\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_runMainWhenReady\$2, \$async\$completer);\n"
-"    },\n"
-"    _getSrcModuleLibraries\$1(reloadedSourcesPath) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.List_Map_dynamic_dynamic),\n"
-"        \$async\$returnValue, t1, xhr, \$async\$temp1, \$async\$temp2, \$async\$temp3;\n"
-"      var \$async\$_getSrcModuleLibraries\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = new A._Future(\$.Zone__current, type\$._Future_String);\n"
-"              xhr = A._asJSObject(new init.G.XMLHttpRequest());\n"
-"              xhr.onreadystatechange = A._functionToJS0(new A.DdcLibraryBundleRestarter__getSrcModuleLibraries_closure(xhr, new A._AsyncCompleter(t1, type\$._AsyncCompleter_String), reloadedSourcesPath));\n"
-"              xhr.open(\"GET\", reloadedSourcesPath, true);\n"
-"              xhr.send();\n"
-"              \$async\$temp1 = J;\n"
-"              \$async\$temp2 = type\$.List_dynamic;\n"
-"              \$async\$temp3 = B.C_JsonCodec;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(t1, \$async\$_getSrcModuleLibraries\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$temp1.cast\$1\$0\$ax(\$async\$temp2._as(\$async\$temp3.decode\$1(\$async\$result)), type\$.Map_dynamic_dynamic);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_getSrcModuleLibraries\$1, \$async\$completer);\n"
-"    },\n"
-"    restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(readyToRunMain, reloadedSourcesPath, runId) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Record_2_bool_and_JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, mainHandler, srcModuleLibraries, t1;\n"
-"      var \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(A._Debugger_maybeInvokeFlutterDisassemble(A._asJSObject(A._asJSObject(t1.dartDevEmbedder).debugger)), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              mainHandler = A._functionToJS1(new A.DdcLibraryBundleRestarter_restart_closure(\$async\$self, readyToRunMain));\n"
-"              A._asJSObject(A._asJSObject(t1.dartDevEmbedder).config).capturedMainHandler = mainHandler;\n"
-"              reloadedSourcesPath.toString;\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(\$async\$self._getSrcModuleLibraries\$1(reloadedSourcesPath), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"              srcModuleLibraries = \$async\$result;\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A._asJSObject(t1.dartDevEmbedder).hotRestart()), type\$.nullable_JSArray_nullable_Object), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = new A._Record_2(true, type\$.JSArray_nullable_Object._as(A.jsify(srcModuleLibraries)));\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId, \$async\$completer);\n"
-"    },\n"
-"    hotRestartBegin\$1(reloadedSourcesPath) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, t2, jsFilesToRequest, t1, \$async\$temp1, \$async\$temp2;\n"
-"      var \$async\$hotRestartBegin\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(A._Debugger_maybeInvokeFlutterDisassemble(A._asJSObject(A._asJSObject(t1.dartDevEmbedder).debugger)), \$async\$hotRestartBegin\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              t2 = type\$.JSArray_nullable_Object;\n"
-"              \$async\$temp1 = t2;\n"
-"              \$async\$temp2 = A;\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(\$async\$self._getSrcModuleLibraries\$1(reloadedSourcesPath), \$async\$hotRestartBegin\$1);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"              jsFilesToRequest = \$async\$temp1._as(\$async\$temp2.jsify(\$async\$result));\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A._asJSObject(t1.dartDevEmbedder).hotRestartBegin(jsFilesToRequest)), t2), \$async\$hotRestartBegin\$1);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$result;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotRestartBegin\$1, \$async\$completer);\n"
-"    },\n"
-"    hotReloadStart\$1(reloadedSourcesPath) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, t3, t4, t5, t6, srcModuleLibraryCast, src, libraries, t7, t8, t9, t1, t2, filesToLoad, librariesToReload, srcModuleLibraries;\n"
-"      var \$async\$hotReloadStart\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              t2 = type\$.JSArray_nullable_Object;\n"
-"              filesToLoad = t2._as(new t1.Array());\n"
-"              librariesToReload = t2._as(new t1.Array());\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(\$async\$self._getSrcModuleLibraries\$1(reloadedSourcesPath), \$async\$hotReloadStart\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              srcModuleLibraries = \$async\$result;\n"
-"              for (t3 = J.get\$iterator\$ax(srcModuleLibraries), t4 = type\$.String, t5 = type\$.Object, t6 = type\$.List_dynamic; t3.moveNext\$0();) {\n"
-"                srcModuleLibraryCast = t3.get\$current().cast\$2\$0(0, t4, t5);\n"
-"                src = A._asString(srcModuleLibraryCast.\$index(0, \"src\"));\n"
-"                libraries = J.cast\$1\$0\$ax(t6._as(srcModuleLibraryCast.\$index(0, \"libraries\")), t4);\n"
-"                filesToLoad.push(src);\n"
-"                for (t7 = A._instanceType(libraries), t8 = new A.ListIterator(libraries, libraries.get\$length(libraries), t7._eval\$1(\"ListIterator<ListBase.E>\")), t7 = t7._eval\$1(\"ListBase.E\"); t8.moveNext\$0();) {\n"
-"                  t9 = t8.__internal\$_current;\n"
-"                  if (t9 == null)\n"
-"                    t9 = t7._as(t9);\n"
-"                  librariesToReload.push(t9);\n"
-"                }\n"
-"              }\n"
-"              A._asJSObject(A._asJSObject(t1.dartDevEmbedder).config).capturedHotReloadEndHandler = A._functionToJS1(new A.DdcLibraryBundleRestarter_hotReloadStart_closure(\$async\$self));\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A._asJSObject(t1.dartDevEmbedder).hotReload(filesToLoad, librariesToReload)), type\$.nullable_Object), \$async\$hotReloadStart\$1);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = t2._as(A.jsify(srcModuleLibraries));\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotReloadStart\$1, \$async\$completer);\n"
-"    },\n"
-"    hotReloadEnd\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this;\n"
-"      var \$async\$hotReloadEnd\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$self._capturedHotReloadEndCallback.call();\n"
-"              A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).config).capturedHotReloadEndHandler = null;\n"
-"              \$async\$self._capturedHotReloadEndCallback = null;\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotReloadEnd\$0, \$async\$completer);\n"
-"    },\n"
-"    handleServiceExtension\$2(method, args) {\n"
-"      return this.handleServiceExtension\$body\$DdcLibraryBundleRestarter(method, type\$.Map_String_dynamic._as(args));\n"
-"    },\n"
-"    handleServiceExtension\$body\$DdcLibraryBundleRestarter(method, args) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.nullable_Map_String_dynamic),\n"
-"        \$async\$returnValue, t1, t2, params, \$async\$temp1, \$async\$temp2;\n"
-"      var \$async\$handleServiceExtension\$2 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = method === \"ext.flutter.reassemble\" ? 3 : 5;\n"
-"              break;\n"
-"            case 3:\n"
-"              // then\n"
-"              \$async\$goto = 6;\n"
-"              return A._asyncAwait(A._Debugger_maybeInvokeFlutterReassemble(A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).debugger)), \$async\$handleServiceExtension\$2);\n"
-"            case 6:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = A.LinkedHashMap_LinkedHashMap\$_literal([\"status\", \"reassemble invoked\"], type\$.String, type\$.dynamic);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"              // goto join\n"
-"              \$async\$goto = 4;\n"
-"              break;\n"
-"            case 5:\n"
-"              // else\n"
-"              \$async\$goto = method === \"getExtensionRpcs\" ? 7 : 9;\n"
-"              break;\n"
-"            case 7:\n"
-"              // then\n"
-"              t1 = type\$.JSArray_nullable_Object._as(A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).debugger).extensionNames);\n"
-"              t1 = type\$.List_String._is(t1) ? t1 : new A.CastList(t1, A._arrayInstanceType(t1)._eval\$1(\"CastList<1,String>\"));\n"
-"              t2 = type\$.String;\n"
-"              \$async\$returnValue = A.LinkedHashMap_LinkedHashMap\$_literal([\"rpcs\", J.cast\$1\$0\$ax(t1, t2)], t2, type\$.dynamic);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"              // goto join\n"
-"              \$async\$goto = 8;\n"
-"              break;\n"
-"            case 9:\n"
-"              // else\n"
-"              params = args.get\$isNotEmpty(args) ? B.C_JsonCodec.encode\$2\$toEncodable(args, null) : \"{}\";\n"
-"              \$async\$temp1 = type\$.Map_String_dynamic;\n"
-"              \$async\$temp2 = B.C_JsonCodec;\n"
-"              \$async\$goto = 10;\n"
-"              return A._asyncAwait(A.promiseToFuture(A._asJSObject(A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).debugger).invokeExtension(method, params)), type\$.String), \$async\$handleServiceExtension\$2);\n"
-"            case 10:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$temp1._as(\$async\$temp2.decode\$2\$reviver(\$async\$result, null));\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 8:\n"
-"              // join\n"
-"            case 4:\n"
-"              // join\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$handleServiceExtension\$2, \$async\$completer);\n"
-"    },\n"
-"    \$isTwoPhaseRestarter: 1,\n"
-"    \$isRestarter: 1\n"
-"  };\n"
-"  A.DdcLibraryBundleRestarter__getSrcModuleLibraries_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t2, t3,\n"
-"        t1 = this.xhr;\n"
-"      if (A._asInt(t1.readyState) === 4) {\n"
-"        t2 = A._asInt(t1.status) === 200 || A._asInt(t1.status) === 304;\n"
-"        t3 = this.completer;\n"
-"        if (t2)\n"
-"          t3.complete\$1(A._asString(t1.responseText));\n"
-"        else\n"
-"          t3.completeError\$1(\"Failed to fetch reloaded sources at \" + this.reloadedSourcesPath + \".\");\n"
-"      }\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.DdcLibraryBundleRestarter_restart_closure.prototype = {\n"
-"    call\$1(runMain) {\n"
-"      type\$.JavaScriptFunction._as(runMain);\n"
-"      A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).config).capturedMainHandler = null;\n"
-"      A.safeUnawaited(this.\$this._runMainWhenReady\$2(this.readyToRunMain, runMain));\n"
-"    },\n"
-"    \$signature: 27\n"
-"  };\n"
-"  A.DdcLibraryBundleRestarter_hotReloadStart_closure.prototype = {\n"
-"    call\$1(hotReloadEndCallback) {\n"
-"      this.\$this._capturedHotReloadEndCallback = type\$.JavaScriptFunction._as(hotReloadEndCallback);\n"
-"    },\n"
-"    \$signature: 27\n"
-"  };\n"
-"  A.DdcRestarter.prototype = {\n"
-"    restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(readyToRunMain, reloadedSourcesPath, runId) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Record_2_bool_and_nullable_JSArray_nullable_Object),\n"
-"        \$async\$returnValue, t1, t2, t3, \$async\$temp1;\n"
-"      var \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              t2 = A._asJSObject(t1.dart_library);\n"
-"              t3 = readyToRunMain == null ? null : A.FutureOfVoidToJSPromise_get_toJS(readyToRunMain);\n"
-"              t2.reload(type\$.JavaScriptObject._as({runId: runId, readyToRunMain: t3}));\n"
-"              t3 = new A._Future(\$.Zone__current, type\$._Future_bool);\n"
-"              \$async\$temp1 = A;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(t3.then\$1\$1(new A.DdcRestarter_restart_closure(A._EventStreamSubscription\$(A._asJSObject(t1.window), \"message\", type\$.nullable_void_Function_JSObject._as(new A.DdcRestarter_restart_closure0(new A._AsyncCompleter(t3, type\$._AsyncCompleter_bool))), false, type\$.JSObject)), type\$.bool), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = new \$async\$temp1._Record_2(\$async\$result, null);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId, \$async\$completer);\n"
-"    },\n"
-"    hotReloadEnd\$0() {\n"
-"      return A.throwExpression(A.UnimplementedError\$(string\$.Hot_reD));\n"
-"    },\n"
-"    hotReloadStart\$1(reloadedSourcesPath) {\n"
-"      return A.throwExpression(A.UnimplementedError\$(string\$.Hot_reD));\n"
-"    },\n"
-"    \$isRestarter: 1\n"
-"  };\n"
-"  A.DdcRestarter_restart_closure0.prototype = {\n"
-"    call\$1(\$event) {\n"
-"      var t1 = \$event.data,\n"
-"        message = t1 == null ? null : A.dartify(t1);\n"
-"      if (type\$.Map_dynamic_dynamic._is(message) && J.\$eq\$(message.\$index(0, \"type\"), \"DDC_STATE_CHANGE\") && J.\$eq\$(message.\$index(0, \"state\"), \"restart_end\"))\n"
-"        this.reloadCompleter.complete\$1(true);\n"
-"    },\n"
-"    \$signature: 2\n"
-"  };\n"
-"  A.DdcRestarter_restart_closure.prototype = {\n"
-"    call\$1(value) {\n"
-"      A._asBool(value);\n"
-"      this.sub.cancel\$0();\n"
-"      return value;\n"
-"    },\n"
-"    \$signature: 68\n"
-"  };\n"
-"  A.ReloadingManager.prototype = {\n"
-"    hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(readyToRunMain, reloadedSourcesPath, runId) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.nullable_JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, result;\n"
-"      var \$async\$hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$self._beforeRestart\$0();\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(\$async\$self._restarter.restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(readyToRunMain, reloadedSourcesPath, runId), \$async\$hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              result = \$async\$result;\n"
-"              \$async\$self._afterRestart\$1(result._0);\n"
-"              \$async\$returnValue = result._1;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId, \$async\$completer);\n"
-"    },\n"
-"    hotRestart\$1\$reloadedSourcesPath(reloadedSourcesPath) {\n"
-"      return this.hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(null, reloadedSourcesPath, null);\n"
-"    },\n"
-"    hotRestart\$2\$reloadedSourcesPath\$runId(reloadedSourcesPath, runId) {\n"
-"      return this.hotRestart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(null, reloadedSourcesPath, runId);\n"
-"    },\n"
-"    hotRestartBegin\$1(reloadedSourcesPath) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, requestedSources;\n"
-"      var \$async\$hotRestartBegin\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(type\$.TwoPhaseRestarter._as(\$async\$self._restarter).hotRestartBegin\$1(reloadedSourcesPath), \$async\$hotRestartBegin\$1);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              requestedSources = \$async\$result;\n"
-"              \$async\$self._beforeRestart\$0();\n"
-"              \$async\$self._afterRestart\$1(true);\n"
-"              \$async\$returnValue = requestedSources;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotRestartBegin\$1, \$async\$completer);\n"
-"    },\n"
-"    hotRestartEnd\$0() {\n"
-"      type\$.TwoPhaseRestarter._as(this._restarter);\n"
-"      A._asJSObject(init.G.dartDevEmbedder).hotRestartEnd();\n"
-"    },\n"
-"    hotReloadEnd\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this;\n"
-"      var \$async\$hotReloadEnd\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = 2;\n"
-"              return A._asyncAwait(\$async\$self._restarter.hotReloadEnd\$0(), \$async\$hotReloadEnd\$0);\n"
-"            case 2:\n"
-"              // returning from await.\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$hotReloadEnd\$0, \$async\$completer);\n"
-"    },\n"
-"    handleServiceExtension\$2(method, args) {\n"
-"      return this.handleServiceExtension\$body\$ReloadingManager(method, type\$.Map_String_dynamic._as(args));\n"
-"    },\n"
-"    handleServiceExtension\$body\$ReloadingManager(method, args) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.nullable_Map_String_dynamic),\n"
-"        \$async\$returnValue, \$async\$self = this, restarter;\n"
-"      var \$async\$handleServiceExtension\$2 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              restarter = \$async\$self._restarter;\n"
-"              \$async\$goto = restarter instanceof A.DdcLibraryBundleRestarter ? 3 : 4;\n"
-"              break;\n"
-"            case 3:\n"
-"              // then\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(restarter.handleServiceExtension\$2(method, args), \$async\$handleServiceExtension\$2);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$result;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 4:\n"
-"              // join\n"
-"              \$async\$returnValue = null;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$handleServiceExtension\$2, \$async\$completer);\n"
-"    },\n"
-"    _afterRestart\$1(succeeded) {\n"
-"      var t1;\n"
-"      if (!succeeded)\n"
-"        return;\n"
-"      t1 = this._client.get\$sink();\n"
-"      t1._async\$_target.add\$1(0, t1.\$ti._precomputed1._as(B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"IsolateStart\", A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic)], type\$.JSArray_Object), null)));\n"
-"    },\n"
-"    _beforeRestart\$0() {\n"
-"      var t1 = this._client.get\$sink();\n"
-"      t1._async\$_target.add\$1(0, t1.\$ti._precomputed1._as(B.C_JsonCodec.encode\$2\$toEncodable(A._setArrayType([\"IsolateExit\", A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.dynamic)], type\$.JSArray_Object), null)));\n"
-"    }\n"
-"  };\n"
-"  A.HotReloadFailedException.prototype = {\n"
-"    toString\$0(_) {\n"
-"      return \"HotReloadFailedException: '\" + this._s + \"'\";\n"
-"    },\n"
-"    \$isException: 1\n"
-"  };\n"
-"  A.RequireRestarter.prototype = {\n"
-"    restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId(readyToRunMain, reloadedSourcesPath, runId) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Record_2_bool_and_nullable_JSArray_nullable_Object),\n"
-"        \$async\$returnValue, \$async\$self = this, newDigests, modulesToLoad, t3, t4, t5, t6, line, toZone, t7, result, t1, t2;\n"
-"      var \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              t2 = type\$.JavaScriptObject;\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(A.SdkDeveloperExtension_maybeInvokeFlutterDisassemble(t2._as(t2._as(t1.\$loadModuleConfig(\"dart_sdk\")).developer)), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(\$async\$self._getDigests\$0(), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"              newDigests = \$async\$result;\n"
-"              modulesToLoad = A._setArrayType([], type\$.JSArray_String);\n"
-"              for (t3 = newDigests.get\$keys(), t3 = t3.get\$iterator(t3), t4 = \$.RequireRestarter____lastKnownDigests.__late_helper\$_name; t3.moveNext\$0();) {\n"
-"                t5 = t3.get\$current();\n"
-"                t6 = \$.RequireRestarter____lastKnownDigests.__late_helper\$_value;\n"
-"                if (t6 === \$.RequireRestarter____lastKnownDigests)\n"
-"                  A.throwExpression(A.LateError\$fieldNI(t4));\n"
-"                if (!t6.containsKey\$1(t5)) {\n"
-"                  line = \"Error during script reloading, refreshing the page. \\nUnable to find an existing digest for module: \" + t5 + \".\";\n"
-"                  toZone = \$._printToZone;\n"
-"                  if (toZone == null)\n"
-"                    A.printString(line);\n"
-"                  else\n"
-"                    toZone.call\$1(line);\n"
-"                  A._asJSObject(A._asJSObject(t1.window).location).reload();\n"
-"                } else {\n"
-"                  t6 = \$.RequireRestarter____lastKnownDigests.__late_helper\$_value;\n"
-"                  if (t6 === \$.RequireRestarter____lastKnownDigests)\n"
-"                    A.throwExpression(A.LateError\$fieldNI(t4));\n"
-"                  if (t6.\$index(0, t5) != newDigests.\$index(0, t5)) {\n"
-"                    t6 = \$.RequireRestarter____lastKnownDigests.__late_helper\$_value;\n"
-"                    if (t6 === \$.RequireRestarter____lastKnownDigests)\n"
-"                      A.throwExpression(A.LateError\$fieldNI(t4));\n"
-"                    t7 = newDigests.\$index(0, t5);\n"
-"                    t7.toString;\n"
-"                    t6.\$indexSet(0, t5, t7);\n"
-"                    B.JSArray_methods.add\$1(modulesToLoad, t5);\n"
-"                  }\n"
-"                }\n"
-"              }\n"
-"              \$async\$goto = modulesToLoad.length !== 0 ? 5 : 7;\n"
-"              break;\n"
-"            case 5:\n"
-"              // then\n"
-"              \$async\$self._updateGraph\$0();\n"
-"              \$async\$goto = 8;\n"
-"              return A._asyncAwait(\$async\$self._reload\$1(modulesToLoad), \$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId);\n"
-"            case 8:\n"
-"              // returning from await.\n"
-"              result = \$async\$result;\n"
-"              // goto join\n"
-"              \$async\$goto = 6;\n"
-"              break;\n"
-"            case 7:\n"
-"              // else\n"
-"              result = true;\n"
-"            case 6:\n"
-"              // join\n"
-"              t2._as(t2._as(t1.\$loadModuleConfig(\"dart_sdk\")).dart).hotRestart();\n"
-"              A.safeUnawaited(\$async\$self._require_restarter\$_runMainWhenReady\$1(readyToRunMain));\n"
-"              \$async\$returnValue = new A._Record_2(result, null);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$restart\$3\$readyToRunMain\$reloadedSourcesPath\$runId, \$async\$completer);\n"
-"    },\n"
-"    hotReloadEnd\$0() {\n"
-"      return A.throwExpression(A.UnimplementedError\$(string\$.Hot_reA));\n"
-"    },\n"
-"    hotReloadStart\$1(reloadedSourcesPath) {\n"
-"      return A.throwExpression(A.UnimplementedError\$(string\$.Hot_reA));\n"
-"    },\n"
-"    _require_restarter\$_runMainWhenReady\$1(readyToRunMain) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void);\n"
-"      var \$async\$_require_restarter\$_runMainWhenReady\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = readyToRunMain != null ? 2 : 3;\n"
-"              break;\n"
-"            case 2:\n"
-"              // then\n"
-"              \$async\$goto = 4;\n"
-"              return A._asyncAwait(readyToRunMain, \$async\$_require_restarter\$_runMainWhenReady\$1);\n"
-"            case 4:\n"
-"              // returning from await.\n"
-"            case 3:\n"
-"              // join\n"
-"              A.runMain();\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_require_restarter\$_runMainWhenReady\$1, \$async\$completer);\n"
-"    },\n"
-"    _getDigests\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.Map_String_String),\n"
-"        \$async\$returnValue, response, t1;\n"
-"      var \$async\$_getDigests\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$goto = 3;\n"
-"              return A._asyncAwait(new A.BrowserClient(A._setArrayType([], type\$.JSArray_JSObject))._sendUnstreamed\$3(\"GET\", A.Uri_parse(A._asString(type\$.JavaScriptObject._as(init.G.\$requireLoader).digestsPath)), null), \$async\$_getDigests\$0);\n"
-"            case 3:\n"
-"              // returning from await.\n"
-"              response = \$async\$result;\n"
-"              t1 = type\$.String;\n"
-"              \$async\$returnValue = type\$.Map_dynamic_dynamic._as(B.C_JsonCodec.decode\$2\$reviver(A.encodingForContentTypeHeader(A._contentTypeForHeaders(response.headers)).decode\$1(response.bodyBytes), null)).cast\$2\$0(0, t1, t1);\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_getDigests\$0, \$async\$completer);\n"
-"    },\n"
-"    _initialize\$0() {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.void),\n"
-"        \$async\$self = this, \$async\$temp1;\n"
-"      var \$async\$_initialize\$0 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1)\n"
-"          return A._asyncRethrow(\$async\$result, \$async\$completer);\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              \$async\$temp1 = \$.RequireRestarter____lastKnownDigests;\n"
-"              \$async\$goto = 2;\n"
-"              return A._asyncAwait(\$async\$self._getDigests\$0(), \$async\$_initialize\$0);\n"
-"            case 2:\n"
-"              // returning from await.\n"
-"              \$async\$temp1.__late_helper\$_value = \$async\$result;\n"
-"              // implicit return\n"
-"              return A._asyncReturn(null, \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_initialize\$0, \$async\$completer);\n"
-"    },\n"
-"    _moduleParents\$1(module) {\n"
-"      var t1;\n"
-"      A._asString(module);\n"
-"      t1 = type\$.JavaScriptObject;\n"
-"      t1 = type\$.nullable_JSArray_nullable_Object._as(t1._as(t1._as(init.G.\$requireLoader).moduleParentsGraph).get(module));\n"
-"      if (t1 == null)\n"
-"        t1 = null;\n"
-"      else {\n"
-"        t1 = A.JSArrayExtension_toDartIterable(t1, type\$.String);\n"
-"        t1 = A.List_List\$_of(t1, t1.\$ti._eval\$1(\"ListIterable.E\"));\n"
-"      }\n"
-"      return t1 == null ? A._setArrayType([], type\$.JSArray_String) : t1;\n"
-"    },\n"
-"    _moduleTopologicalCompare\$2(module1, module2) {\n"
-"      var t1, order1, order2, t2, topological;\n"
-"      A._asString(module1);\n"
-"      A._asString(module2);\n"
-"      t1 = this._moduleOrdering;\n"
-"      order1 = t1.\$index(0, module1);\n"
-"      order2 = t1.\$index(0, module2);\n"
-"      t2 = order1 == null;\n"
-"      if (t2 || order2 == null)\n"
-"        throw A.wrapException(A.HotReloadFailedException\$(\"Unable to fetch ordering info for module: \" + (t2 ? module1 : module2)));\n"
-"      t2 = t1.\$index(0, module2);\n"
-"      t2.toString;\n"
-"      t1 = t1.\$index(0, module1);\n"
-"      t1.toString;\n"
-"      topological = B.JSInt_methods.compareTo\$1(t2, t1);\n"
-"      return topological === 0 ? B.JSString_methods.compareTo\$1(module1, module2) : topological;\n"
-"    },\n"
-"    _reload\$1(modules) {\n"
-"      return this._reload\$body\$RequireRestarter(type\$.List_String._as(modules));\n"
-"    },\n"
-"    _reload\$body\$RequireRestarter(modules) {\n"
-"      var \$async\$goto = 0,\n"
-"        \$async\$completer = A._makeAsyncAwaitCompleter(type\$.bool),\n"
-"        \$async\$returnValue, \$async\$handler = 2, \$async\$errorStack = [], \$async\$self = this, reloadedModules, moduleId, parentIds, e, _box_0, t4, t5, t6, t7, t8, t9, _this, parentIds0, exception, t1, t2, dart, t3, \$async\$exception;\n"
-"      var \$async\$_reload\$1 = A._wrapJsFunctionForAsync(function(\$async\$errorCode, \$async\$result) {\n"
-"        if (\$async\$errorCode === 1) {\n"
-"          \$async\$errorStack.push(\$async\$result);\n"
-"          \$async\$goto = \$async\$handler;\n"
-"        }\n"
-"        for (;;)\n"
-"          switch (\$async\$goto) {\n"
-"            case 0:\n"
-"              // Function start\n"
-"              t1 = init.G;\n"
-"              t2 = type\$.JavaScriptObject;\n"
-"              dart = t2._as(t2._as(t1.\$loadModuleConfig(\"dart_sdk\")).dart);\n"
-"              t3 = \$async\$self._running.future;\n"
-"              \$async\$goto = (t3._state & 30) === 0 ? 3 : 4;\n"
-"              break;\n"
-"            case 3:\n"
-"              // then\n"
-"              \$async\$goto = 5;\n"
-"              return A._asyncAwait(t3, \$async\$_reload\$1);\n"
-"            case 5:\n"
-"              // returning from await.\n"
-"              \$async\$returnValue = \$async\$result;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 4:\n"
-"              // join\n"
-"              \$async\$self._running = new A._AsyncCompleter(new A._Future(\$.Zone__current, type\$._Future_bool), type\$._AsyncCompleter_bool);\n"
-"              reloadedModules = 0;\n"
-"              \$async\$handler = 7;\n"
-"              _box_0 = {};\n"
-"              t3 = \$async\$self.__RequireRestarter__dirtyModules_A;\n"
-"              t3 === \$ && A.throwLateFieldNI(\"_dirtyModules\");\n"
-"              t3.addAll\$1(0, modules);\n"
-"              _box_0.previousModuleId = null;\n"
-"              t3 = \$async\$self.get\$_moduleTopologicalCompare(), t4 = type\$.String, t5 = type\$.nullable_JSArray_nullable_Object, t6 = type\$.JSArray_String;\n"
-"            case 10:\n"
-"              // for condition\n"
-"              if (!(t7 = \$async\$self.__RequireRestarter__dirtyModules_A, t8 = t7._root, t9 = t8 == null, !t9)) {\n"
-"                // goto after for\n"
-"                \$async\$goto = 11;\n"
-"                break;\n"
-"              }\n"
-"              if (t9)\n"
-"                A.throwExpression(A.IterableElementError_noElement());\n"
-"              t8 = t7._splayMin\$1(t8);\n"
-"              t7._root = t8;\n"
-"              moduleId = t8.key;\n"
-"              \$async\$self.__RequireRestarter__dirtyModules_A.remove\$1(0, moduleId);\n"
-"              _this = A._asString(moduleId);\n"
-"              t8 = t5._as(t2._as(t2._as(t1.\$requireLoader).moduleParentsGraph).get(_this));\n"
-"              if (t8 == null)\n"
-"                parentIds0 = null;\n"
-"              else {\n"
-"                t7 = A.JSArrayExtension_toDartIterable(t8, t4);\n"
-"                t7 = A.List_List\$_of(t7, t7.\$ti._eval\$1(\"ListIterable.E\"));\n"
-"                parentIds0 = t7;\n"
-"              }\n"
-"              parentIds = parentIds0 == null ? A._setArrayType([], t6) : parentIds0;\n"
-"              \$async\$goto = J.get\$length\$asx(parentIds) === 0 ? 12 : 14;\n"
-"              break;\n"
-"            case 12:\n"
-"              // then\n"
-"              t1.\$dartRunMain = A._functionToJS0(new A.RequireRestarter__reload_closure(_box_0, dart));\n"
-"              // goto join\n"
-"              \$async\$goto = 13;\n"
-"              break;\n"
-"            case 14:\n"
-"              // else\n"
-"              t7 = reloadedModules;\n"
-"              if (typeof t7 !== \"number\") {\n"
-"                \$async\$returnValue = t7.\$add();\n"
-"                // goto return\n"
-"                \$async\$goto = 1;\n"
-"                break;\n"
-"              }\n"
-"              reloadedModules = t7 + 1;\n"
-"              \$async\$goto = 15;\n"
-"              return A._asyncAwait(\$async\$self._reloadModule\$1(moduleId), \$async\$_reload\$1);\n"
-"            case 15:\n"
-"              // returning from await.\n"
-"              J.sort\$1\$ax(parentIds, t3);\n"
-"              \$async\$self.__RequireRestarter__dirtyModules_A.addAll\$1(0, parentIds);\n"
-"              _box_0.previousModuleId = moduleId;\n"
-"            case 13:\n"
-"              // join\n"
-"              // goto for condition\n"
-"              \$async\$goto = 10;\n"
-"              break;\n"
-"            case 11:\n"
-"              // after for\n"
-"              A.print(A.S(reloadedModules) + \" module(s) were hot-reloaded.\");\n"
-"              \$async\$self._running.complete\$1(true);\n"
-"              \$async\$handler = 2;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 9;\n"
-"              break;\n"
-"            case 7:\n"
-"              // catch\n"
-"              \$async\$handler = 6;\n"
-"              \$async\$exception = \$async\$errorStack.pop();\n"
-"              t2 = A.unwrapException(\$async\$exception);\n"
-"              if (t2 instanceof A.HotReloadFailedException) {\n"
-"                e = t2;\n"
-"                A.print(\"Error during script reloading. Firing full page reload. \" + A.S(e));\n"
-"                A._asJSObject(A._asJSObject(t1.window).location).reload();\n"
-"                \$async\$self._running.complete\$1(false);\n"
-"              } else\n"
-"                throw \$async\$exception;\n"
-"              // goto after finally\n"
-"              \$async\$goto = 9;\n"
-"              break;\n"
-"            case 6:\n"
-"              // uncaught\n"
-"              // goto rethrow\n"
-"              \$async\$goto = 2;\n"
-"              break;\n"
-"            case 9:\n"
-"              // after finally\n"
-"              \$async\$returnValue = \$async\$self._running.future;\n"
-"              // goto return\n"
-"              \$async\$goto = 1;\n"
-"              break;\n"
-"            case 1:\n"
-"              // return\n"
-"              return A._asyncReturn(\$async\$returnValue, \$async\$completer);\n"
-"            case 2:\n"
-"              // rethrow\n"
-"              return A._asyncRethrow(\$async\$errorStack.at(-1), \$async\$completer);\n"
-"          }\n"
-"      });\n"
-"      return A._asyncStartSync(\$async\$_reload\$1, \$async\$completer);\n"
-"    },\n"
-"    _reloadModule\$1(moduleId) {\n"
-"      var t1 = new A._Future(\$.Zone__current, type\$._Future_void),\n"
-"        completer = new A._AsyncCompleter(t1, type\$._AsyncCompleter_void),\n"
-"        stackTrace = A.StackTrace_current();\n"
-"      type\$.JavaScriptObject._as(init.G.\$requireLoader).forceLoadModule(moduleId, A._functionToJS0(new A.RequireRestarter__reloadModule_closure(completer)), A._functionToJS1(new A.RequireRestarter__reloadModule_closure0(completer, stackTrace)));\n"
-"      return t1;\n"
-"    },\n"
-"    _updateGraph\$0() {\n"
-"      var t3, stronglyConnectedComponents, i, _i,\n"
-"        t1 = init.G,\n"
-"        t2 = type\$.JavaScriptObject;\n"
-"      t2 = t2._as(t2._as(t1.\$requireLoader).moduleParentsGraph);\n"
-"      t3 = type\$.String;\n"
-"      stronglyConnectedComponents = A.stronglyConnectedComponents(A.JSArrayExtension_toDartIterable(type\$.JSArray_nullable_Object._as(t1.Array.from(A._asJSObject(t2.keys()))), t3), this.get\$_moduleParents(), t3);\n"
-"      t3 = this._moduleOrdering;\n"
-"      if (t3._collection\$_length > 0) {\n"
-"        t3._collection\$_strings = t3._collection\$_nums = t3._collection\$_rest = t3._collection\$_keys = null;\n"
-"        t3._collection\$_length = 0;\n"
-"      }\n"
-"      for (i = 0; i < stronglyConnectedComponents.length; ++i)\n"
-"        for (t1 = stronglyConnectedComponents[i], t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i)\n"
-"          t3.\$indexSet(0, t1[_i], i);\n"
-"    },\n"
-"    \$isRestarter: 1\n"
-"  };\n"
-"  A.RequireRestarter__reload_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var t1 = A._asJSObject(this.dart.getModuleLibraries(this._box_0.previousModuleId));\n"
-"      t1 = A.JSArrayExtension_toDartIterable(type\$.JSArray_nullable_Object._as(init.G.Object.values(t1)), type\$.nullable_Object).get\$first(0);\n"
-"      t1.toString;\n"
-"      type\$.JavaScriptObject._as(t1).main();\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.RequireRestarter__reloadModule_closure.prototype = {\n"
-"    call\$0() {\n"
-"      this.completer.complete\$0();\n"
-"    },\n"
-"    \$signature: 1\n"
-"  };\n"
-"  A.RequireRestarter__reloadModule_closure0.prototype = {\n"
-"    call\$1(e) {\n"
-"      this.completer.completeError\$2(new A.HotReloadFailedException(A._asString(type\$.JavaScriptObject._as(e).message)), this.stackTrace);\n"
-"    },\n"
-"    \$signature: 71\n"
-"  };\n"
-"  A._createScript_closure.prototype = {\n"
-"    call\$0() {\n"
-"      var nonce = A._findNonce();\n"
-"      if (nonce == null)\n"
-"        return new A._createScript__closure();\n"
-"      return new A._createScript__closure0(nonce);\n"
-"    },\n"
-"    \$signature: 72\n"
-"  };\n"
-"  A._createScript__closure.prototype = {\n"
-"    call\$0() {\n"
-"      return A._asJSObject(A._asJSObject(init.G.document).createElement(\"script\"));\n"
-"    },\n"
-"    \$signature: 4\n"
-"  };\n"
-"  A._createScript__closure0.prototype = {\n"
-"    call\$0() {\n"
-"      var scriptElement = A._asJSObject(A._asJSObject(init.G.document).createElement(\"script\"));\n"
-"      scriptElement.setAttribute(\"nonce\", this.nonce);\n"
-"      return scriptElement;\n"
-"    },\n"
-"    \$signature: 4\n"
-"  };\n"
-"  A.runMain_closure.prototype = {\n"
-"    call\$0() {\n"
-"      return this.scriptElement.remove();\n"
-"    },\n"
-"    \$signature: 0\n"
-"  };\n"
-"  A.JSArrayExtension_toDartIterable_closure.prototype = {\n"
-"    call\$1(e) {\n"
-"      return this.T._as(A.dartify(e));\n"
-"    },\n"
-"    \$signature() {\n"
-"      return this.T._eval\$1(\"0(Object?)\");\n"
-"    }\n"
-"  };\n"
-"  (function aliases() {\n"
-"    var _ = J.LegacyJavaScriptObject.prototype;\n"
-"    _.super\$LegacyJavaScriptObject\$toString = _.toString\$0;\n"
-"    _ = A.JsLinkedHashMap.prototype;\n"
-"    _.super\$JsLinkedHashMap\$internalContainsKey = _.internalContainsKey\$1;\n"
-"    _.super\$JsLinkedHashMap\$internalGet = _.internalGet\$1;\n"
-"    _.super\$JsLinkedHashMap\$internalSet = _.internalSet\$2;\n"
-"    _ = A._BufferingStreamSubscription.prototype;\n"
-"    _.super\$_BufferingStreamSubscription\$_add = _._add\$1;\n"
-"    _.super\$_BufferingStreamSubscription\$_addError = _._addError\$2;\n"
-"    _ = A.ListBase.prototype;\n"
-"    _.super\$ListBase\$setRange = _.setRange\$4;\n"
-"    _ = A.BaseRequest.prototype;\n"
-"    _.super\$BaseRequest\$finalize = _.finalize\$0;\n"
-"    _ = A.SourceSpanMixin.prototype;\n"
-"    _.super\$SourceSpanMixin\$compareTo = _.compareTo\$1;\n"
-"    _.super\$SourceSpanMixin\$\$eq = _.\$eq;\n"
-"  })();\n"
-"  (function installTearOffs() {\n"
-"    var _static_2 = hunkHelpers._static_2,\n"
-"      _instance_1_u = hunkHelpers._instance_1u,\n"
-"      _static_1 = hunkHelpers._static_1,\n"
-"      _static_0 = hunkHelpers._static_0,\n"
-"      _instance = hunkHelpers.installInstanceTearOff,\n"
-"      _instance_2_u = hunkHelpers._instance_2u,\n"
-"      _instance_0_u = hunkHelpers._instance_0u,\n"
-"      _instance_1_i = hunkHelpers._instance_1i,\n"
-"      _static = hunkHelpers.installStaticTearOff;\n"
-"    _static_2(J, \"_interceptors_JSArray__compareAny\$closure\", \"JSArray__compareAny\", 28);\n"
-"    _instance_1_u(A.CastStreamSubscription.prototype, \"get\$__internal\$_onData\", \"__internal\$_onData\$1\", 11);\n"
-"    _static_1(A, \"_js_helper___matchString\$closure\", \"_matchString\", 12);\n"
-"    _static_1(A, \"async__AsyncRun__scheduleImmediateJsOverride\$closure\", \"_AsyncRun__scheduleImmediateJsOverride\", 15);\n"
-"    _static_1(A, \"async__AsyncRun__scheduleImmediateWithSetImmediate\$closure\", \"_AsyncRun__scheduleImmediateWithSetImmediate\", 15);\n"
-"    _static_1(A, \"async__AsyncRun__scheduleImmediateWithTimer\$closure\", \"_AsyncRun__scheduleImmediateWithTimer\", 15);\n"
-"    _static_0(A, \"async___startMicrotaskLoop\$closure\", \"_startMicrotaskLoop\", 0);\n"
-"    _static_1(A, \"async___nullDataHandler\$closure\", \"_nullDataHandler\", 3);\n"
-"    _static_2(A, \"async___nullErrorHandler\$closure\", \"_nullErrorHandler\", 7);\n"
-"    _static_0(A, \"async___nullDoneHandler\$closure\", \"_nullDoneHandler\", 0);\n"
-"    _instance(A._Completer.prototype, \"get\$completeError\", 0, 1, null, [\"call\$2\", \"call\$1\"], [\"completeError\$2\", \"completeError\$1\"], 55, 0, 0);\n"
-"    _instance_2_u(A._Future.prototype, \"get\$_completeError\", \"_completeError\$2\", 7);\n"
-"    var _;\n"
-"    _instance_0_u(_ = A._ControllerSubscription.prototype, \"get\$_onPause\", \"_onPause\$0\", 0);\n"
-"    _instance_0_u(_, \"get\$_onResume\", \"_onResume\$0\", 0);\n"
-"    _instance_0_u(_ = A._BufferingStreamSubscription.prototype, \"get\$_onPause\", \"_onPause\$0\", 0);\n"
-"    _instance_0_u(_, \"get\$_onResume\", \"_onResume\$0\", 0);\n"
-"    _instance_0_u(A._DoneStreamSubscription.prototype, \"get\$_onMicrotask\", \"_onMicrotask\$0\", 0);\n"
-"    _instance_0_u(_ = A._ForwardingStreamSubscription.prototype, \"get\$_onPause\", \"_onPause\$0\", 0);\n"
-"    _instance_0_u(_, \"get\$_onResume\", \"_onResume\$0\", 0);\n"
-"    _instance_1_u(_, \"get\$_handleData\", \"_handleData\$1\", 11);\n"
-"    _instance_2_u(_, \"get\$_handleError\", \"_handleError\$2\", 67);\n"
-"    _instance_0_u(_, \"get\$_handleDone\", \"_handleDone\$0\", 0);\n"
-"    _static_2(A, \"collection___defaultEquals\$closure\", \"_defaultEquals0\", 29);\n"
-"    _static_1(A, \"collection___defaultHashCode\$closure\", \"_defaultHashCode\", 16);\n"
-"    _static_2(A, \"collection_ListBase__compareAny\$closure\", \"ListBase__compareAny\", 28);\n"
-"    _static_1(A, \"convert___defaultToEncodable\$closure\", \"_defaultToEncodable\", 17);\n"
-"    _instance_1_i(_ = A._ByteCallbackSink.prototype, \"get\$add\", \"add\$1\", 11);\n"
-"    _instance_0_u(_, \"get\$close\", \"close\$0\", 0);\n"
-"    _static_1(A, \"core__identityHashCode\$closure\", \"identityHashCode\", 16);\n"
-"    _static_2(A, \"core__identical\$closure\", \"identical\", 29);\n"
-"    _static_1(A, \"core_Uri_decodeComponent\$closure\", \"Uri_decodeComponent\", 9);\n"
-"    _static(A, \"math__max\$closure\", 2, null, [\"call\$1\$2\", \"call\$2\"], [\"max\", function(a, b) {\n"
-"      return A.max(a, b, type\$.num);\n"
-"    }], 77, 0);\n"
-"    _instance_1_u(_ = A.PersistentWebSocket.prototype, \"get\$_writeToWebSocket\", \"_writeToWebSocket\$1\", 3);\n"
-"    _instance_0_u(_, \"get\$_listenWithRetry\", \"_listenWithRetry\$0\", 5);\n"
-"    _static_1(A, \"case_insensitive_map_CaseInsensitiveMap__canonicalizer\$closure\", \"CaseInsensitiveMap__canonicalizer\", 9);\n"
-"    _instance_1_u(_ = A.SseClient.prototype, \"get\$_onIncomingControlMessage\", \"_onIncomingControlMessage\$1\", 2);\n"
-"    _instance_1_u(_, \"get\$_onIncomingMessage\", \"_onIncomingMessage\$1\", 2);\n"
-"    _instance_0_u(_, \"get\$_onOutgoingDone\", \"_onOutgoingDone\$0\", 0);\n"
-"    _instance_1_u(_, \"get\$_onOutgoingMessage\", \"_onOutgoingMessage\$1\", 56);\n"
-"    _static_1(A, \"client__initializeConnection\$closure\", \"initializeConnection\", 52);\n"
-"    _static_1(A, \"client___handleAuthRequest\$closure\", \"_handleAuthRequest\", 2);\n"
-"    _instance_0_u(A.ReloadingManager.prototype, \"get\$hotRestartEnd\", \"hotRestartEnd\$0\", 0);\n"
-"    _instance_1_u(_ = A.RequireRestarter.prototype, \"get\$_moduleParents\", \"_moduleParents\$1\", 69);\n"
-"    _instance_2_u(_, \"get\$_moduleTopologicalCompare\", \"_moduleTopologicalCompare\$2\", 70);\n"
-"  })();\n"
-"  (function inheritance() {\n"
-"    var _mixin = hunkHelpers.mixin,\n"
-"      _inherit = hunkHelpers.inherit,\n"
-"      _inheritMany = hunkHelpers.inheritMany;\n"
-"    _inherit(A.Object, null);\n"
-"    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Stream, A.CastStreamSubscription, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A.TimeoutException, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A._StreamController, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneHandleUncaughtError, A.Zone, A.ZoneDelegate, A.ZoneSpecification, A._HashMapKeyIterator, A.SetBase, A._HashSetIterator, A._UnmodifiableMapMixin, A.MapView, A._ListQueueIterator, A._SplayTreeNode, A._SplayTree, A._SplayTreeIterator, A.Codec, A.Converter, A.ByteConversionSink, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A.DateTime, A.Duration, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.NullRejectionException, A._JSRandom, A._JSSecureRandom, A.AsyncMemoizer, A.ErrorResult, A.ValueResult, A.StreamQueue, A._NextRequest, A._HasNextRequest, A.CanonicalizedMap, A._QueueList_Object_ListMixin, A.BuildResult, A.ConnectRequest, A.DebugEvent, A.BatchedDebugEvents, A.DebugInfo, A.DevToolsRequest, A.DevToolsResponse, A.ErrorResponse, A.HotReloadRequest, A.HotReloadResponse, A.HotRestartRequest, A.HotRestartResponse, A.PingRequest, A.RegisterEvent, A.RunRequest, A.ServiceExtensionRequest, A.ServiceExtensionResponse, A.BatchedStreamController, A.SocketClient, A._PersistentWebSocket_Object_StreamChannelMixin, A.Uuid, A._StackState, A.ClientException, A.BaseClient, A.BaseRequest, A.BaseResponse, A.MediaType, A.Level, A.LogRecord, A.Logger, A.Context, A.Style, A.ParsedPath, A.PathException, A.Pool, A.PoolResource, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.SourceSpanException, A.StreamChannelMixin, A.StringScanner, A.EventStreamProvider, A._EventStreamSubscription, A.BrowserWebSocket, A.WebSocketEvent, A.WebSocketException, A.DdcLibraryBundleRestarter, A.DdcRestarter, A.ReloadingManager, A.HotReloadFailedException, A.RequireRestarter]);\n"
-"    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JavaScriptBigInt, J.JavaScriptSymbol, J.JSNumber, J.JSString]);\n"
-"    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData]);\n"
-"    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]);\n"
-"    _inherit(J.JSArraySafeToStringHook, A.SafeToStringHook);\n"
-"    _inherit(J.JSUnmodifiableArray, J.JSArray);\n"
-"    _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);\n"
-"    _inheritMany(A.Stream, [A.CastStream, A.StreamView, A._StreamImpl, A._EmptyStream, A._MultiStream, A._ForwardingStream, A._EventStream]);\n"
-"    _inheritMany(A.Iterable, [A._CastIterableBase, A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipIterable, A.WhereTypeIterable, A._KeysOrValues, A._AllMatchesIterable, A._StringAllMatchesIterable]);\n"
-"    _inheritMany(A._CastIterableBase, [A.CastIterable, A.__CastListBase__CastIterableBase_ListMixin]);\n"
-"    _inherit(A._EfficientLengthCastIterable, A.CastIterable);\n"
-"    _inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin);\n"
-"    _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure1, A.Stream_length_closure, A.Stream_first_closure0, A.Zone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_errorHandler, A._LinkedCustomHashMap_closure, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.CanonicalizedMap_keys_closure, A.BuildStatus_BuildStatus\$fromJson_closure, A.BatchedDebugEvents_toJson_closure, A.WebSocketClient_stream_closure, A.PersistentWebSocket_connect_closure, A.PersistentWebSocket__listenWithRetry_attemptRetry, A.PersistentWebSocket__listenWithRetry_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A._bodyToStream_closure, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Pool__runOnRelease_closure0, A.Highlighter\$__closure, A.Highlighter\$___closure, A.Highlighter\$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.main__closure2, A.main__closure3, A.main__closure5, A.main__closure7, A.main__closure9, A.main__closure10, A.main__closure11, A._handleAuthRequest_closure, A._sendHotReloadResponse_closure, A._sendHotRestartResponse_closure, A.DdcLibraryBundleRestarter_restart_closure, A.DdcLibraryBundleRestarter_hotReloadStart_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]);\n"
-"    _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._Future_timeout_closure2, A._BufferingStreamSubscription_asFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A.Uri_parseIPv6Address_error, A.FutureOfJSAnyToJSPromise_get_toJS_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure0, A.FutureOfVoidToJSPromise_get_toJS_closure, A.FutureOfVoidToJSPromise_get_toJS__closure0, A.StreamQueue__ensureListening_closure1, A.CanonicalizedMap_addAll_closure, A.CanonicalizedMap_forEach_closure, A.safeUnawaited_closure, A.BaseRequest_closure, A.MediaType_toString_closure, A.Highlighter__collateLines_closure0, A.main__closure6, A.main_closure0]);\n"
-"    _inherit(A.CastList, A._CastListBase);\n"
-"    _inheritMany(A.MapBase, [A.CastMap, A.JsLinkedHashMap, A._HashMap, A._JsonMap]);\n"
-"    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);\n"
-"    _inherit(A.UnmodifiableListBase, A.ListBase);\n"
-"    _inherit(A.CodeUnits, A.UnmodifiableListBase);\n"
-"    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A.Future_Future\$microtask_closure, A.Future_Future\$delayed_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainCoreFuture_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteErrorObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A._Future_timeout_closure, A._Future_timeout_closure0, A.Stream_length_closure0, A.Stream_first_closure, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._BufferingStreamSubscription_asFuture_closure, A._BufferingStreamSubscription_asFuture__closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._MultiStream_listen_closure, A._cancelAndValue_closure, A.Zone_bindCallback_closure, A.Zone_bindCallbackGuarded_closure, A._rootHandleUncaughtError_closure, A._Utf8Decoder__decoder_closure, A._Utf8Decoder__decoderNonfatal_closure, A.StreamQueue__ensureListening_closure0, A.BuildStatus_BuildStatus\$fromJson_closure0, A.BatchedStreamController__hasEventOrTimeOut_closure, A.BatchedStreamController__hasEventDuring_closure, A._readStreamBody_closure, A._readStreamBody_closure0, A.MediaType_MediaType\$parse_closure, A.Logger_Logger_closure, A.Highlighter_closure, A.Highlighter__writeFileStart_closure, A.Highlighter__writeMultilineHighlights_closure, A.Highlighter__writeMultilineHighlights_closure0, A.Highlighter__writeMultilineHighlights_closure1, A.Highlighter__writeMultilineHighlights_closure2, A.Highlighter__writeMultilineHighlights__closure, A.Highlighter__writeMultilineHighlights__closure0, A.Highlighter__writeHighlightedText_closure, A.Highlighter__writeIndicator_closure, A.Highlighter__writeIndicator_closure0, A.Highlighter__writeIndicator_closure1, A.Highlighter__writeSidebar_closure, A._Highlight_closure, A.SseClient_closure, A.SseClient__closure, A.SseClient__onOutgoingMessage_closure, A.main_closure, A.main__closure, A.main__closure0, A.main__closure1, A.main__closure4, A.main__closure8, A.DdcLibraryBundleRestarter__getSrcModuleLibraries_closure, A.RequireRestarter__reload_closure, A.RequireRestarter__reloadModule_closure, A._createScript_closure, A._createScript__closure, A._createScript__closure0, A.runMain_closure]);\n"
-"    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.EmptyIterable, A.LinkedHashMapKeysIterable, A.LinkedHashMapValuesIterable, A.LinkedHashMapEntriesIterable, A._HashMapKeyIterable]);\n"
-"    _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable, A.ReversedListIterable, A.ListQueue, A._JsonMapKeyIterable]);\n"
-"    _inherit(A.EfficientLengthMappedIterable, A.MappedIterable);\n"
-"    _inherit(A.EfficientLengthTakeIterable, A.TakeIterable);\n"
-"    _inherit(A.EfficientLengthSkipIterable, A.SkipIterable);\n"
-"    _inherit(A._Record2, A._Record);\n"
-"    _inherit(A._Record_2, A._Record2);\n"
-"    _inherit(A.ConstantStringMap, A.ConstantMap);\n"
-"    _inherit(A.Instantiation1, A.Instantiation);\n"
-"    _inherit(A.NullError, A.TypeError);\n"
-"    _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);\n"
-"    _inheritMany(A.JsLinkedHashMap, [A.JsIdentityLinkedHashMap, A._LinkedCustomHashMap]);\n"
-"    _inherit(A.NativeArrayBuffer, A.NativeByteBuffer);\n"
-"    _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]);\n"
-"    _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);\n"
-"    _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);\n"
-"    _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);\n"
-"    _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);\n"
-"    _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);\n"
-"    _inheritMany(A.NativeTypedArrayOfDouble, [A.NativeFloat32List, A.NativeFloat64List]);\n"
-"    _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]);\n"
-"    _inherit(A._TypeError, A._Error);\n"
-"    _inheritMany(A._Completer, [A._AsyncCompleter, A._SyncCompleter]);\n"
-"    _inherit(A._AsyncStreamController, A._StreamController);\n"
-"    _inherit(A._ControllerStream, A._StreamImpl);\n"
-"    _inheritMany(A._BufferingStreamSubscription, [A._ControllerSubscription, A._ForwardingStreamSubscription]);\n"
-"    _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);\n"
-"    _inherit(A._MultiStreamController, A._AsyncStreamController);\n"
-"    _inherit(A._MapStream, A._ForwardingStream);\n"
-"    _inherit(A._IdentityHashMap, A._HashMap);\n"
-"    _inherit(A._SetBase, A.SetBase);\n"
-"    _inherit(A._HashSet, A._SetBase);\n"
-"    _inherit(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A.MapView);\n"
-"    _inherit(A.UnmodifiableMapView, A._UnmodifiableMapView_MapView__UnmodifiableMapMixin);\n"
-"    _inherit(A._SplayTreeSetNode, A._SplayTreeNode);\n"
-"    _inherit(A._SplayTreeKeyIterator, A._SplayTreeIterator);\n"
-"    _inherit(A._SplayTreeSet__SplayTree_Iterable, A._SplayTree);\n"
-"    _inherit(A._SplayTreeSet__SplayTree_Iterable_SetMixin, A._SplayTreeSet__SplayTree_Iterable);\n"
-"    _inherit(A.SplayTreeSet, A._SplayTreeSet__SplayTree_Iterable_SetMixin);\n"
-"    _inheritMany(A.Codec, [A.Encoding, A.Base64Codec, A.JsonCodec]);\n"
-"    _inheritMany(A.Encoding, [A.AsciiCodec, A.Latin1Codec, A.Utf8Codec]);\n"
-"    _inheritMany(A.Converter, [A._UnicodeSubsetEncoder, A._UnicodeSubsetDecoder, A.Base64Encoder, A.JsonEncoder, A.JsonDecoder, A.Utf8Encoder, A.Utf8Decoder]);\n"
-"    _inheritMany(A._UnicodeSubsetEncoder, [A.AsciiEncoder, A.Latin1Encoder]);\n"
-"    _inheritMany(A._UnicodeSubsetDecoder, [A.AsciiDecoder, A.Latin1Decoder]);\n"
-"    _inherit(A._ByteCallbackSink, A.ByteConversionSink);\n"
-"    _inherit(A.JsonCyclicError, A.JsonUnsupportedObjectError);\n"
-"    _inherit(A._JsonStringStringifier, A._JsonStringifier);\n"
-"    _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);\n"
-"    _inherit(A._DataUri, A._Uri);\n"
-"    _inherit(A.QueueList, A._QueueList_Object_ListMixin);\n"
-"    _inherit(A._CastQueueList, A.QueueList);\n"
-"    _inherit(A.BuildStatus, A._Enum);\n"
-"    _inheritMany(A.SocketClient, [A.SseSocketClient, A.WebSocketClient]);\n"
-"    _inherit(A.PersistentWebSocket, A._PersistentWebSocket_Object_StreamChannelMixin);\n"
-"    _inherit(A.RequestAbortedException, A.ClientException);\n"
-"    _inherit(A.BrowserClient, A.BaseClient);\n"
-"    _inherit(A.ByteStream, A.StreamView);\n"
-"    _inherit(A.Request, A.BaseRequest);\n"
-"    _inheritMany(A.BaseResponse, [A.Response, A.StreamedResponse]);\n"
-"    _inherit(A.StreamedResponseV2, A.StreamedResponse);\n"
-"    _inherit(A.CaseInsensitiveMap, A.CanonicalizedMap);\n"
-"    _inherit(A.InternalStyle, A.Style);\n"
-"    _inheritMany(A.InternalStyle, [A.PosixStyle, A.UrlStyle, A.WindowsStyle]);\n"
-"    _inherit(A.FileLocation, A.SourceLocationMixin);\n"
-"    _inheritMany(A.SourceSpanMixin, [A._FileSpan, A.SourceSpanBase]);\n"
-"    _inherit(A.SourceSpanFormatException, A.SourceSpanException);\n"
-"    _inherit(A.SourceSpanWithContext, A.SourceSpanBase);\n"
-"    _inherit(A.SseClient, A.StreamChannelMixin);\n"
-"    _inherit(A.StringScannerException, A.SourceSpanFormatException);\n"
-"    _inheritMany(A.WebSocketEvent, [A.TextDataReceived, A.BinaryDataReceived, A.CloseReceived]);\n"
-"    _inherit(A.WebSocketConnectionClosed, A.WebSocketException);\n"
-"    _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin);\n"
-"    _mixin(A.__CastListBase__CastIterableBase_ListMixin, A.ListBase);\n"
-"    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase);\n"
-"    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);\n"
-"    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase);\n"
-"    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);\n"
-"    _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch);\n"
-"    _mixin(A._SplayTreeSet__SplayTree_Iterable, A.Iterable);\n"
-"    _mixin(A._SplayTreeSet__SplayTree_Iterable_SetMixin, A.SetBase);\n"
-"    _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin);\n"
-"    _mixin(A._QueueList_Object_ListMixin, A.ListBase);\n"
-"    _mixin(A._PersistentWebSocket_Object_StreamChannelMixin, A.StreamChannelMixin);\n"
-"  })();\n"
-"  var init = {\n"
-"    G: typeof self != \"undefined\" ? self : globalThis,\n"
-"    typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},\n"
-"    mangledGlobalNames: {int: \"int\", double: \"double\", num: \"num\", String: \"String\", bool: \"bool\", Null: \"Null\", List: \"List\", Object: \"Object\", Map: \"Map\", JSObject: \"JSObject\"},\n"
-"    mangledNames: {},\n"
-"    types: [\"~()\", \"Null()\", \"~(JSObject)\", \"~(@)\", \"JSObject()\", \"Future<~>()\", \"Null(@)\", \"~(Object,StackTrace)\", \"Null(Object,StackTrace)\", \"String(String)\", \"Object?(Object?)\", \"~(Object?)\", \"String(Match)\", \"bool(_Highlight)\", \"Null(JSObject)\", \"~(~())\", \"int(Object?)\", \"@(@)\", \"~(Object?,Object?)\", \"@()\", \"Null(JavaScriptFunction,JavaScriptFunction)\", \"Object(Object,StackTrace)\", \"bool()\", \"Future<~>(String)\", \"bool(String)\", \"int()\", \"Null(String)\", \"Null(JavaScriptFunction)\", \"int(@,@)\", \"bool(Object?,Object?)\", \"bool(BuildStatus)\", \"PersistentWebSocket(WebSocket)\", \"bool(Object?)\", \"Future<~>(WebSocketEvent)\", \"bool(String,String)\", \"int(String)\", \"Null(String,String[Object?])\", \"~(MultiStreamController<List<int>>)\", \"~(List<int>)\", \"MediaType()\", \"~(String,String)\", \"Null(~())\", \"Logger()\", \"Null(@,StackTrace)\", \"String(String?)\", \"Null(~)\", \"String?()\", \"int(_Line)\", \"0&(String,int?)\", \"Object(_Line)\", \"Object(_Highlight)\", \"int(_Highlight,_Highlight)\", \"~(StreamSink<@>)\", \"~(int,@)\", \"SourceSpanWithContext()\", \"~(Object[StackTrace?])\", \"~(String?)\", \"Future<Null>()\", \"@(String)\", \"@(@,String)\", \"JSObject(String[bool?])\", \"Object?(~)\", \"~(List<DebugEvent>)\", \"Null(String,String)\", \"~(bool)\", \"HotReloadResponse(String,bool,String?)\", \"HotRestartResponse(String,bool,String?)\", \"~(@,StackTrace)\", \"bool(bool)\", \"List<String>(String)\", \"int(String,String)\", \"Null(JavaScriptObject)\", \"JSObject()()\", \"0&()\", \"Map<String,@>(DebugEvent)\", \"~(Zone,ZoneDelegate,Zone,Object,StackTrace)\", \"String(@)\", \"0^(0^,0^)<num>\", \"List<_Line>(MapEntry<Object,List<_Highlight>>)\"],\n"
-"    interceptorsByTag: null,\n"
-"    leafTags: null,\n"
-"    arrayRti: Symbol(\"\$ti\"),\n"
-"    rttc: {\n"
-"      \"2;\": (t1, t2) => o => o instanceof A._Record_2 && t1._is(o._0) && t2._is(o._1)\n"
-"    }\n"
-"  };\n"
-"  A._Universe_addRules(init.typeUniverse, JSON.parse('{\"JavaScriptFunction\":\"LegacyJavaScriptObject\",\"PlainJavaScriptObject\":\"LegacyJavaScriptObject\",\"UnknownJavaScriptObject\":\"LegacyJavaScriptObject\",\"NativeSharedArrayBuffer\":\"NativeByteBuffer\",\"JavaScriptObject\":{\"Interceptor\":[],\"JSObject\":[]},\"JSArray\":{\"List\":[\"1\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"1\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"JSBool\":{\"Interceptor\":[],\"bool\":[],\"TrustedGetRuntimeType\":[]},\"JSNull\":{\"Interceptor\":[],\"Null\":[],\"TrustedGetRuntimeType\":[]},\"LegacyJavaScriptObject\":{\"JavaScriptObject\":[],\"Interceptor\":[],\"JSObject\":[]},\"JavaScriptBigInt\":{\"Interceptor\":[]},\"JavaScriptSymbol\":{\"Interceptor\":[]},\"JSArraySafeToStringHook\":{\"SafeToStringHook\":[]},\"JSUnmodifiableArray\":{\"JSArray\":[\"1\"],\"List\":[\"1\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"1\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"ArrayIterator\":{\"Iterator\":[\"1\"]},\"JSNumber\":{\"double\":[],\"num\":[],\"Interceptor\":[],\"Comparable\":[\"num\"]},\"JSInt\":{\"double\":[],\"int\":[],\"num\":[],\"Interceptor\":[],\"Comparable\":[\"num\"],\"TrustedGetRuntimeType\":[]},\"JSNumNotInt\":{\"double\":[],\"num\":[],\"Interceptor\":[],\"Comparable\":[\"num\"],\"TrustedGetRuntimeType\":[]},\"JSString\":{\"String\":[],\"Interceptor\":[],\"Comparable\":[\"String\"],\"Pattern\":[],\"TrustedGetRuntimeType\":[]},\"CastStream\":{\"Stream\":[\"2\"],\"Stream.T\":\"2\"},\"CastStreamSubscription\":{\"StreamSubscription\":[\"2\"]},\"_CastIterableBase\":{\"Iterable\":[\"2\"]},\"CastIterator\":{\"Iterator\":[\"2\"]},\"CastIterable\":{\"_CastIterableBase\":[\"1\",\"2\"],\"Iterable\":[\"2\"],\"Iterable.E\":\"2\"},\"_EfficientLengthCastIterable\":{\"CastIterable\":[\"1\",\"2\"],\"_CastIterableBase\":[\"1\",\"2\"],\"EfficientLengthIterable\":[\"2\"],\"Iterable\":[\"2\"],\"Iterable.E\":\"2\"},\"_CastListBase\":{\"ListBase\":[\"2\"],\"List\":[\"2\"],\"_CastIterableBase\":[\"1\",\"2\"],\"EfficientLengthIterable\":[\"2\"],\"Iterable\":[\"2\"]},\"CastList\":{\"_CastListBase\":[\"1\",\"2\"],\"ListBase\":[\"2\"],\"List\":[\"2\"],\"_CastIterableBase\":[\"1\",\"2\"],\"EfficientLengthIterable\":[\"2\"],\"Iterable\":[\"2\"],\"ListBase.E\":\"2\",\"Iterable.E\":\"2\"},\"CastMap\":{\"MapBase\":[\"3\",\"4\"],\"Map\":[\"3\",\"4\"],\"MapBase.K\":\"3\",\"MapBase.V\":\"4\"},\"LateError\":{\"Error\":[]},\"CodeUnits\":{\"ListBase\":[\"int\"],\"UnmodifiableListMixin\":[\"int\"],\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"],\"ListBase.E\":\"int\",\"Iterable.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\"]},\"SkipIterable\":{\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"EfficientLengthSkipIterable\":{\"SkipIterable\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"SkipIterator\":{\"Iterator\":[\"1\"]},\"EmptyIterable\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"EmptyIterator\":{\"Iterator\":[\"1\"]},\"WhereTypeIterable\":{\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"WhereTypeIterator\":{\"Iterator\":[\"1\"]},\"UnmodifiableListBase\":{\"ListBase\":[\"1\"],\"UnmodifiableListMixin\":[\"1\"],\"List\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"]},\"ReversedListIterable\":{\"ListIterable\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"ListIterable.E\":\"1\",\"Iterable.E\":\"1\"},\"_Record_2\":{\"_Record2\":[],\"_Record\":[]},\"ConstantMap\":{\"Map\":[\"1\",\"2\"]},\"ConstantStringMap\":{\"ConstantMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"]},\"_KeysOrValues\":{\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"_KeysOrValuesOrElementsIterator\":{\"Iterator\":[\"1\"]},\"Instantiation\":{\"Closure\":[],\"Function\":[]},\"Instantiation1\":{\"Closure\":[],\"Function\":[]},\"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\":[]},\"JsLinkedHashMap\":{\"MapBase\":[\"1\",\"2\"],\"LinkedHashMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"],\"MapBase.K\":\"1\",\"MapBase.V\":\"2\"},\"LinkedHashMapKeysIterable\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"LinkedHashMapKeyIterator\":{\"Iterator\":[\"1\"]},\"LinkedHashMapValuesIterable\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"LinkedHashMapValueIterator\":{\"Iterator\":[\"1\"]},\"LinkedHashMapEntriesIterable\":{\"EfficientLengthIterable\":[\"MapEntry<1,2>\"],\"Iterable\":[\"MapEntry<1,2>\"],\"Iterable.E\":\"MapEntry<1,2>\"},\"LinkedHashMapEntryIterator\":{\"Iterator\":[\"MapEntry<1,2>\"]},\"JsIdentityLinkedHashMap\":{\"JsLinkedHashMap\":[\"1\",\"2\"],\"MapBase\":[\"1\",\"2\"],\"LinkedHashMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"],\"MapBase.K\":\"1\",\"MapBase.V\":\"2\"},\"_Record2\":{\"_Record\":[]},\"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\"]},\"NativeByteBuffer\":{\"JavaScriptObject\":[],\"Interceptor\":[],\"JSObject\":[],\"ByteBuffer\":[],\"TrustedGetRuntimeType\":[]},\"NativeArrayBuffer\":{\"NativeByteBuffer\":[],\"JavaScriptObject\":[],\"Interceptor\":[],\"JSObject\":[],\"ByteBuffer\":[],\"TrustedGetRuntimeType\":[]},\"NativeTypedData\":{\"JavaScriptObject\":[],\"Interceptor\":[],\"JSObject\":[]},\"_UnmodifiableNativeByteBufferView\":{\"ByteBuffer\":[]},\"NativeByteData\":{\"JavaScriptObject\":[],\"ByteData\":[],\"Interceptor\":[],\"JSObject\":[],\"TrustedGetRuntimeType\":[]},\"NativeTypedArray\":{\"JavaScriptIndexingBehavior\":[\"1\"],\"JavaScriptObject\":[],\"Interceptor\":[],\"JSObject\":[]},\"NativeTypedArrayOfDouble\":{\"ListBase\":[\"double\"],\"NativeTypedArray\":[\"double\"],\"List\":[\"double\"],\"JavaScriptIndexingBehavior\":[\"double\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"double\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"double\"],\"FixedLengthListMixin\":[\"double\"]},\"NativeTypedArrayOfInt\":{\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"]},\"NativeFloat32List\":{\"Float32List\":[],\"ListBase\":[\"double\"],\"NativeTypedArray\":[\"double\"],\"List\":[\"double\"],\"JavaScriptIndexingBehavior\":[\"double\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"double\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"double\"],\"FixedLengthListMixin\":[\"double\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"double\",\"Iterable.E\":\"double\",\"FixedLengthListMixin.E\":\"double\"},\"NativeFloat64List\":{\"Float64List\":[],\"ListBase\":[\"double\"],\"NativeTypedArray\":[\"double\"],\"List\":[\"double\"],\"JavaScriptIndexingBehavior\":[\"double\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"double\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"double\"],\"FixedLengthListMixin\":[\"double\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"double\",\"Iterable.E\":\"double\",\"FixedLengthListMixin.E\":\"double\"},\"NativeInt16List\":{\"NativeTypedArrayOfInt\":[],\"Int16List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeInt32List\":{\"NativeTypedArrayOfInt\":[],\"Int32List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeInt8List\":{\"NativeTypedArrayOfInt\":[],\"Int8List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeUint16List\":{\"NativeTypedArrayOfInt\":[],\"Uint16List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeUint32List\":{\"NativeTypedArrayOfInt\":[],\"Uint32List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeUint8ClampedList\":{\"NativeTypedArrayOfInt\":[],\"Uint8ClampedList\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"NativeUint8List\":{\"NativeTypedArrayOfInt\":[],\"Uint8List\":[],\"ListBase\":[\"int\"],\"NativeTypedArray\":[\"int\"],\"List\":[\"int\"],\"JavaScriptIndexingBehavior\":[\"int\"],\"JavaScriptObject\":[],\"EfficientLengthIterable\":[\"int\"],\"Interceptor\":[],\"JSObject\":[],\"Iterable\":[\"int\"],\"FixedLengthListMixin\":[\"int\"],\"TrustedGetRuntimeType\":[],\"ListBase.E\":\"int\",\"Iterable.E\":\"int\",\"FixedLengthListMixin.E\":\"int\"},\"_Error\":{\"Error\":[]},\"_TypeError\":{\"TypeError\":[],\"Error\":[]},\"AsyncError\":{\"Error\":[]},\"MultiStreamController\":{\"StreamController\":[\"1\"],\"StreamSink\":[\"1\"]},\"_TimerImpl\":{\"Timer\":[]},\"_AsyncAwaitCompleter\":{\"Completer\":[\"1\"]},\"TimeoutException\":{\"Exception\":[]},\"_Completer\":{\"Completer\":[\"1\"]},\"_AsyncCompleter\":{\"_Completer\":[\"1\"],\"Completer\":[\"1\"]},\"_SyncCompleter\":{\"_Completer\":[\"1\"],\"Completer\":[\"1\"]},\"_Future\":{\"Future\":[\"1\"]},\"StreamView\":{\"Stream\":[\"1\"]},\"_StreamController\":{\"StreamController\":[\"1\"],\"StreamSink\":[\"1\"],\"_StreamControllerLifecycle\":[\"1\"],\"_EventSink\":[\"1\"],\"_EventDispatch\":[\"1\"]},\"_AsyncStreamController\":{\"_AsyncStreamControllerDispatch\":[\"1\"],\"_StreamController\":[\"1\"],\"StreamController\":[\"1\"],\"StreamSink\":[\"1\"],\"_StreamControllerLifecycle\":[\"1\"],\"_EventSink\":[\"1\"],\"_EventDispatch\":[\"1\"]},\"_ControllerStream\":{\"_StreamImpl\":[\"1\"],\"Stream\":[\"1\"],\"Stream.T\":\"1\"},\"_ControllerSubscription\":{\"_BufferingStreamSubscription\":[\"1\"],\"StreamSubscription\":[\"1\"],\"_EventSink\":[\"1\"],\"_EventDispatch\":[\"1\"],\"_BufferingStreamSubscription.T\":\"1\"},\"_StreamSinkWrapper\":{\"StreamSink\":[\"1\"]},\"_BufferingStreamSubscription\":{\"StreamSubscription\":[\"1\"],\"_EventSink\":[\"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\"},\"_MultiStream\":{\"Stream\":[\"1\"],\"Stream.T\":\"1\"},\"_MultiStreamController\":{\"_AsyncStreamController\":[\"1\"],\"_AsyncStreamControllerDispatch\":[\"1\"],\"_StreamController\":[\"1\"],\"MultiStreamController\":[\"1\"],\"StreamController\":[\"1\"],\"StreamSink\":[\"1\"],\"_StreamControllerLifecycle\":[\"1\"],\"_EventSink\":[\"1\"],\"_EventDispatch\":[\"1\"]},\"_ForwardingStream\":{\"Stream\":[\"2\"]},\"_ForwardingStreamSubscription\":{\"_BufferingStreamSubscription\":[\"2\"],\"StreamSubscription\":[\"2\"],\"_EventSink\":[\"2\"],\"_EventDispatch\":[\"2\"],\"_BufferingStreamSubscription.T\":\"2\"},\"_MapStream\":{\"_ForwardingStream\":[\"1\",\"2\"],\"Stream\":[\"2\"],\"Stream.T\":\"2\"},\"_SplayTreeSetNode\":{\"_SplayTreeNode\":[\"1\",\"_SplayTreeSetNode<1>\"],\"_SplayTreeNode.K\":\"1\",\"_SplayTreeNode.1\":\"_SplayTreeSetNode<1>\"},\"_HashMap\":{\"MapBase\":[\"1\",\"2\"],\"HashMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"],\"MapBase.K\":\"1\",\"MapBase.V\":\"2\"},\"_IdentityHashMap\":{\"_HashMap\":[\"1\",\"2\"],\"MapBase\":[\"1\",\"2\"],\"HashMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"],\"MapBase.K\":\"1\",\"MapBase.V\":\"2\"},\"_HashMapKeyIterable\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"_HashMapKeyIterator\":{\"Iterator\":[\"1\"]},\"_LinkedCustomHashMap\":{\"JsLinkedHashMap\":[\"1\",\"2\"],\"MapBase\":[\"1\",\"2\"],\"LinkedHashMap\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"],\"MapBase.K\":\"1\",\"MapBase.V\":\"2\"},\"_HashSet\":{\"SetBase\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\"},\"_HashSetIterator\":{\"Iterator\":[\"1\"]},\"ListBase\":{\"List\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"]},\"MapBase\":{\"Map\":[\"1\",\"2\"]},\"MapView\":{\"Map\":[\"1\",\"2\"]},\"UnmodifiableMapView\":{\"_UnmodifiableMapView_MapView__UnmodifiableMapMixin\":[\"1\",\"2\"],\"MapView\":[\"1\",\"2\"],\"_UnmodifiableMapMixin\":[\"1\",\"2\"],\"Map\":[\"1\",\"2\"]},\"ListQueue\":{\"Queue\":[\"1\"],\"ListIterable\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"ListIterable.E\":\"1\",\"Iterable.E\":\"1\"},\"_ListQueueIterator\":{\"Iterator\":[\"1\"]},\"SetBase\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"]},\"_SetBase\":{\"SetBase\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"]},\"_SplayTreeIterator\":{\"Iterator\":[\"3\"]},\"_SplayTreeKeyIterator\":{\"_SplayTreeIterator\":[\"1\",\"2\",\"1\"],\"Iterator\":[\"1\"],\"_SplayTreeIterator.K\":\"1\",\"_SplayTreeIterator.T\":\"1\",\"_SplayTreeIterator.1\":\"2\"},\"SplayTreeSet\":{\"SetBase\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"_SplayTree\":[\"1\",\"_SplayTreeSetNode<1>\"],\"Iterable\":[\"1\"],\"Iterable.E\":\"1\",\"_SplayTree.1\":\"_SplayTreeSetNode<1>\",\"_SplayTree.K\":\"1\"},\"Encoding\":{\"Codec\":[\"String\",\"List<int>\"]},\"_JsonMap\":{\"MapBase\":[\"String\",\"@\"],\"Map\":[\"String\",\"@\"],\"MapBase.K\":\"String\",\"MapBase.V\":\"@\"},\"_JsonMapKeyIterable\":{\"ListIterable\":[\"String\"],\"EfficientLengthIterable\":[\"String\"],\"Iterable\":[\"String\"],\"ListIterable.E\":\"String\",\"Iterable.E\":\"String\"},\"AsciiCodec\":{\"Encoding\":[],\"Codec\":[\"String\",\"List<int>\"]},\"_UnicodeSubsetEncoder\":{\"Converter\":[\"String\",\"List<int>\"]},\"AsciiEncoder\":{\"Converter\":[\"String\",\"List<int>\"]},\"_UnicodeSubsetDecoder\":{\"Converter\":[\"List<int>\",\"String\"]},\"AsciiDecoder\":{\"Converter\":[\"List<int>\",\"String\"]},\"Base64Codec\":{\"Codec\":[\"List<int>\",\"String\"]},\"Base64Encoder\":{\"Converter\":[\"List<int>\",\"String\"]},\"JsonUnsupportedObjectError\":{\"Error\":[]},\"JsonCyclicError\":{\"Error\":[]},\"JsonCodec\":{\"Codec\":[\"Object?\",\"String\"]},\"JsonEncoder\":{\"Converter\":[\"Object?\",\"String\"]},\"JsonDecoder\":{\"Converter\":[\"String\",\"Object?\"]},\"Latin1Codec\":{\"Encoding\":[],\"Codec\":[\"String\",\"List<int>\"]},\"Latin1Encoder\":{\"Converter\":[\"String\",\"List<int>\"]},\"Latin1Decoder\":{\"Converter\":[\"List<int>\",\"String\"]},\"Utf8Codec\":{\"Encoding\":[],\"Codec\":[\"String\",\"List<int>\"]},\"Utf8Encoder\":{\"Converter\":[\"String\",\"List<int>\"]},\"Utf8Decoder\":{\"Converter\":[\"List<int>\",\"String\"]},\"DateTime\":{\"Comparable\":[\"DateTime\"]},\"double\":{\"num\":[],\"Comparable\":[\"num\"]},\"Duration\":{\"Comparable\":[\"Duration\"]},\"int\":{\"num\":[],\"Comparable\":[\"num\"]},\"List\":{\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"]},\"num\":{\"Comparable\":[\"num\"]},\"RegExpMatch\":{\"Match\":[]},\"String\":{\"Comparable\":[\"String\"],\"Pattern\":[]},\"AssertionError\":{\"Error\":[]},\"TypeError\":{\"Error\":[]},\"ArgumentError\":{\"Error\":[]},\"RangeError\":{\"Error\":[]},\"IndexError\":{\"Error\":[]},\"UnsupportedError\":{\"Error\":[]},\"UnimplementedError\":{\"Error\":[]},\"StateError\":{\"Error\":[]},\"ConcurrentModificationError\":{\"Error\":[]},\"OutOfMemoryError\":{\"Error\":[]},\"StackOverflowError\":{\"Error\":[]},\"_Exception\":{\"Exception\":[]},\"FormatException\":{\"Exception\":[]},\"_StringStackTrace\":{\"StackTrace\":[]},\"StringBuffer\":{\"StringSink\":[]},\"_Uri\":{\"Uri\":[]},\"_SimpleUri\":{\"Uri\":[]},\"_DataUri\":{\"Uri\":[]},\"NullRejectionException\":{\"Exception\":[]},\"ErrorResult\":{\"Result\":[\"0&\"]},\"ValueResult\":{\"Result\":[\"1\"]},\"_NextRequest\":{\"_EventRequest\":[\"1\"]},\"_HasNextRequest\":{\"_EventRequest\":[\"1\"]},\"CanonicalizedMap\":{\"Map\":[\"2\",\"3\"]},\"QueueList\":{\"ListBase\":[\"1\"],\"List\":[\"1\"],\"Queue\":[\"1\"],\"EfficientLengthIterable\":[\"1\"],\"Iterable\":[\"1\"],\"ListBase.E\":\"1\",\"QueueList.E\":\"1\",\"Iterable.E\":\"1\"},\"_CastQueueList\":{\"QueueList\":[\"2\"],\"ListBase\":[\"2\"],\"List\":[\"2\"],\"Queue\":[\"2\"],\"EfficientLengthIterable\":[\"2\"],\"Iterable\":[\"2\"],\"ListBase.E\":\"2\",\"QueueList.E\":\"2\",\"Iterable.E\":\"2\"},\"PersistentWebSocket\":{\"StreamChannelMixin\":[\"@\"]},\"SseSocketClient\":{\"SocketClient\":[]},\"WebSocketClient\":{\"SocketClient\":[]},\"RequestAbortedException\":{\"Exception\":[]},\"ByteStream\":{\"StreamView\":[\"List<int>\"],\"Stream\":[\"List<int>\"],\"Stream.T\":\"List<int>\",\"StreamView.T\":\"List<int>\"},\"ClientException\":{\"Exception\":[]},\"Request\":{\"BaseRequest\":[]},\"StreamedResponseV2\":{\"StreamedResponse\":[]},\"CaseInsensitiveMap\":{\"CanonicalizedMap\":[\"String\",\"String\",\"1\"],\"Map\":[\"String\",\"1\"],\"CanonicalizedMap.K\":\"String\",\"CanonicalizedMap.V\":\"1\",\"CanonicalizedMap.C\":\"String\"},\"Level\":{\"Comparable\":[\"Level\"]},\"PathException\":{\"Exception\":[]},\"PosixStyle\":{\"InternalStyle\":[]},\"UrlStyle\":{\"InternalStyle\":[]},\"WindowsStyle\":{\"InternalStyle\":[]},\"FileLocation\":{\"SourceLocation\":[],\"Comparable\":[\"SourceLocation\"]},\"_FileSpan\":{\"SourceSpanWithContext\":[],\"SourceSpan\":[],\"Comparable\":[\"SourceSpan\"]},\"SourceLocation\":{\"Comparable\":[\"SourceLocation\"]},\"SourceLocationMixin\":{\"SourceLocation\":[],\"Comparable\":[\"SourceLocation\"]},\"SourceSpan\":{\"Comparable\":[\"SourceSpan\"]},\"SourceSpanBase\":{\"SourceSpan\":[],\"Comparable\":[\"SourceSpan\"]},\"SourceSpanException\":{\"Exception\":[]},\"SourceSpanFormatException\":{\"FormatException\":[],\"Exception\":[]},\"SourceSpanMixin\":{\"SourceSpan\":[],\"Comparable\":[\"SourceSpan\"]},\"SourceSpanWithContext\":{\"SourceSpan\":[],\"Comparable\":[\"SourceSpan\"]},\"SseClient\":{\"StreamChannelMixin\":[\"String?\"]},\"StringScannerException\":{\"FormatException\":[],\"Exception\":[]},\"_EventStream\":{\"Stream\":[\"1\"],\"Stream.T\":\"1\"},\"_EventStreamSubscription\":{\"StreamSubscription\":[\"1\"]},\"BrowserWebSocket\":{\"WebSocket\":[]},\"TextDataReceived\":{\"WebSocketEvent\":[]},\"BinaryDataReceived\":{\"WebSocketEvent\":[]},\"CloseReceived\":{\"WebSocketEvent\":[]},\"WebSocketException\":{\"Exception\":[]},\"WebSocketConnectionClosed\":{\"Exception\":[]},\"DdcLibraryBundleRestarter\":{\"TwoPhaseRestarter\":[],\"Restarter\":[]},\"DdcRestarter\":{\"Restarter\":[]},\"RequireRestarter\":{\"Restarter\":[]},\"HotReloadFailedException\":{\"Exception\":[]},\"Int8List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Uint8List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Uint8ClampedList\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Int16List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Uint16List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Int32List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Uint32List\":{\"List\":[\"int\"],\"EfficientLengthIterable\":[\"int\"],\"Iterable\":[\"int\"]},\"Float32List\":{\"List\":[\"double\"],\"EfficientLengthIterable\":[\"double\"],\"Iterable\":[\"double\"]},\"Float64List\":{\"List\":[\"double\"],\"EfficientLengthIterable\":[\"double\"],\"Iterable\":[\"double\"]}}'));\n"
-"  A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{\"UnmodifiableListBase\":1,\"__CastListBase__CastIterableBase_ListMixin\":2,\"NativeTypedArray\":1,\"_DelayedEvent\":1,\"_SetBase\":1,\"_SplayTreeSet__SplayTree_Iterable\":1,\"_SplayTreeSet__SplayTree_Iterable_SetMixin\":1,\"_QueueList_Object_ListMixin\":1,\"StreamChannelMixin\":1}'));\n"
-"  var string\$ = {\n"
-"    x00_____: \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\u03f6\\x00\\u0404\\u03f4 \\u03f4\\u03f6\\u01f6\\u01f6\\u03f6\\u03fc\\u01f4\\u03ff\\u03ff\\u0584\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u05d4\\u01f4\\x00\\u01f4\\x00\\u0504\\u05c4\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u0400\\x00\\u0400\\u0200\\u03f7\\u0200\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u03ff\\u0200\\u0200\\u0200\\u03f7\\x00\",\n"
-"    x20must_: \" must not be greater than the number of characters in the file, \",\n"
-"    ABCDEF: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",\n"
-"    Cannotff: \"Cannot extract a file path from a URI with a fragment component\",\n"
-"    Cannotfq: \"Cannot extract a file path from a URI with a query component\",\n"
-"    Cannotn: \"Cannot extract a non-Windows file path from a file URI with an authority\",\n"
-"    Error_: \"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type\",\n"
-"    Hot_reA: \"Hot reload is not supported for the AMD module format.\",\n"
-"    Hot_reD: \"Hot reload is not supported for the DDC module format.\",\n"
-"    handle: \"handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.\",\n"
-"    max_mu: \"max must be in range 0 < max \\u2264 2^32, was \"\n"
-"  };\n"
-"  var type\$ = (function rtii() {\n"
-"    var findType = A.findType;\n"
-"    return {\n"
-"      \$env_1_1_dynamic: findType(\"@<@>\"),\n"
-"      \$env_1_1_void: findType(\"@<~>\"),\n"
-"      AsyncError: findType(\"AsyncError\"),\n"
-"      BatchedStreamController_DebugEvent: findType(\"BatchedStreamController<DebugEvent>\"),\n"
-"      BrowserWebSocket: findType(\"BrowserWebSocket\"),\n"
-"      BuildStatus: findType(\"BuildStatus\"),\n"
-"      ByteBuffer: findType(\"ByteBuffer\"),\n"
-"      ByteData: findType(\"ByteData\"),\n"
-"      CaseInsensitiveMap_String: findType(\"CaseInsensitiveMap<String>\"),\n"
-"      CodeUnits: findType(\"CodeUnits\"),\n"
-"      Comparable_dynamic: findType(\"Comparable<@>\"),\n"
-"      DateTime: findType(\"DateTime\"),\n"
-"      DebugEvent: findType(\"DebugEvent\"),\n"
-"      Duration: findType(\"Duration\"),\n"
-"      EfficientLengthIterable_dynamic: findType(\"EfficientLengthIterable<@>\"),\n"
-"      Error: findType(\"Error\"),\n"
-"      Exception: findType(\"Exception\"),\n"
-"      Float32List: findType(\"Float32List\"),\n"
-"      Float64List: findType(\"Float64List\"),\n"
-"      FormatException: findType(\"FormatException\"),\n"
-"      Function: findType(\"Function\"),\n"
-"      Future_void: findType(\"Future<~>\"),\n"
-"      HotReloadResponse: findType(\"HotReloadResponse\"),\n"
-"      HotRestartResponse: findType(\"HotRestartResponse\"),\n"
-"      Int16List: findType(\"Int16List\"),\n"
-"      Int32List: findType(\"Int32List\"),\n"
-"      Int8List: findType(\"Int8List\"),\n"
-"      Interceptor: findType(\"Interceptor\"),\n"
-"      Iterable_String: findType(\"Iterable<String>\"),\n"
-"      Iterable_dynamic: findType(\"Iterable<@>\"),\n"
-"      Iterable_int: findType(\"Iterable<int>\"),\n"
-"      JSArray_JSObject: findType(\"JSArray<JSObject>\"),\n"
-"      JSArray_Object: findType(\"JSArray<Object>\"),\n"
-"      JSArray_String: findType(\"JSArray<String>\"),\n"
-"      JSArray__Highlight: findType(\"JSArray<_Highlight>\"),\n"
-"      JSArray__Line: findType(\"JSArray<_Line>\"),\n"
-"      JSArray_dynamic: findType(\"JSArray<@>\"),\n"
-"      JSArray_int: findType(\"JSArray<int>\"),\n"
-"      JSArray_nullable_Object: findType(\"JSArray<Object?>\"),\n"
-"      JSArray_nullable_String: findType(\"JSArray<String?>\"),\n"
-"      JSNull: findType(\"JSNull\"),\n"
-"      JSObject: findType(\"JSObject\"),\n"
-"      JavaScriptFunction: findType(\"JavaScriptFunction\"),\n"
-"      JavaScriptIndexingBehavior_dynamic: findType(\"JavaScriptIndexingBehavior<@>\"),\n"
-"      JavaScriptObject: findType(\"JavaScriptObject\"),\n"
-"      Level: findType(\"Level\"),\n"
-"      List_DebugEvent: findType(\"List<DebugEvent>\"),\n"
-"      List_JSObject: findType(\"List<JSObject>\"),\n"
-"      List_Map_dynamic_dynamic: findType(\"List<Map<@,@>>\"),\n"
-"      List_String: findType(\"List<String>\"),\n"
-"      List_dynamic: findType(\"List<@>\"),\n"
-"      List_int: findType(\"List<int>\"),\n"
-"      List_nullable__Highlight: findType(\"List<_Highlight?>\"),\n"
-"      Logger: findType(\"Logger\"),\n"
-"      MapEntry_String_String: findType(\"MapEntry<String,String>\"),\n"
-"      MapEntry_of_Object_and_List__Highlight: findType(\"MapEntry<Object,List<_Highlight>>\"),\n"
-"      Map_String_String: findType(\"Map<String,String>\"),\n"
-"      Map_String_dynamic: findType(\"Map<String,@>\"),\n"
-"      Map_dynamic_dynamic: findType(\"Map<@,@>\"),\n"
-"      MappedListIterable_String_dynamic: findType(\"MappedListIterable<String,@>\"),\n"
-"      MediaType: findType(\"MediaType\"),\n"
-"      MultiStreamController_List_int: findType(\"MultiStreamController<List<int>>\"),\n"
-"      NativeArrayBuffer: findType(\"NativeArrayBuffer\"),\n"
-"      NativeTypedArrayOfInt: findType(\"NativeTypedArrayOfInt\"),\n"
-"      NativeUint8List: findType(\"NativeUint8List\"),\n"
-"      Null: findType(\"Null\"),\n"
-"      Object: findType(\"Object\"),\n"
-"      PersistentWebSocket: findType(\"PersistentWebSocket\"),\n"
-"      PoolResource: findType(\"PoolResource\"),\n"
-"      QueueList_Result_DebugEvent: findType(\"QueueList<Result<DebugEvent>>\"),\n"
-"      Record: findType(\"Record\"),\n"
-"      Record_0: findType(\"+()\"),\n"
-"      Record_2_bool_and_JSArray_nullable_Object: findType(\"+(bool,JSArray<Object?>)\"),\n"
-"      Record_2_bool_and_nullable_JSArray_nullable_Object: findType(\"+(bool,JSArray<Object?>?)\"),\n"
-"      RegExpMatch: findType(\"RegExpMatch\"),\n"
-"      RequireRestarter: findType(\"RequireRestarter\"),\n"
-"      Response: findType(\"Response\"),\n"
-"      SourceLocation: findType(\"SourceLocation\"),\n"
-"      SourceSpan: findType(\"SourceSpan\"),\n"
-"      SourceSpanWithContext: findType(\"SourceSpanWithContext\"),\n"
-"      SplayTreeSet_String: findType(\"SplayTreeSet<String>\"),\n"
-"      StackTrace: findType(\"StackTrace\"),\n"
-"      StreamQueue_DebugEvent: findType(\"StreamQueue<DebugEvent>\"),\n"
-"      StreamedResponse: findType(\"StreamedResponse\"),\n"
-"      String: findType(\"String\"),\n"
-"      String_Function_Match: findType(\"String(Match)\"),\n"
-"      TrustedGetRuntimeType: findType(\"TrustedGetRuntimeType\"),\n"
-"      TwoPhaseRestarter: findType(\"TwoPhaseRestarter\"),\n"
-"      TypeError: findType(\"TypeError\"),\n"
-"      Uint16List: findType(\"Uint16List\"),\n"
-"      Uint32List: findType(\"Uint32List\"),\n"
-"      Uint8ClampedList: findType(\"Uint8ClampedList\"),\n"
-"      Uint8List: findType(\"Uint8List\"),\n"
-"      UnknownJavaScriptObject: findType(\"UnknownJavaScriptObject\"),\n"
-"      UnmodifiableMapView_String_String: findType(\"UnmodifiableMapView<String,String>\"),\n"
-"      Uri: findType(\"Uri\"),\n"
-"      WebSocket: findType(\"WebSocket\"),\n"
-"      WebSocketEvent: findType(\"WebSocketEvent\"),\n"
-"      WhereTypeIterable_String: findType(\"WhereTypeIterable<String>\"),\n"
-"      _AsyncCompleter_BrowserWebSocket: findType(\"_AsyncCompleter<BrowserWebSocket>\"),\n"
-"      _AsyncCompleter_PoolResource: findType(\"_AsyncCompleter<PoolResource>\"),\n"
-"      _AsyncCompleter_String: findType(\"_AsyncCompleter<String>\"),\n"
-"      _AsyncCompleter_Uint8List: findType(\"_AsyncCompleter<Uint8List>\"),\n"
-"      _AsyncCompleter_bool: findType(\"_AsyncCompleter<bool>\"),\n"
-"      _AsyncCompleter_dynamic: findType(\"_AsyncCompleter<@>\"),\n"
-"      _AsyncCompleter_void: findType(\"_AsyncCompleter<~>\"),\n"
-"      _AsyncStreamController_List_int: findType(\"_AsyncStreamController<List<int>>\"),\n"
-"      _EventRequest_dynamic: findType(\"_EventRequest<@>\"),\n"
-"      _EventStream_JSObject: findType(\"_EventStream<JSObject>\"),\n"
-"      _Future_BrowserWebSocket: findType(\"_Future<BrowserWebSocket>\"),\n"
-"      _Future_PoolResource: findType(\"_Future<PoolResource>\"),\n"
-"      _Future_String: findType(\"_Future<String>\"),\n"
-"      _Future_Uint8List: findType(\"_Future<Uint8List>\"),\n"
-"      _Future_bool: findType(\"_Future<bool>\"),\n"
-"      _Future_dynamic: findType(\"_Future<@>\"),\n"
-"      _Future_int: findType(\"_Future<int>\"),\n"
-"      _Future_void: findType(\"_Future<~>\"),\n"
-"      _Highlight: findType(\"_Highlight\"),\n"
-"      _IdentityHashMap_of_nullable_Object_and_nullable_Object: findType(\"_IdentityHashMap<Object?,Object?>\"),\n"
-"      _Line: findType(\"_Line\"),\n"
-"      _MultiStream_List_int: findType(\"_MultiStream<List<int>>\"),\n"
-"      _StreamControllerAddStreamState_nullable_Object: findType(\"_StreamControllerAddStreamState<Object?>\"),\n"
-"      _SyncCompleter_PoolResource: findType(\"_SyncCompleter<PoolResource>\"),\n"
-"      bool: findType(\"bool\"),\n"
-"      bool_Function_Object: findType(\"bool(Object)\"),\n"
-"      bool_Function__Highlight: findType(\"bool(_Highlight)\"),\n"
-"      double: findType(\"double\"),\n"
-"      dynamic: findType(\"@\"),\n"
-"      dynamic_Function: findType(\"@()\"),\n"
-"      dynamic_Function_Object: findType(\"@(Object)\"),\n"
-"      dynamic_Function_Object_StackTrace: findType(\"@(Object,StackTrace)\"),\n"
-"      dynamic_Function_String: findType(\"@(String)\"),\n"
-"      int: findType(\"int\"),\n"
-"      nullable_Future_Null: findType(\"Future<Null>?\"),\n"
-"      nullable_JSArray_nullable_Object: findType(\"JSArray<Object?>?\"),\n"
-"      nullable_JSObject: findType(\"JSObject?\"),\n"
-"      nullable_List_dynamic: findType(\"List<@>?\"),\n"
-"      nullable_Map_String_dynamic: findType(\"Map<String,@>?\"),\n"
-"      nullable_Map_dynamic_dynamic: findType(\"Map<@,@>?\"),\n"
-"      nullable_Object: findType(\"Object?\"),\n"
-"      nullable_Result_DebugEvent: findType(\"Result<DebugEvent>?\"),\n"
-"      nullable_StackTrace: findType(\"StackTrace?\"),\n"
-"      nullable_String: findType(\"String?\"),\n"
-"      nullable_String_Function_Match: findType(\"String(Match)?\"),\n"
-"      nullable__DelayedEvent_dynamic: findType(\"_DelayedEvent<@>?\"),\n"
-"      nullable__FutureListener_dynamic_dynamic: findType(\"_FutureListener<@,@>?\"),\n"
-"      nullable__Highlight: findType(\"_Highlight?\"),\n"
-"      nullable_bool: findType(\"bool?\"),\n"
-"      nullable_double: findType(\"double?\"),\n"
-"      nullable_int: findType(\"int?\"),\n"
-"      nullable_num: findType(\"num?\"),\n"
-"      nullable_void_Function: findType(\"~()?\"),\n"
-"      nullable_void_Function_JSObject: findType(\"~(JSObject)?\"),\n"
-"      num: findType(\"num\"),\n"
-"      void: findType(\"~\"),\n"
-"      void_Function: findType(\"~()\"),\n"
-"      void_Function_List_int: findType(\"~(List<int>)\"),\n"
-"      void_Function_Object: findType(\"~(Object)\"),\n"
-"      void_Function_Object_StackTrace: findType(\"~(Object,StackTrace)\"),\n"
-"      void_Function_String_dynamic: findType(\"~(String,@)\"),\n"
-"      void_Function_int_dynamic: findType(\"~(int,@)\")\n"
-"    };\n"
-"  })();\n"
-"  (function constants() {\n"
-"    var makeConstList = hunkHelpers.makeConstList;\n"
-"    B.Interceptor_methods = J.Interceptor.prototype;\n"
-"    B.JSArray_methods = J.JSArray.prototype;\n"
-"    B.JSInt_methods = J.JSInt.prototype;\n"
-"    B.JSNumber_methods = J.JSNumber.prototype;\n"
-"    B.JSString_methods = J.JSString.prototype;\n"
-"    B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;\n"
-"    B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
-"    B.NativeByteData_methods = A.NativeByteData.prototype;\n"
-"    B.NativeUint32List_methods = A.NativeUint32List.prototype;\n"
-"    B.NativeUint8List_methods = A.NativeUint8List.prototype;\n"
-"    B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;\n"
-"    B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;\n"
-"    B.AsciiDecoder_false_127 = new A.AsciiDecoder(false, 127);\n"
-"    B.AsciiEncoder_127 = new A.AsciiEncoder(127);\n"
-"    B.C__EmptyStream = new A._EmptyStream(A.findType(\"_EmptyStream<List<int>>\"));\n"
-"    B.ByteStream__EmptyStream = new A.ByteStream(B.C__EmptyStream);\n"
-"    B.CONSTANT = new A.Instantiation1(A.math__max\$closure(), A.findType(\"Instantiation1<int>\"));\n"
-"    B.C_Base64Encoder = new A.Base64Encoder();\n"
-"    B.C_Base64Codec = new A.Base64Codec();\n"
-"    B.C_EmptyIterator = new A.EmptyIterator(A.findType(\"EmptyIterator<0&>\"));\n"
-"    B.C_JS_CONST = function getTagFallback(o) {\n"
-"  var s = Object.prototype.toString.call(o);\n"
-"  return s.substring(8, s.length - 1);\n"
-"};\n"
-"    B.C_JS_CONST0 = function() {\n"
-"  var toStringFunction = Object.prototype.toString;\n"
-"  function getTag(o) {\n"
-"    var s = toStringFunction.call(o);\n"
-"    return s.substring(8, s.length - 1);\n"
-"  }\n"
-"  function getUnknownTag(object, tag) {\n"
-"    if (/^HTML[A-Z].*Element\$/.test(tag)) {\n"
-"      var name = toStringFunction.call(object);\n"
-"      if (name == \"[object Object]\") return null;\n"
-"      return \"HTMLElement\";\n"
-"    }\n"
-"  }\n"
-"  function getUnknownTagGenericBrowser(object, tag) {\n"
-"    if (object instanceof HTMLElement) return \"HTMLElement\";\n"
-"    return getUnknownTag(object, tag);\n"
-"  }\n"
-"  function prototypeForTag(tag) {\n"
-"    if (typeof window == \"undefined\") return null;\n"
-"    if (typeof window[tag] == \"undefined\") return null;\n"
-"    var constructor = window[tag];\n"
-"    if (typeof constructor != \"function\") return null;\n"
-"    return constructor.prototype;\n"
-"  }\n"
-"  function discriminator(tag) { return null; }\n"
-"  var isBrowser = typeof HTMLElement == \"function\";\n"
-"  return {\n"
-"    getTag: getTag,\n"
-"    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,\n"
-"    prototypeForTag: prototypeForTag,\n"
-"    discriminator: discriminator };\n"
-"};\n"
-"    B.C_JS_CONST6 = function(getTagFallback) {\n"
-"  return function(hooks) {\n"
-"    if (typeof navigator != \"object\") return hooks;\n"
-"    var userAgent = navigator.userAgent;\n"
-"    if (typeof userAgent != \"string\") return hooks;\n"
-"    if (userAgent.indexOf(\"DumpRenderTree\") >= 0) return hooks;\n"
-"    if (userAgent.indexOf(\"Chrome\") >= 0) {\n"
-"      function confirm(p) {\n"
-"        return typeof window == \"object\" && window[p] && window[p].name == p;\n"
-"      }\n"
-"      if (confirm(\"Window\") && confirm(\"HTMLElement\")) return hooks;\n"
-"    }\n"
-"    hooks.getTag = getTagFallback;\n"
-"  };\n"
-"};\n"
-"    B.C_JS_CONST1 = function(hooks) {\n"
-"  if (typeof dartExperimentalFixupGetTag != \"function\") return hooks;\n"
-"  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);\n"
-"};\n"
-"    B.C_JS_CONST5 = function(hooks) {\n"
-"  if (typeof navigator != \"object\") return hooks;\n"
-"  var userAgent = navigator.userAgent;\n"
-"  if (typeof userAgent != \"string\") return hooks;\n"
-"  if (userAgent.indexOf(\"Firefox\") == -1) return hooks;\n"
-"  var getTag = hooks.getTag;\n"
-"  var quickMap = {\n"
-"    \"BeforeUnloadEvent\": \"Event\",\n"
-"    \"DataTransfer\": \"Clipboard\",\n"
-"    \"GeoGeolocation\": \"Geolocation\",\n"
-"    \"Location\": \"!Location\",\n"
-"    \"WorkerMessageEvent\": \"MessageEvent\",\n"
-"    \"XMLDocument\": \"!Document\"};\n"
-"  function getTagFirefox(o) {\n"
-"    var tag = getTag(o);\n"
-"    return quickMap[tag] || tag;\n"
-"  }\n"
-"  hooks.getTag = getTagFirefox;\n"
-"};\n"
-"    B.C_JS_CONST4 = function(hooks) {\n"
-"  if (typeof navigator != \"object\") return hooks;\n"
-"  var userAgent = navigator.userAgent;\n"
-"  if (typeof userAgent != \"string\") return hooks;\n"
-"  if (userAgent.indexOf(\"Trident/\") == -1) return hooks;\n"
-"  var getTag = hooks.getTag;\n"
-"  var quickMap = {\n"
-"    \"BeforeUnloadEvent\": \"Event\",\n"
-"    \"DataTransfer\": \"Clipboard\",\n"
-"    \"HTMLDDElement\": \"HTMLElement\",\n"
-"    \"HTMLDTElement\": \"HTMLElement\",\n"
-"    \"HTMLPhraseElement\": \"HTMLElement\",\n"
-"    \"Position\": \"Geoposition\"\n"
-"  };\n"
-"  function getTagIE(o) {\n"
-"    var tag = getTag(o);\n"
-"    var newTag = quickMap[tag];\n"
-"    if (newTag) return newTag;\n"
-"    if (tag == \"Object\") {\n"
-"      if (window.DataView && (o instanceof window.DataView)) return \"DataView\";\n"
-"    }\n"
-"    return tag;\n"
-"  }\n"
-"  function prototypeForTagIE(tag) {\n"
-"    var constructor = window[tag];\n"
-"    if (constructor == null) return null;\n"
-"    return constructor.prototype;\n"
-"  }\n"
-"  hooks.getTag = getTagIE;\n"
-"  hooks.prototypeForTag = prototypeForTagIE;\n"
-"};\n"
-"    B.C_JS_CONST2 = function(hooks) {\n"
-"  var getTag = hooks.getTag;\n"
-"  var prototypeForTag = hooks.prototypeForTag;\n"
-"  function getTagFixed(o) {\n"
-"    var tag = getTag(o);\n"
-"    if (tag == \"Document\") {\n"
-"      if (!!o.xmlVersion) return \"!Document\";\n"
-"      return \"!HTMLDocument\";\n"
-"    }\n"
-"    return tag;\n"
-"  }\n"
-"  function prototypeForTagFixed(tag) {\n"
-"    if (tag == \"Document\") return null;\n"
-"    return prototypeForTag(tag);\n"
-"  }\n"
-"  hooks.getTag = getTagFixed;\n"
-"  hooks.prototypeForTag = prototypeForTagFixed;\n"
-"};\n"
-"    B.C_JS_CONST3 = function(hooks) { return hooks; }\n"
-";\n"
-"    B.C_JsonCodec = new A.JsonCodec();\n"
-"    B.C_Latin1Codec = new A.Latin1Codec();\n"
-"    B.C_OutOfMemoryError = new A.OutOfMemoryError();\n"
-"    B.C_SentinelValue = new A.SentinelValue();\n"
-"    B.C_Utf8Codec = new A.Utf8Codec();\n"
-"    B.C_Utf8Encoder = new A.Utf8Encoder();\n"
-"    B.C_Uuid = new A.Uuid();\n"
-"    B.C__DelayedDone = new A._DelayedDone();\n"
-"    B.C__JSRandom = new A._JSRandom();\n"
-"    B.Duration_0 = new A.Duration(0);\n"
-"    B.Duration_5000000 = new A.Duration(5000000);\n"
-"    B.JsonDecoder_null = new A.JsonDecoder(null);\n"
-"    B.JsonEncoder_null = new A.JsonEncoder(null);\n"
-"    B.Latin1Decoder_false_255 = new A.Latin1Decoder(false, 255);\n"
-"    B.Latin1Encoder_255 = new A.Latin1Encoder(255);\n"
-"    B.Level_INFO_800 = new A.Level(\"INFO\", 800);\n"
-"    B.Level_SEVERE_1000 = new A.Level(\"SEVERE\", 1000);\n"
-"    B.Level_WARNING_900 = new A.Level(\"WARNING\", 900);\n"
-"    B.BuildStatus_0 = new A.BuildStatus(0, \"started\");\n"
-"    B.BuildStatus_1 = new A.BuildStatus(1, \"succeeded\");\n"
-"    B.BuildStatus_2 = new A.BuildStatus(2, \"failed\");\n"
-"    B.List_crW = makeConstList([B.BuildStatus_0, B.BuildStatus_1, B.BuildStatus_2], A.findType(\"JSArray<BuildStatus>\"));\n"
-"    B.List_empty = makeConstList([], type\$.JSArray_String);\n"
-"    B.List_fAJ = makeConstList([\"d\", \"D\", \"\\u2202\", \"\\xce\"], type\$.JSArray_String);\n"
-"    B.Object_nT8 = {\"iso_8859-1:1987\": 0, \"iso-ir-100\": 1, \"iso_8859-1\": 2, \"iso-8859-1\": 3, latin1: 4, l1: 5, ibm819: 6, cp819: 7, csisolatin1: 8, \"iso-ir-6\": 9, \"ansi_x3.4-1968\": 10, \"ansi_x3.4-1986\": 11, \"iso_646.irv:1991\": 12, \"iso646-us\": 13, \"us-ascii\": 14, us: 15, ibm367: 16, cp367: 17, csascii: 18, ascii: 19, csutf8: 20, \"utf-8\": 21};\n"
-"    B.C_AsciiCodec = new A.AsciiCodec();\n"
-"    B.Map_YCg0U = new A.ConstantStringMap(B.Object_nT8, [B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_Latin1Codec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_AsciiCodec, B.C_Utf8Codec, B.C_Utf8Codec], A.findType(\"ConstantStringMap<String,Encoding>\"));\n"
-"    B.Object_empty = {};\n"
-"    B.Map_empty0 = new A.ConstantStringMap(B.Object_empty, [], A.findType(\"ConstantStringMap<String,String>\"));\n"
-"    B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType(\"ConstantStringMap<String,@>\"));\n"
-"    B.Type_ByteBuffer_rqD = A.typeLiteral(\"ByteBuffer\");\n"
-"    B.Type_ByteData_9dB = A.typeLiteral(\"ByteData\");\n"
-"    B.Type_Float32List_9Kz = A.typeLiteral(\"Float32List\");\n"
-"    B.Type_Float64List_9Kz = A.typeLiteral(\"Float64List\");\n"
-"    B.Type_Int16List_s5h = A.typeLiteral(\"Int16List\");\n"
-"    B.Type_Int32List_O8Z = A.typeLiteral(\"Int32List\");\n"
-"    B.Type_Int8List_rFV = A.typeLiteral(\"Int8List\");\n"
-"    B.Type_JSObject_ttY = A.typeLiteral(\"JSObject\");\n"
-"    B.Type_Object_A4p = A.typeLiteral(\"Object\");\n"
-"    B.Type_Uint16List_kmP = A.typeLiteral(\"Uint16List\");\n"
-"    B.Type_Uint32List_kmP = A.typeLiteral(\"Uint32List\");\n"
-"    B.Type_Uint8ClampedList_04U = A.typeLiteral(\"Uint8ClampedList\");\n"
-"    B.Type_Uint8List_8Eb = A.typeLiteral(\"Uint8List\");\n"
-"    B.Utf8Decoder_false = new A.Utf8Decoder(false);\n"
-"    B.Zone_jYP = new A.Zone(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);\n"
-"    B._StringStackTrace_OdL = new A._StringStackTrace(\"\");\n"
-"  })();\n"
-"  (function staticFields() {\n"
-"    \$._JS_INTEROP_INTERCEPTOR_TAG = null;\n"
-"    \$._toStringVisiting = A._setArrayType([], type\$.JSArray_Object);\n"
-"    \$._printToZone = null;\n"
-"    \$.Primitives__identityHashCodeProperty = null;\n"
-"    \$.BoundClosure__receiverFieldNameCache = null;\n"
-"    \$.BoundClosure__interceptorFieldNameCache = null;\n"
-"    \$.getTagFunction = null;\n"
-"    \$.alternateTagFunction = null;\n"
-"    \$.prototypeForTagFunction = null;\n"
-"    \$.dispatchRecordsForInstanceTags = null;\n"
-"    \$.interceptorsForUncacheableTags = null;\n"
-"    \$.initNativeDispatchFlag = null;\n"
-"    \$._Record__computedFieldKeys = A._setArrayType([], A.findType(\"JSArray<List<Object>?>\"));\n"
-"    \$._nextCallback = null;\n"
-"    \$._lastCallback = null;\n"
-"    \$._lastPriorityCallback = null;\n"
-"    \$._isInCallbackLoop = false;\n"
-"    \$.Zone__current = B.Zone_jYP;\n"
-"    \$.Uri__cachedBaseString = \"\";\n"
-"    \$.Uri__cachedBaseUri = null;\n"
-"    \$.LogRecord__nextNumber = 0;\n"
-"    \$.Logger__loggers = A.LinkedHashMap_LinkedHashMap\$_empty(type\$.String, type\$.Logger);\n"
-"    \$._currentUriBase = null;\n"
-"    \$._current = null;\n"
-"    \$.RequireRestarter____lastKnownDigests = A._Cell\$named(\"_lastKnownDigests\");\n"
-"  })();\n"
-"  (function lazyInitializers() {\n"
-"    var _lazyFinal = hunkHelpers.lazyFinal;\n"
-"    _lazyFinal(\$, \"DART_CLOSURE_PROPERTY_NAME\", \"\$get\$DART_CLOSURE_PROPERTY_NAME\", () => A.getIsolateAffinityTag(\"_\$dart_dartClosure\"));\n"
-"    _lazyFinal(\$, \"DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME\", \"\$get\$DART_CLOSURE_DART_JSINTEROP_PROPERTY_NAME\", () => A.getIsolateAffinityTag(\"_\$dart_dartClosure_dartJSInterop\"));\n"
-"    _lazyFinal(\$, \"nullFuture\", \"\$get\$nullFuture\", () => B.Zone_jYP.run\$1\$1(new A.nullFuture_closure(), type\$.Future_void));\n"
-"    _lazyFinal(\$, \"_safeToStringHooks\", \"\$get\$_safeToStringHooks\", () => A._setArrayType([new J.JSArraySafeToStringHook()], A.findType(\"JSArray<SafeToStringHook>\")));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_noSuchMethodPattern\", \"\$get\$TypeErrorDecoder_noSuchMethodPattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({\n"
-"      toString: function() {\n"
-"        return \"\$receiver\$\";\n"
-"      }\n"
-"    })));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_notClosurePattern\", \"\$get\$TypeErrorDecoder_notClosurePattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({\$method\$: null,\n"
-"      toString: function() {\n"
-"        return \"\$receiver\$\";\n"
-"      }\n"
-"    })));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_nullCallPattern\", \"\$get\$TypeErrorDecoder_nullCallPattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(null)));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_nullLiteralCallPattern\", \"\$get\$TypeErrorDecoder_nullLiteralCallPattern\", () => A.TypeErrorDecoder_extractPattern(function() {\n"
-"      var \$argumentsExpr\$ = \"\$arguments\$\";\n"
-"      try {\n"
-"        null.\$method\$(\$argumentsExpr\$);\n"
-"      } catch (e) {\n"
-"        return e.message;\n"
-"      }\n"
-"    }()));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_undefinedCallPattern\", \"\$get\$TypeErrorDecoder_undefinedCallPattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(void 0)));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_undefinedLiteralCallPattern\", \"\$get\$TypeErrorDecoder_undefinedLiteralCallPattern\", () => A.TypeErrorDecoder_extractPattern(function() {\n"
-"      var \$argumentsExpr\$ = \"\$arguments\$\";\n"
-"      try {\n"
-"        (void 0).\$method\$(\$argumentsExpr\$);\n"
-"      } catch (e) {\n"
-"        return e.message;\n"
-"      }\n"
-"    }()));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_nullPropertyPattern\", \"\$get\$TypeErrorDecoder_nullPropertyPattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(null)));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_nullLiteralPropertyPattern\", \"\$get\$TypeErrorDecoder_nullLiteralPropertyPattern\", () => A.TypeErrorDecoder_extractPattern(function() {\n"
-"      try {\n"
-"        null.\$method\$;\n"
-"      } catch (e) {\n"
-"        return e.message;\n"
-"      }\n"
-"    }()));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_undefinedPropertyPattern\", \"\$get\$TypeErrorDecoder_undefinedPropertyPattern\", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(void 0)));\n"
-"    _lazyFinal(\$, \"TypeErrorDecoder_undefinedLiteralPropertyPattern\", \"\$get\$TypeErrorDecoder_undefinedLiteralPropertyPattern\", () => A.TypeErrorDecoder_extractPattern(function() {\n"
-"      try {\n"
-"        (void 0).\$method\$;\n"
-"      } catch (e) {\n"
-"        return e.message;\n"
-"      }\n"
-"    }()));\n"
-"    _lazyFinal(\$, \"_AsyncRun__scheduleImmediateClosure\", \"\$get\$_AsyncRun__scheduleImmediateClosure\", () => A._AsyncRun__initializeScheduleImmediate());\n"
-"    _lazyFinal(\$, \"Future__nullFuture\", \"\$get\$Future__nullFuture\", () => \$.\$get\$nullFuture());\n"
-"    _lazyFinal(\$, \"_rootDelegate\", \"\$get\$_rootDelegate\", () => A.ZoneDelegate\$_());\n"
-"    _lazyFinal(\$, \"_Utf8Decoder__reusableBuffer\", \"\$get\$_Utf8Decoder__reusableBuffer\", () => A.NativeUint8List_NativeUint8List(4096));\n"
-"    _lazyFinal(\$, \"_Utf8Decoder__decoder\", \"\$get\$_Utf8Decoder__decoder\", () => new A._Utf8Decoder__decoder_closure().call\$0());\n"
-"    _lazyFinal(\$, \"_Utf8Decoder__decoderNonfatal\", \"\$get\$_Utf8Decoder__decoderNonfatal\", () => new A._Utf8Decoder__decoderNonfatal_closure().call\$0());\n"
-"    _lazyFinal(\$, \"_Base64Decoder__inverseAlphabet\", \"\$get\$_Base64Decoder__inverseAlphabet\", () => A.NativeInt8List__create1(A._ensureNativeList(A._setArrayType([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2], type\$.JSArray_int))));\n"
-"    _lazyFinal(\$, \"_Uri__needsNoEncoding\", \"\$get\$_Uri__needsNoEncoding\", () => A.RegExp_RegExp(\"^[\\\\-\\\\.0-9A-Z_a-z~]*\$\", false));\n"
-"    _lazyFinal(\$, \"_hashSeed\", \"\$get\$_hashSeed\", () => A.objectHashCode(B.Type_Object_A4p));\n"
-"    _lazyFinal(\$, \"_jsBoxedDartObjectProperty\", \"\$get\$_jsBoxedDartObjectProperty\", () => Symbol(\"jsBoxedDartObjectProperty\"));\n"
-"    _lazyFinal(\$, \"Random__secureRandom\", \"\$get\$Random__secureRandom\", () => {\n"
-"      var t1 = new A._JSSecureRandom(new DataView(new ArrayBuffer(A._checkLength(8))));\n"
-"      t1._JSSecureRandom\$0();\n"
-"      return t1;\n"
-"    });\n"
-"    _lazyFinal(\$, \"_logger\", \"\$get\$_logger\", () => A.Logger_Logger(\"Utilities\"));\n"
-"    _lazyFinal(\$, \"Uuid__random\", \"\$get\$Uuid__random\", () => \$.\$get\$Random__secureRandom());\n"
-"    _lazyFinal(\$, \"Uuid__hex\", \"\$get\$Uuid__hex\", () => {\n"
-"      var i,\n"
-"        _list = J.JSArray_JSArray\$allocateGrowable(256, type\$.String);\n"
-"      for (i = 0; i < 256; ++i)\n"
-"        _list[i] = B.JSString_methods.padLeft\$2(B.JSInt_methods.toRadixString\$1(i, 16), 2, \"0\");\n"
-"      return _list;\n"
-"    });\n"
-"    _lazyFinal(\$, \"BaseRequest__tokenRE\", \"\$get\$BaseRequest__tokenRE\", () => A.RegExp_RegExp(\"^[\\\\w!#%&'*+\\\\-.^`|~]+\$\", false));\n"
-"    _lazyFinal(\$, \"_escapedChar\", \"\$get\$_escapedChar\", () => A.RegExp_RegExp('[\"\\\\x00-\\\\x1F\\\\x7F]', false));\n"
-"    _lazyFinal(\$, \"token\", \"\$get\$token\", () => A.RegExp_RegExp('[^()<>@,;:\"\\\\\\\\/[\\\\]?={} \\\\t\\\\x00-\\\\x1F\\\\x7F]+', false));\n"
-"    _lazyFinal(\$, \"_lws\", \"\$get\$_lws\", () => A.RegExp_RegExp(\"(?:\\\\r\\\\n)?[ \\\\t]+\", false));\n"
-"    _lazyFinal(\$, \"_quotedString\", \"\$get\$_quotedString\", () => A.RegExp_RegExp('\"(?:[^\"\\\\x00-\\\\x1F\\\\x7F\\\\\\\\]|\\\\\\\\.)*\"', false));\n"
-"    _lazyFinal(\$, \"_quotedPair\", \"\$get\$_quotedPair\", () => A.RegExp_RegExp(\"\\\\\\\\(.)\", false));\n"
-"    _lazyFinal(\$, \"nonToken\", \"\$get\$nonToken\", () => A.RegExp_RegExp('[()<>@,;:\"\\\\\\\\/\\\\[\\\\]?={} \\\\t\\\\x00-\\\\x1F\\\\x7F]', false));\n"
-"    _lazyFinal(\$, \"whitespace\", \"\$get\$whitespace\", () => A.RegExp_RegExp(\"(?:\" + \$.\$get\$_lws().pattern + \")*\", false));\n"
-"    _lazyFinal(\$, \"Logger_root\", \"\$get\$Logger_root\", () => A.Logger_Logger(\"\"));\n"
-"    _lazyFinal(\$, \"context\", \"\$get\$context\", () => new A.Context(\$.\$get\$Style_platform(), null));\n"
-"    _lazyFinal(\$, \"Style_posix\", \"\$get\$Style_posix\", () => new A.PosixStyle(A.RegExp_RegExp(\"/\", false), A.RegExp_RegExp(\"[^/]\$\", false), A.RegExp_RegExp(\"^/\", false)));\n"
-"    _lazyFinal(\$, \"Style_windows\", \"\$get\$Style_windows\", () => new A.WindowsStyle(A.RegExp_RegExp(\"[/\\\\\\\\]\", false), A.RegExp_RegExp(\"[^/\\\\\\\\]\$\", false), A.RegExp_RegExp(\"^(\\\\\\\\\\\\\\\\[^\\\\\\\\]+\\\\\\\\[^\\\\\\\\/]+|[a-zA-Z]:[/\\\\\\\\])\", false), A.RegExp_RegExp(\"^[/\\\\\\\\](?![/\\\\\\\\])\", false)));\n"
-"    _lazyFinal(\$, \"Style_url\", \"\$get\$Style_url\", () => new A.UrlStyle(A.RegExp_RegExp(\"/\", false), A.RegExp_RegExp(\"(^[a-zA-Z][-+.a-zA-Z\\\\d]*://|[^/])\$\", false), A.RegExp_RegExp(\"[a-zA-Z][-+.a-zA-Z\\\\d]*://[^/]*\", false), A.RegExp_RegExp(\"^/\", false)));\n"
-"    _lazyFinal(\$, \"Style_platform\", \"\$get\$Style_platform\", () => A.Style__getPlatformStyle());\n"
-"    _lazyFinal(\$, \"_requestPool\", \"\$get\$_requestPool\", () => {\n"
-"      var t4,\n"
-"        t1 = A.findType(\"Completer<PoolResource>\"),\n"
-"        t2 = A.ListQueue\$(t1),\n"
-"        t3 = A.ListQueue\$(type\$.void_Function);\n"
-"      t1 = A.ListQueue\$(t1);\n"
-"      t4 = A.Completer_Completer(type\$.void);\n"
-"      return new A.Pool(t2, t3, t1, 1000, new A.AsyncMemoizer(t4, A.findType(\"AsyncMemoizer<~>\")));\n"
-"    });\n"
-"    _lazyFinal(\$, \"_noncePattern\", \"\$get\$_noncePattern\", () => A.RegExp_RegExp(\"^[\\\\w+/_-]+[=]{0,2}\$\", false));\n"
-"    _lazyFinal(\$, \"_createScript\", \"\$get\$_createScript\", () => new A._createScript_closure().call\$0());\n"
-"  })();\n"
-"  (function nativeSupport() {\n"
-"    !function() {\n"
-"      var intern = function(s) {\n"
-"        var o = {};\n"
-"        o[s] = 1;\n"
-"        return Object.keys(hunkHelpers.convertToFastObject(o))[0];\n"
-"      };\n"
-"      init.getIsolateTag = function(name) {\n"
-"        return intern(\"___dart_\" + name + init.isolateTag);\n"
-"      };\n"
-"      var tableProperty = \"___dart_isolate_tags_\";\n"
-"      var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));\n"
-"      var rootProperty = \"_ZxYxX\";\n"
-"      for (var i = 0;; i++) {\n"
-"        var property = intern(rootProperty + \"_\" + i + \"_\");\n"
-"        if (!(property in usedProperties)) {\n"
-"          usedProperties[property] = 1;\n"
-"          init.isolateTag = property;\n"
-"          break;\n"
-"        }\n"
-"      }\n"
-"      init.dispatchPropertyName = init.getIsolateTag(\"dispatch_record\");\n"
-"    }();\n"
-"    hunkHelpers.setOrUpdateInterceptorsByTag({SharedArrayBuffer: A.NativeByteBuffer, ArrayBuffer: A.NativeArrayBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List});\n"
-"    hunkHelpers.setOrUpdateLeafTags({SharedArrayBuffer: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false});\n"
-"    A.NativeTypedArray.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A.NativeTypedArrayOfDouble.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"    A.NativeTypedArrayOfInt.\$nativeSuperclassTag = \"ArrayBufferView\";\n"
-"  })();\n"
-"  Function.prototype.call\$1 = function(a) {\n"
-"    return this(a);\n"
-"  };\n"
-"  Function.prototype.call\$2 = function(a, b) {\n"
-"    return this(a, b);\n"
-"  };\n"
-"  Function.prototype.call\$0 = function() {\n"
-"    return this();\n"
-"  };\n"
-"  Function.prototype.call\$1\$4 = function(a, b, c, d) {\n"
-"    return this(a, b, c, d);\n"
-"  };\n"
-"  Function.prototype.call\$5 = function(a, b, c, d, e) {\n"
-"    return this(a, b, c, d, e);\n"
-"  };\n"
-"  Function.prototype.call\$3 = function(a, b, c) {\n"
-"    return this(a, b, c);\n"
-"  };\n"
-"  Function.prototype.call\$4 = function(a, b, c, d) {\n"
-"    return this(a, b, c, d);\n"
-"  };\n"
-"  Function.prototype.call\$3\$6 = function(a, b, c, d, e, f) {\n"
-"    return this(a, b, c, d, e, f);\n"
-"  };\n"
-"  Function.prototype.call\$3\$4 = function(a, b, c, d) {\n"
-"    return this(a, b, c, d);\n"
-"  };\n"
-"  Function.prototype.call\$2\$5 = function(a, b, c, d, e) {\n"
-"    return this(a, b, c, d, e);\n"
-"  };\n"
-"  Function.prototype.call\$2\$4 = function(a, b, c, d) {\n"
-"    return this(a, b, c, d);\n"
-"  };\n"
-"  Function.prototype.call\$1\$1 = function(a) {\n"
-"    return this(a);\n"
-"  };\n"
-"  Function.prototype.call\$2\$0 = function() {\n"
-"    return this();\n"
-"  };\n"
-"  Function.prototype.call\$1\$0 = function() {\n"
-"    return this();\n"
-"  };\n"
-"  convertAllToFastObject(holders);\n"
-"  convertToFastObject(\$);\n"
-"  (function(callback) {\n"
-"    if (typeof document === \"undefined\") {\n"
-"      callback(null);\n"
-"      return;\n"
-"    }\n"
-"    if (typeof document.currentScript != \"undefined\") {\n"
-"      callback(document.currentScript);\n"
-"      return;\n"
-"    }\n"
-"    var scripts = document.scripts;\n"
-"    function onLoad(event) {\n"
-"      for (var i = 0; i < scripts.length; ++i) {\n"
-"        scripts[i].removeEventListener(\"load\", onLoad, false);\n"
-"      }\n"
-"      callback(event.target);\n"
-"    }\n"
-"    for (var i = 0; i < scripts.length; ++i) {\n"
-"      scripts[i].addEventListener(\"load\", onLoad, false);\n"
-"    }\n"
-"  })(function(currentScript) {\n"
-"    init.currentScript = currentScript;\n"
-"    var callMain = A.main;\n"
-"    if (typeof dartMainRunner === \"function\") {\n"
-"      dartMainRunner(callMain, []);\n"
-"    } else {\n"
-"      callMain([]);\n"
-"    }\n"
-"  });\n"
-"})();\n"
-"";
-
-const clientDartHash = 'adc2ad13931a677a2f754851766f79b58e892717d92b7c441ecf416e964a0f24';
diff --git a/dwds/lib/src/handlers/injector.dart b/dwds/lib/src/handlers/injector.dart
deleted file mode 100644
index 5523a43..0000000
--- a/dwds/lib/src/handlers/injector.dart
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:crypto/crypto.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/handlers/injected_client_js.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/version.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-
-/// File extension that build_web_compilers will place the
-/// [entrypointExtensionMarker] in.
-const bootstrapJsExtension = '.bootstrap.js';
-
-/// Marker placed by build_web_compilers for where to put injected JS code.
-const entrypointExtensionMarker = '/* ENTRYPOINT_EXTENTION_MARKER */';
-
-/// Marker placed by build_web_compilers for where to put injected JS code.
-const mainExtensionMarker = '/* MAIN_EXTENSION_MARKER */';
-
-const _clientScript = 'dwds/src/injected/client';
-
-/// This class is responsible for modifying the served JavaScript files
-/// to include the injected DWDS client, enabling debugging capabilities
-/// and source mapping when running in a browser environment.
-class DwdsInjector {
-  final Future<String>? _extensionUri;
-  final _devHandlerPaths = StreamController<String>();
-  final _logger = Logger('DwdsInjector');
-
-  DwdsInjector({this._extensionUri});
-
-  /// Returns the embedded dev handler paths.
-  ///
-  /// This will be next to the requested entrypoints.
-  Stream<String> get devHandlerPaths => _devHandlerPaths.stream;
-
-  Middleware get middleware => (innerHandler) {
-    return (Request request) async {
-      if (request.url.path.endsWith('$_clientScript.js')) {
-        return Response.ok(
-          injectedClientJs,
-          headers: {
-            HttpHeaders.contentTypeHeader: 'application/javascript',
-            HttpHeaders.cacheControlHeader: 'no-cache',
-          },
-        );
-      } else if (request.url.path.endsWith(bootstrapJsExtension)) {
-        final ifNoneMatch = request.headers[HttpHeaders.ifNoneMatchHeader];
-        if (ifNoneMatch != null) {
-          // Disable caching of the inner handler by manually modifying the
-          // if-none-match header before forwarding the request.
-          request = request.change(
-            headers: {HttpHeaders.ifNoneMatchHeader: '$ifNoneMatch\$injected'},
-          );
-        }
-        final response = await innerHandler(request);
-        if (response.statusCode == HttpStatus.notFound) return response;
-        var body = await response.readAsString();
-        var etag = response.headers[HttpHeaders.etagHeader];
-        final newHeaders = Map.of(response.headers);
-        if (body.startsWith(entrypointExtensionMarker)) {
-          // The requestedUri contains the hostname and port which guarantees
-          // uniqueness.
-          final requestedUri = request.requestedUri;
-          final appId = _base64Md5('$requestedUri');
-          var scheme = request.requestedUri.scheme;
-          if (!globalToolConfiguration.debugSettings.useSseForInjectedClient) {
-            // Switch http->ws and https->wss.
-            scheme = scheme.replaceFirst('http', 'ws');
-          }
-          final requestedUriBase =
-              '$scheme'
-              '://${request.requestedUri.authority}';
-          var devHandlerPath = '\$dwdsSseHandler';
-          final subPath = request.url.pathSegments.toList()..removeLast();
-          if (subPath.isNotEmpty) {
-            devHandlerPath = '${subPath.join('/')}/$devHandlerPath';
-          }
-          _logger.info('Received request for entrypoint at $requestedUri');
-          devHandlerPath = '$requestedUriBase/$devHandlerPath';
-          _devHandlerPaths.add(devHandlerPath);
-          final entrypoint = request.url.path;
-          await globalToolConfiguration.loadStrategy.trackEntrypoint(
-            entrypoint,
-          );
-          // Always inject the debugging client and hoist the main function.
-          body = await _injectClientAndHoistMain(
-            body,
-            appId,
-            devHandlerPath,
-            entrypoint,
-            await _extensionUri,
-          );
-          body += await globalToolConfiguration.loadStrategy.bootstrapFor(
-            entrypoint,
-          );
-          _logger.info(
-            'Injected debugging metadata for '
-            'entrypoint at $requestedUri',
-          );
-          etag = _base64Md5(body);
-          newHeaders[HttpHeaders.etagHeader] = etag;
-        }
-        if (ifNoneMatch == etag) {
-          return Response.notModified(headers: newHeaders);
-        }
-        return response.change(body: body, headers: newHeaders);
-      } else {
-        final loadResponse = await globalToolConfiguration.loadStrategy.handler(
-          request,
-        );
-        if (loadResponse.statusCode != HttpStatus.notFound) {
-          return loadResponse;
-        }
-        return innerHandler(request);
-      }
-    };
-  };
-}
-
-/// Returns the provided body with the main function hoisted into a global
-/// variable and a snippet of JS that loads the injected client.
-Future<String> _injectClientAndHoistMain(
-  String body,
-  String appId,
-  String devHandlerPath,
-  String entrypointPath,
-  String? extensionUri,
-) async {
-  final bodyLines = body.split('\n');
-  final extensionIndex = bodyLines.indexWhere(
-    (line) => line.contains(mainExtensionMarker),
-  );
-  var result = bodyLines.sublist(0, extensionIndex).join('\n');
-  // The line after the marker calls `main`. We prevent `main` from
-  // being called and make it runnable through a global variable.
-  final mainFunction = bodyLines[extensionIndex + 1]
-      .replaceAll('main();', 'main')
-      .trim();
-  // We inject the client in the entry point module as the client expects the
-  // application to be in a ready state, that is the main function is hoisted
-  // and the Dart SDK is loaded.
-  final injectedClientSnippet = await _injectedClientSnippet(
-    appId,
-    devHandlerPath,
-    entrypointPath,
-    extensionUri,
-  );
-  result +=
-      '''
-  // Injected by dwds for debugging support.
-  if(!window.\$dwdsInitialized) {
-    window.\$dwdsInitialized = true;
-    window.\$dartMainTearOffs = [$mainFunction];
-    window.\$dartRunMain = function() {
-      window.\$dartMainExecuted = true;
-      window.\$dartMainTearOffs.forEach(function(main){
-         main();
-      });
-    }
-    $injectedClientSnippet
-  } else {
-    if(window.\$dartMainExecuted){
-     $mainFunction();
-    }else {
-     window.\$dartMainTearOffs.push($mainFunction);
-    }
-  }
-  ''';
-  result += bodyLines.sublist(extensionIndex + 2).join('\n');
-  return result;
-}
-
-/// JS snippet which includes global variables required for debugging.
-Future<String> _injectedClientSnippet(
-  String appId,
-  String devHandlerPath,
-  String entrypointPath,
-  String? extensionUri,
-) async {
-  final loadStrategy = globalToolConfiguration.loadStrategy;
-  final buildSettings = loadStrategy.buildSettings;
-  final appMetadata = globalToolConfiguration.appMetadata;
-  final debugSettings = globalToolConfiguration.debugSettings;
-  final reloadedSourcesPath = loadStrategy is ReloadableLoadStrategy
-      ? 'window.\$reloadedSourcesPath = "${loadStrategy.reloadedSourcesUri}";\n'
-      : '';
-
-  var injectedBody =
-      'window.\$dartAppId = "$appId";\n'
-      'window.\$dartReloadConfiguration = '
-      '"${loadStrategy.reloadConfiguration}";\n'
-      'window.\$dartModuleStrategy = "${loadStrategy.id}";\n'
-      'window.\$loadModuleConfig = ${loadStrategy.loadModuleSnippet};\n'
-      'window.\$dwdsVersion = "$packageVersion";\n'
-      'window.\$dwdsDevHandlerPath = "$devHandlerPath";\n'
-      'window.\$dwdsEnableDevToolsLaunch = '
-      '${debugSettings.enableDevToolsLaunch};\n'
-      'window.\$dartEntrypointPath = "$entrypointPath";\n'
-      'window.\$dartEmitDebugEvents = ${debugSettings.emitDebugEvents};\n'
-      'window.\$isInternalBuild = ${appMetadata.isInternalBuild};\n'
-      'window.\$isFlutterApp = ${buildSettings.isFlutterApp};\n'
-      '$reloadedSourcesPath'
-      '${loadStrategy.loadClientSnippet(_clientScript)}';
-
-  if (extensionUri != null) {
-    injectedBody += 'window.\$dartExtensionUri = "$extensionUri";\n';
-  }
-
-  final workspaceName = appMetadata.workspaceName;
-  if (workspaceName != null) {
-    injectedBody += 'window.\$dartWorkspaceName = "$workspaceName";\n';
-  }
-
-  return injectedBody;
-}
-
-final _utf8FusedConverter = utf8.encoder.fuse(md5);
-
-String _base64Md5(String input) {
-  final bytes = _utf8FusedConverter.convert(input).bytes;
-  return base64.encode(bytes);
-}
diff --git a/dwds/lib/src/handlers/socket_connections.dart b/dwds/lib/src/handlers/socket_connections.dart
deleted file mode 100644
index b127f35..0000000
--- a/dwds/lib/src/handlers/socket_connections.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:async/async.dart';
-import 'package:shelf/shelf.dart';
-import 'package:shelf_web_socket/shelf_web_socket.dart';
-import 'package:sse/server/sse_handler.dart';
-import 'package:web_socket_channel/web_socket_channel.dart';
-
-/// An individual (transport-agnostic) bidirectional socket connection.
-abstract class SocketConnection {
-  /// Whether this connection is currently in the KeepAlive timeout period.
-  bool get isInKeepAlivePeriod;
-
-  /// Messages added to the sink must be JSON encodable.
-  StreamSink<dynamic> get sink;
-
-  Stream<String> get stream;
-
-  /// Immediately close the connection, ignoring any keepAlive period.
-  void shutdown();
-}
-
-/// A handler that accepts (transport-agnostic) bidirectional socket
-/// connections.
-abstract class SocketHandler {
-  StreamQueue<SocketConnection> get connections;
-  FutureOr<Response> handler(Request request);
-  void shutdown();
-}
-
-/// An implementation of [SocketConnection] that users server-sent events (SSE)
-/// and HTTP POSTS for bidirectional communication by wrapping an
-/// [SseConnection].
-class SseSocketConnection extends SocketConnection {
-  final SseConnection _connection;
-
-  SseSocketConnection(this._connection);
-
-  @override
-  bool get isInKeepAlivePeriod => _connection.isInKeepAlivePeriod;
-  @override
-  StreamSink<dynamic> get sink => _connection.sink;
-  @override
-  Stream<String> get stream => _connection.stream;
-  @override
-  void shutdown() => _connection.shutdown();
-}
-
-/// An implementation of [SocketHandler] that accepts server-sent events (SSE)
-/// connections and wraps them in an [SseSocketConnection].
-class SseSocketHandler extends SocketHandler {
-  final SseHandler _sseHandler;
-  final StreamController<SseSocketConnection> _connectionsStream =
-      StreamController<SseSocketConnection>();
-  StreamQueue<SseSocketConnection>? _connectionsStreamQueue;
-
-  SseSocketHandler(this._sseHandler) {
-    unawaited(() async {
-      final injectedConnections = _sseHandler.connections;
-      while (await injectedConnections.hasNext) {
-        _connectionsStream.add(
-          SseSocketConnection(await injectedConnections.next),
-        );
-      }
-    }());
-  }
-
-  @override
-  StreamQueue<SseSocketConnection> get connections =>
-      _connectionsStreamQueue ??= StreamQueue(_connectionsStream.stream);
-  @override
-  FutureOr<Response> handler(Request request) => _sseHandler.handler(request);
-  @override
-  void shutdown() => _sseHandler.shutdown();
-}
-
-/// An implementation of [SocketConnection] that uses WebSockets for
-/// communication by wrapping [WebSocketChannel].
-/// by wrapping [WebSocketChannel].
-class WebSocketConnection extends SocketConnection {
-  final WebSocketChannel _channel;
-  WebSocketConnection(this._channel);
-
-  @override
-  bool get isInKeepAlivePeriod => false;
-
-  @override
-  StreamSink<dynamic> get sink => _channel.sink;
-
-  @override
-  Stream<String> get stream => _channel.stream.map((dynamic o) => o.toString());
-
-  @override
-  void shutdown() => _channel.sink.close();
-}
-
-/// An implementation of [SocketHandler] that accepts WebSocket connections and
-/// wraps them in a [WebSocketConnection].
-class WebSocketSocketHandler extends SocketHandler {
-  late Handler _handler;
-  final StreamController<WebSocketConnection> _connectionsStream =
-      StreamController<WebSocketConnection>();
-  StreamQueue<WebSocketConnection>? _connectionsStreamQueue;
-
-  WebSocketSocketHandler() {
-    _handler = webSocketHandler(
-      (WebSocketChannel channel, _) =>
-          _connectionsStream.add(WebSocketConnection(channel)),
-    );
-  }
-
-  @override
-  StreamQueue<WebSocketConnection> get connections =>
-      _connectionsStreamQueue ??= StreamQueue(_connectionsStream.stream);
-
-  @override
-  FutureOr<Response> handler(Request request) => _handler(request);
-
-  @override
-  void shutdown() {}
-}
diff --git a/dwds/lib/src/loaders/build_runner_strategy_provider.dart b/dwds/lib/src/loaders/build_runner_strategy_provider.dart
deleted file mode 100644
index ba776bd..0000000
--- a/dwds/lib/src/loaders/build_runner_strategy_provider.dart
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/loaders/ddc_library_bundle.dart';
-import 'package:dwds/src/loaders/require.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-
-/// Provides a [RequireStrategy] suitable for use with `package:build_runner`.
-class BuildRunnerRequireStrategyProvider with BuildRunnerStrategyProviderMixin {
-  @override
-  final _logger = Logger('BuildRunnerRequireStrategyProvider');
-
-  @override
-  final ReloadConfiguration _configuration;
-  @override
-  final AssetReader _assetReader;
-  @override
-  final BuildSettings _buildSettings;
-  @override
-  final String? _packageConfigPath;
-
-  late final RequireStrategy _requireStrategy = RequireStrategy(
-    _configuration,
-    _moduleProvider,
-    _digestsProvider,
-    _moduleForServerPath,
-    _serverPathForModule,
-    _sourceMapPathForModule,
-    _serverPathForAppUri,
-    _moduleInfoForProvider,
-    _assetReader,
-    _buildSettings,
-    packageConfigPath: _packageConfigPath,
-  );
-
-  BuildRunnerRequireStrategyProvider(
-    this._configuration,
-    this._assetReader,
-    this._buildSettings, {
-    this._packageConfigPath,
-  });
-
-  RequireStrategy get strategy => _requireStrategy;
-}
-
-/// Provides a [DdcLibraryBundleStrategy] suitable for use with
-/// `package:build_runner`.
-class BuildRunnerDdcLibraryBundleStrategyProvider
-    with BuildRunnerStrategyProviderMixin {
-  @override
-  final _logger = Logger('BuildRunnerDdcLibraryBundleStrategyProvider');
-
-  @override
-  final ReloadConfiguration _configuration;
-  @override
-  final AssetReader _assetReader;
-  @override
-  final BuildSettings _buildSettings;
-  @override
-  final String? _packageConfigPath;
-
-  late final DdcLibraryBundleStrategy _strategy = DdcLibraryBundleStrategy(
-    _configuration,
-    _moduleProvider,
-    _digestsProvider,
-    _moduleForServerPath,
-    _serverPathForModule,
-    _sourceMapPathForModule,
-    _serverPathForAppUri,
-    _moduleInfoForProvider,
-    _assetReader,
-    _buildSettings,
-    (path) => null, // g3RelativePath
-    packageConfigPath: _packageConfigPath,
-    injectScriptLoad: injectScriptLoad,
-    reloadedSourcesUri: _reloadedSourcesUri,
-  );
-
-  /// The [Uri] of the file that contains a JSONified list of maps which follows
-  /// the following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  ///
-  /// This is needed for hot reloads and restarts in order to tell the module
-  /// loader what files need to be loaded and what libraries need to be
-  /// reloaded. The contents of the file this [Uri] points to should be updated
-  /// whenever a hot reload or hot restart is executed.
-  final Uri? _reloadedSourcesUri;
-
-  /// When enabled, injects the script loader into the bootstrapper from
-  /// within DWDS. This is used throughout Flutter Web but may be disabled
-  /// for specific workflows where the script loader is managed separately.
-  final bool injectScriptLoad;
-
-  BuildRunnerDdcLibraryBundleStrategyProvider(
-    this._configuration,
-    this._assetReader,
-    this._buildSettings, {
-    this._packageConfigPath,
-    this._reloadedSourcesUri,
-    this.injectScriptLoad = false,
-  });
-
-  DdcLibraryBundleStrategy get strategy => _strategy;
-}
-
-mixin BuildRunnerStrategyProviderMixin {
-  Logger get _logger;
-  // ignore: unused_element
-  ReloadConfiguration get _configuration;
-  // ignore: unused_element
-  AssetReader get _assetReader;
-  // ignore: unused_element
-  BuildSettings get _buildSettings;
-  // ignore: unused_element
-  String? get _packageConfigPath;
-
-  Future<Map<String, String>> _digestsProvider(
-    MetadataProvider metadataProvider,
-  ) async {
-    final modules = await metadataProvider.modulePathToModule;
-
-    final digestsPath = metadataProvider.entrypoint.replaceAll(
-      '.dart.bootstrap.js',
-      '.digests',
-    );
-    final body = await _assetReader.metadataContents(digestsPath);
-    if (body == null) {
-      throw StateError('Could not read digests at path: $digestsPath');
-    }
-    final digests = json.decode(body) as Map<String, dynamic>;
-
-    for (final key in digests.keys) {
-      if (!modules.containsKey(key)) {
-        _logger.warning('Digest key $key is not a module name.');
-      }
-    }
-
-    return {
-      for (final entry in digests.entries)
-        if (modules.containsKey(entry.key))
-          modules[entry.key]!: entry.value as String,
-    };
-  }
-
-  Future<Map<String, String>> _moduleProvider(
-    MetadataProvider metadataProvider,
-  ) async => (await metadataProvider.moduleToModulePath).map(
-    (key, value) =>
-        MapEntry(key, stripTopLevelDirectory(removeJsExtension(value))),
-  );
-
-  Future<String?> _moduleForServerPath(
-    MetadataProvider metadataProvider,
-    String serverPath,
-  ) async {
-    final modulePathToModule = await metadataProvider.modulePathToModule;
-    final relativePath = stripLeadingSlashes(serverPath);
-    for (final e in modulePathToModule.entries) {
-      if (stripTopLevelDirectory(e.key) == relativePath) {
-        return e.value;
-      }
-    }
-    return null;
-  }
-
-  Future<String?> _serverPathForModule(
-    MetadataProvider metadataProvider,
-    String module,
-  ) async {
-    final modulePath = (await metadataProvider.moduleToModulePath)[module];
-    return modulePath == null ? null : stripTopLevelDirectory(modulePath);
-  }
-
-  Future<String?> _sourceMapPathForModule(
-    MetadataProvider metadataProvider,
-    String module,
-  ) async {
-    final sourceMapPath = (await metadataProvider.moduleToSourceMap)[module];
-    return sourceMapPath == null ? null : stripTopLevelDirectory(sourceMapPath);
-  }
-
-  String? _serverPathForAppUri(String appUrl) {
-    final appUri = Uri.parse(appUrl);
-    if (appUri.isScheme('org-dartlang-app')) {
-      // We skip the root from which we are serving.
-      return appUri.pathSegments.skip(1).join('/');
-    }
-    if (appUri.isScheme('package')) {
-      return '/packages/${appUri.path}';
-    }
-    return null;
-  }
-
-  Future<Map<String, ModuleInfo>> _moduleInfoForProvider(
-    MetadataProvider metadataProvider,
-  ) async {
-    final modules = await metadataProvider.modules;
-    final result = <String, ModuleInfo>{};
-    for (final module in modules) {
-      final serverPath = await _serverPathForModule(metadataProvider, module);
-      if (serverPath == null) {
-        _logger.warning('No module info found for module $module');
-      } else {
-        result[module] = ModuleInfo(
-          // TODO: Save locations of full kernel files in ddc metadata.
-          // Issue: https://github.com/dart-lang/sdk/issues/43684
-          // TODO: Change these to URIs instead of paths when the SDK supports
-          // it.
-          p.setExtension(serverPath, '.full.dill'),
-          p.setExtension(serverPath, '.dill'),
-        );
-      }
-    }
-    return result;
-  }
-}
diff --git a/dwds/lib/src/loaders/ddc.dart b/dwds/lib/src/loaders/ddc.dart
deleted file mode 100644
index a1b18f6..0000000
--- a/dwds/lib/src/loaders/ddc.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-
-import 'package:dwds/src/debugging/dart_runtime_debugger.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:path/path.dart' as p;
-import 'package:shelf/shelf.dart';
-
-String removeJsExtension(String path) =>
-    path.endsWith('.js') ? p.withoutExtension(path) : path;
-
-String addJsExtension(String path) => '$path.js';
-
-/// JavaScript snippet to determine the base URL of the current path.
-const baseUrlScript = '''
-var baseUrl = (function () {
-  // Attempt to detect --precompiled mode for tests, and set the base url
-  // appropriately, otherwise set it to '/'.
-  var pathParts = location.pathname.split("/");
-  if (pathParts[0] == "") {
-    pathParts.shift();
-  }
-  if (pathParts.length > 1 && pathParts[1] == "test") {
-    return "/" + pathParts.slice(0, 2).join("/") + "/";
-  }
-  // Attempt to detect base url using <base href> html tag
-  // base href should start and end with "/"
-  if (typeof document !== 'undefined') {
-    var el = document.getElementsByTagName('base');
-    if (el && el[0] && el[0].getAttribute("href") && el[0].getAttribute
-    ("href").startsWith("/") && el[0].getAttribute("href").endsWith("/")){
-      return el[0].getAttribute("href");
-    }
-  }
-  // return default value
-  return "/";
-}());
-''';
-
-/// A load strategy for the DDC module system.
-class DdcStrategy extends LoadStrategy {
-  @override
-  final ReloadConfiguration reloadConfiguration;
-
-  /// Returns a map of module name to corresponding server path (excluding .js)
-  /// for the provided Dart application entrypoint.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc
-  ///   packages/path/path -> packages/path/path.ddc
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  _moduleProvider;
-
-  /// Returns a map of module name to corresponding digest value.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> 8363b363f74b41cac955024ab8b94a3f
-  ///   packages/path/path -> d348c2a4647e998011fe305f74f22961
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  // ignore: unused_field
-  _digestsProvider;
-
-  /// Returns the module for the corresponding server path.
-  ///
-  /// For example:
-  ///
-  /// /packages/path/path.ddc.js -> packages/path/path
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String sourcePath,
-  )
-  _moduleForServerPath;
-
-  /// Returns a map from module id to module info.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> {main.ddc.full.dill, main.ddc.dill}
-  ///
-  final Future<Map<String, ModuleInfo>> Function(
-    MetadataProvider metadataProvider,
-  )
-  _moduleInfoForProvider;
-
-  /// Returns the server path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String module,
-  )
-  _serverPathForModule;
-
-  /// Returns the source map path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js.map
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String module,
-  )
-  _sourceMapPathForModule;
-
-  /// Returns the server path for the app uri.
-  ///
-  /// For example:
-  ///
-  ///   org-dartlang-app://web/main.dart -> main.dart
-  ///
-  /// Will return `null` if the provided uri is not
-  /// an app URI.
-  final String? Function(String appUri) _serverPathForAppUri;
-
-  /// Returns the relative path in google3, determined by the `absolutePath`.
-  ///
-  /// Returns `null` if not a google3 app.
-  final String? Function(String absolutePath) _g3RelativePath;
-
-  final BuildSettings _buildSettings;
-
-  DdcStrategy(
-    this.reloadConfiguration,
-    this._moduleProvider,
-    this._digestsProvider,
-    this._moduleForServerPath,
-    this._serverPathForModule,
-    this._sourceMapPathForModule,
-    this._serverPathForAppUri,
-    this._moduleInfoForProvider,
-    AssetReader assetReader,
-    this._buildSettings,
-    this._g3RelativePath, {
-    super.packageConfigPath,
-  }) : super(assetReader);
-
-  @override
-  Handler get handler => (request) async {
-    // TODO(markzipan): Implement a hot restarter that uses digests for
-    // the DDC module system.
-    return Response.notFound(request.url.toString());
-  };
-
-  @override
-  String get id => 'ddc';
-
-  @override
-  String get moduleFormat => 'ddc';
-
-  @override
-  String get loadLibrariesModule => 'ddc_module_loader.ddk.js';
-
-  @override
-  String get loadModuleSnippet => 'dart_library.import';
-
-  @override
-  late final DartRuntimeDebugger dartRuntimeDebugger = DartRuntimeDebugger(
-    loadStrategy: this,
-    useLibraryBundleExpression: false,
-  );
-
-  @override
-  BuildSettings get buildSettings => _buildSettings;
-
-  @override
-  Future<String> bootstrapFor(String entrypoint) async =>
-      await _ddcLoaderSetup(entrypoint);
-
-  @override
-  String loadClientSnippet(String clientScript) =>
-      'window.\$dartLoader.forceLoadModule("$clientScript");\n';
-
-  Future<String> _ddcLoaderSetup(String entrypoint) async {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    final modulePaths = await _moduleProvider(metadataProvider);
-    final scripts = <Map<String, String?>>[];
-    modulePaths.forEach((name, path) {
-      scripts.add(<String, String>{'src': '$path.js', 'id': name});
-    });
-    return '''
-$baseUrlScript
-var scripts = ${const JsonEncoder.withIndent(" ").convert(scripts)};
-window.\$dartLoader.loadConfig.loadScriptFn = function(loader) {
-  loader.addScriptsToQueue(scripts, null);
-  loader.loadEnqueuedModules();
-};
-window.\$dartLoader.loader.nextAttempt();
-''';
-  }
-
-  @override
-  Future<String?> moduleForServerPath(String entrypoint, String serverPath) =>
-      _moduleForServerPath(metadataProviderFor(entrypoint), serverPath);
-
-  @override
-  Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
-      _moduleInfoForProvider(metadataProviderFor(entrypoint));
-
-  @override
-  Future<String?> serverPathForModule(String entrypoint, String module) =>
-      _serverPathForModule(metadataProviderFor(entrypoint), module);
-
-  @override
-  Future<String?> sourceMapPathForModule(String entrypoint, String module) =>
-      _sourceMapPathForModule(metadataProviderFor(entrypoint), module);
-
-  @override
-  String? serverPathForAppUri(String appUri) => _serverPathForAppUri(appUri);
-
-  @override
-  String? g3RelativePath(String absolutePath) => _g3RelativePath(absolutePath);
-}
diff --git a/dwds/lib/src/loaders/ddc_library_bundle.dart b/dwds/lib/src/loaders/ddc_library_bundle.dart
deleted file mode 100644
index 2404fb9..0000000
--- a/dwds/lib/src/loaders/ddc_library_bundle.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2024, 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:convert';
-
-import 'package:dwds/src/debugging/dart_runtime_debugger.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/loaders/ddc.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:shelf/shelf.dart';
-
-// TODO(srujzs): This is mostly a copy of `DdcStrategy`. Some of the
-// functionality in here may not make sense with the library bundle format yet.
-class DdcLibraryBundleStrategy extends LoadStrategy
-    implements ReloadableLoadStrategy {
-  @override
-  final ReloadConfiguration reloadConfiguration;
-
-  /// Returns a map of module name to corresponding server path (excluding .js)
-  /// for the provided Dart application entrypoint.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc
-  ///   packages/path/path -> packages/path/path.ddc
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  _moduleProvider;
-
-  /// Returns a map of module name to corresponding digest value.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> 8363b363f74b41cac955024ab8b94a3f
-  ///   packages/path/path -> d348c2a4647e998011fe305f74f22961
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  // ignore: unused_field
-  _digestsProvider;
-
-  /// Returns the module for the corresponding server path.
-  ///
-  /// For example:
-  ///
-  /// /packages/path/path.ddc.js -> packages/path/path
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String sourcePath,
-  )
-  _moduleForServerPath;
-
-  /// Returns a map from module id to module info.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> {main.ddc.full.dill, main.ddc.dill}
-  ///
-  final Future<Map<String, ModuleInfo>> Function(
-    MetadataProvider metadataProvider,
-  )
-  _moduleInfoForProvider;
-
-  /// Returns the server path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String module,
-  )
-  _serverPathForModule;
-
-  /// Returns the source map path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js.map
-  ///
-  final Future<String?> Function(
-    MetadataProvider metadataProvider,
-    String module,
-  )
-  _sourceMapPathForModule;
-
-  /// Returns the server path for the app uri.
-  ///
-  /// For example:
-  ///
-  ///   org-dartlang-app://web/main.dart -> main.dart
-  ///
-  /// Will return `null` if the provided uri is not
-  /// an app URI.
-  final String? Function(String appUri) _serverPathForAppUri;
-
-  /// Returns the relative path in google3, determined by the `absolutePath`.
-  ///
-  /// Returns `null` if not a google3 app.
-  final String? Function(String absolutePath) _g3RelativePath;
-
-  final BuildSettings _buildSettings;
-
-  @override
-  final Uri? reloadedSourcesUri;
-
-  /// When enabled, injects the script loader into the bootstrapper from
-  /// within DWDS. This is used throughout Flutter Web but may be disabled
-  /// for specific workflows where the script loader is managed separately.
-  final bool injectScriptLoad;
-
-  DdcLibraryBundleStrategy(
-    this.reloadConfiguration,
-    this._moduleProvider,
-    this._digestsProvider,
-    this._moduleForServerPath,
-    this._serverPathForModule,
-    this._sourceMapPathForModule,
-    this._serverPathForAppUri,
-    this._moduleInfoForProvider,
-    AssetReader assetReader,
-    this._buildSettings,
-    this._g3RelativePath, {
-    super.packageConfigPath,
-    this.reloadedSourcesUri,
-    this.injectScriptLoad = true,
-  }) : super(assetReader);
-
-  @override
-  Handler get handler => (request) async {
-    // TODO(markzipan): Implement a hot restarter that uses digests for
-    // the DDC module system.
-    return Response.notFound(request.url.toString());
-  };
-
-  @override
-  String get id => 'ddc-library-bundle';
-
-  // DDC doesn't have a 'ddc-library-bundle' format flag. Instead, it treats the
-  // combination of the DDC module format and canary mode as the DDC library
-  // bundle format, so we just pass 'ddc' here.
-  @override
-  String get moduleFormat => 'ddc';
-
-  @override
-  String get loadLibrariesModule => 'ddc_module_loader.ddk.js';
-
-  // TODO(srujzs): Refactor code that uses this to avoid loading individual
-  // libraries, as that's no longer supported in the new module format.
-  @override
-  String get loadModuleSnippet =>
-      "function() { throw new Error('LoadStrategy.loadModuleSnippet is used. "
-      "This is currently unsupported in the DDC library bundle format.'); }";
-
-  @override
-  late final DartRuntimeDebugger dartRuntimeDebugger = DartRuntimeDebugger(
-    loadStrategy: this,
-    useLibraryBundleExpression: true,
-  );
-
-  @override
-  BuildSettings get buildSettings => _buildSettings;
-
-  @override
-  Future<String> bootstrapFor(String entrypoint) async =>
-      await _ddcLoaderSetup(entrypoint);
-
-  @override
-  String loadClientSnippet(String clientScript) =>
-      'window.\$dartLoader.forceLoadModule("$clientScript");\n';
-
-  Future<String> _ddcLoaderSetup(String entrypoint) async {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    final modulePaths = await _moduleProvider(metadataProvider);
-    final scripts = <Map<String, String?>>[];
-    modulePaths.forEach((name, path) {
-      var id = name;
-      if (id.startsWith('package:')) {
-        id = id.replaceFirst('package:', 'packages/');
-        // Remove trailing '.dart' from script ids.
-        if (id.endsWith('.dart')) {
-          id = id.substring(0, id.length - '.dart'.length);
-        }
-      }
-      scripts.add(<String, String>{'src': '$path.js', 'id': id});
-    });
-    // Flutter always depends on the injected loader, but some canary-enabled
-    // Frontend Server implementations load scripts via a separate pathway.
-    final scriptLoader = buildSettings.isFlutterApp || injectScriptLoad
-        ? '''
-var scripts = ${const JsonEncoder.withIndent(" ").convert(scripts)};
-window.\$dartLoader.loadConfig.loadScriptFn = function(loader) {
-  loader.addScriptsToQueue(scripts, null);
-  loader.loadEnqueuedModules();
-};
-window.\$dartLoader.loader.nextAttempt();
-'''
-        : '';
-    return '$baseUrlScript\n$scriptLoader';
-  }
-
-  @override
-  Future<String?> moduleForServerPath(String entrypoint, String serverPath) =>
-      _moduleForServerPath(metadataProviderFor(entrypoint), serverPath);
-
-  @override
-  Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
-      _moduleInfoForProvider(metadataProviderFor(entrypoint));
-
-  @override
-  Future<String?> serverPathForModule(String entrypoint, String module) =>
-      _serverPathForModule(metadataProviderFor(entrypoint), module);
-
-  @override
-  Future<String?> sourceMapPathForModule(String entrypoint, String module) =>
-      _sourceMapPathForModule(metadataProviderFor(entrypoint), module);
-
-  @override
-  String? serverPathForAppUri(String appUri) => _serverPathForAppUri(appUri);
-
-  @override
-  String? g3RelativePath(String absolutePath) => _g3RelativePath(absolutePath);
-}
diff --git a/dwds/lib/src/loaders/frontend_server_strategy_provider.dart b/dwds/lib/src/loaders/frontend_server_strategy_provider.dart
deleted file mode 100644
index 3e68b6e..0000000
--- a/dwds/lib/src/loaders/frontend_server_strategy_provider.dart
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2024 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/loaders/ddc.dart';
-import 'package:dwds/src/loaders/ddc_library_bundle.dart';
-import 'package:dwds/src/loaders/require.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:path/path.dart' as p;
-
-abstract class FrontendServerStrategyProvider<T extends LoadStrategy> {
-  final ReloadConfiguration _configuration;
-  final AssetReader _assetReader;
-  final PackageUriMapper _packageUriMapper;
-  final Future<Map<String, String>> Function() _digestsProvider;
-  final String _basePath;
-  final BuildSettings _buildSettings;
-  final String? _packageConfigPath;
-
-  FrontendServerStrategyProvider(
-    this._configuration,
-    this._assetReader,
-    this._packageUriMapper,
-    this._digestsProvider,
-    this._buildSettings, {
-    this._packageConfigPath,
-  }) : _basePath = _assetReader.basePath;
-
-  T get strategy;
-
-  String _removeBasePath(String path) {
-    if (_basePath.isEmpty) return path;
-    final stripped = stripLeadingSlashes(path);
-    return stripLeadingSlashes(stripped.substring(_basePath.length));
-  }
-
-  String _addBasePath(String serverPath) => _basePath.isEmpty
-      ? stripLeadingSlashes(serverPath)
-      : '$_basePath/${stripLeadingSlashes(serverPath)}';
-
-  String _removeJsExtension(String path) =>
-      path.endsWith('.js') ? p.withoutExtension(path) : path;
-
-  Future<Map<String, String>> _moduleProvider(
-    MetadataProvider metadataProvider,
-  ) async => (await metadataProvider.moduleToModulePath).map(
-    (key, value) =>
-        MapEntry(key, stripLeadingSlashes(_removeJsExtension(value))),
-  );
-
-  Future<String?> _moduleForServerPath(
-    MetadataProvider metadataProvider,
-    String serverPath,
-  ) async {
-    final modulePathToModule = await metadataProvider.modulePathToModule;
-    final relativeServerPath = _removeBasePath(serverPath);
-    return modulePathToModule[relativeServerPath];
-  }
-
-  Future<String> _serverPathForModule(
-    MetadataProvider metadataProvider,
-    String module,
-  ) async =>
-      _addBasePath((await metadataProvider.moduleToModulePath)[module] ?? '');
-
-  Future<String> _sourceMapPathForModule(
-    MetadataProvider metadataProvider,
-    String module,
-  ) async =>
-      _addBasePath((await metadataProvider.moduleToSourceMap)[module] ?? '');
-
-  String? _serverPathForAppUri(String appUrl) {
-    final appUri = Uri.parse(appUrl);
-    if (appUri.isScheme('org-dartlang-app')) {
-      return _addBasePath(appUri.path);
-    }
-    if (appUri.isScheme('package')) {
-      final resolved = _packageUriMapper.packageUriToServerPath(appUri);
-      if (resolved != null) {
-        return resolved;
-      }
-    }
-    return null;
-  }
-
-  Future<Map<String, ModuleInfo>> _moduleInfoForProvider(
-    MetadataProvider metadataProvider,
-  ) async {
-    final modules = await metadataProvider.moduleToModulePath;
-    final result = <String, ModuleInfo>{};
-    for (final module in modules.keys) {
-      final modulePath = modules[module]!;
-      result[module] = ModuleInfo(
-        // TODO: Save locations of full kernel files in ddc metadata.
-        // Issue: https://github.com/dart-lang/sdk/issues/43684
-        p.setExtension(modulePath, '.full.dill'),
-        p.setExtension(modulePath, '.dill'),
-      );
-    }
-    return result;
-  }
-}
-
-/// Provides a [DdcStrategy] suitable for use with Frontend Server.
-class FrontendServerDdcStrategyProvider
-    extends FrontendServerStrategyProvider<DdcStrategy> {
-  late final DdcStrategy _ddcStrategy = DdcStrategy(
-    _configuration,
-    _moduleProvider,
-    (_) => _digestsProvider(),
-    _moduleForServerPath,
-    _serverPathForModule,
-    _sourceMapPathForModule,
-    _serverPathForAppUri,
-    _moduleInfoForProvider,
-    _assetReader,
-    _buildSettings,
-    (String _) => null,
-    packageConfigPath: _packageConfigPath,
-  );
-
-  FrontendServerDdcStrategyProvider(
-    super._configuration,
-    super._assetReader,
-    super._packageUriMapper,
-    super._digestsProvider,
-    super._buildSettings, {
-    super.packageConfigPath,
-  });
-
-  @override
-  DdcStrategy get strategy => _ddcStrategy;
-}
-
-/// Provides a [DdcLibraryBundleStrategy] suitable for use with the Frontend
-/// Server.
-// ignore: prefer-correct-type-name
-class FrontendServerDdcLibraryBundleStrategyProvider
-    extends FrontendServerStrategyProvider<DdcLibraryBundleStrategy> {
-  late final DdcLibraryBundleStrategy _libraryBundleStrategy;
-
-  FrontendServerDdcLibraryBundleStrategyProvider(
-    super._configuration,
-    super._assetReader,
-    super._packageUriMapper,
-    super._digestsProvider,
-    super._buildSettings, {
-    super.packageConfigPath,
-    Uri? reloadedSourcesUri,
-    bool injectScriptLoad = true,
-  }) {
-    _libraryBundleStrategy = DdcLibraryBundleStrategy(
-      _configuration,
-      _moduleProvider,
-      (_) => _digestsProvider(),
-      _moduleForServerPath,
-      _serverPathForModule,
-      _sourceMapPathForModule,
-      _serverPathForAppUri,
-      _moduleInfoForProvider,
-      _assetReader,
-      _buildSettings,
-      (String _) => null,
-      packageConfigPath: _packageConfigPath,
-      reloadedSourcesUri: reloadedSourcesUri,
-      injectScriptLoad: injectScriptLoad,
-    );
-  }
-
-  @override
-  DdcLibraryBundleStrategy get strategy => _libraryBundleStrategy;
-}
-
-/// Provides a [RequireStrategy] suitable for use with Frontend Server.
-class FrontendServerRequireStrategyProvider
-    extends FrontendServerStrategyProvider<RequireStrategy> {
-  late final RequireStrategy _requireStrategy = RequireStrategy(
-    _configuration,
-    _moduleProvider,
-    (_) => _digestsProvider(),
-    _moduleForServerPath,
-    _serverPathForModule,
-    _sourceMapPathForModule,
-    _serverPathForAppUri,
-    _moduleInfoForProvider,
-    _assetReader,
-    _buildSettings,
-    packageConfigPath: _packageConfigPath,
-  );
-
-  FrontendServerRequireStrategyProvider(
-    super._configuration,
-    super._assetReader,
-    super._packageUriMapper,
-    super._digestsProvider,
-    super._buildSettings, {
-    super.packageConfigPath,
-  });
-
-  @override
-  RequireStrategy get strategy => _requireStrategy;
-}
diff --git a/dwds/lib/src/loaders/require.dart b/dwds/lib/src/loaders/require.dart
deleted file mode 100644
index 535c39d..0000000
--- a/dwds/lib/src/loaders/require.dart
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-
-import 'package:dwds/src/debugging/dart_runtime_debugger.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:path/path.dart' as p;
-import 'package:shelf/shelf.dart';
-
-String removeJsExtension(String path) =>
-    path.endsWith('.js') ? p.withoutExtension(path) : path;
-
-String addJsExtension(String path) => '$path.js';
-
-// web/main.ddc.js -> main.ddc.js
-// packages/test/test.dart.js -> packages/test/test.dart.js
-String stripTopLevelDirectory(String path) =>
-    path.startsWith('packages') ? path : path.split('/').skip(1).join('/');
-
-/// JavaScript snippet to determine the base URL of the current path.
-const _baseUrlScript = '''
-var baseUrl = (function () {
-  // Attempt to detect --precompiled mode for tests, and set the base url
-  // appropriately, otherwise set it to '/'.
-  var pathParts = location.pathname.split("/");
-  if (pathParts[0] == "") {
-    pathParts.shift();
-  }
-  if (pathParts.length > 1 && pathParts[1] == "test") {
-    return "/" + pathParts.slice(0, 2).join("/") + "/";
-  }
-  // Attempt to detect base url using <base href> html tag
-  // base href should start and end with "/"
-  if (typeof document !== 'undefined') {
-    var el = document.getElementsByTagName('base');
-    if (el && el[0] && el[0].getAttribute("href") && el[0].getAttribute
-    ("href").startsWith("/") && el[0].getAttribute("href").endsWith("/")){
-      return el[0].getAttribute("href");
-    }
-  }
-  // return default value
-  return "/";
-}());
-''';
-
-/// A load strategy for the require-js module system.
-class RequireStrategy extends LoadStrategy {
-  @override
-  final ReloadConfiguration reloadConfiguration;
-
-  final String _requireDigestsPath = r'$requireDigestsPath';
-
-  /// Returns a map of module name to corresponding server path (excluding .js)
-  /// for the provided Dart application entrypoint.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc
-  ///   packages/path/path -> packages/path/path.ddc
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  _moduleProvider;
-
-  /// Returns a map of module name to corresponding digest value.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> 8363b363f74b41cac955024ab8b94a3f
-  ///   packages/path/path -> d348c2a4647e998011fe305f74f22961
-  ///
-  final Future<Map<String, String>> Function(MetadataProvider metadataProvider)
-  _digestsProvider;
-
-  /// Returns the module for the corresponding server path.
-  ///
-  /// For example:
-  ///
-  /// /packages/path/path.ddc.js -> packages/path/path
-  ///
-  final Future<String?> Function(MetadataProvider provider, String sourcePath)
-  _moduleForServerPath;
-
-  /// Returns the server path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js
-  ///
-  final Future<String?> Function(MetadataProvider provider, String module)
-  _serverPathForModule;
-
-  /// Returns the source map path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js.map
-  ///
-  final Future<String?> Function(MetadataProvider provider, String module)
-  _sourceMapPathForModule;
-
-  /// Returns the server path for the app uri.
-  ///
-  /// For example:
-  ///
-  ///   org-dartlang-app://web/main.dart -> main.dart
-  ///
-  /// Will return `null` if the provided uri is not
-  /// an app URI.
-  final String? Function(String appUri) _serverPathForAppUri;
-
-  /// Returns a map from module id to module info.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> {main.ddc.full.dill, main.ddc.dill}
-  ///
-  final Future<Map<String, ModuleInfo>> Function(
-    MetadataProvider metadataProvider,
-  )
-  _moduleInfoForProvider;
-
-  @override
-  BuildSettings get buildSettings => _buildSettings;
-  final BuildSettings _buildSettings;
-
-  RequireStrategy(
-    this.reloadConfiguration,
-    this._moduleProvider,
-    this._digestsProvider,
-    this._moduleForServerPath,
-    this._serverPathForModule,
-    this._sourceMapPathForModule,
-    this._serverPathForAppUri,
-    this._moduleInfoForProvider,
-    AssetReader assetReader,
-    this._buildSettings, {
-    super.packageConfigPath,
-  }) : super(assetReader);
-
-  @override
-  Handler get handler => (request) async {
-    if (request.url.path.endsWith(_requireDigestsPath)) {
-      final entrypoint = request.url.queryParameters['entrypoint'];
-      if (entrypoint == null) return Response.notFound('${request.url}');
-      final metadataProvider = metadataProviderFor(
-        request.url.queryParameters['entrypoint']!,
-      );
-      final digests = await _digestsProvider(metadataProvider);
-      return Response.ok(json.encode(digests));
-    }
-    return Response.notFound('${request.url}');
-  };
-
-  @override
-  String get id => 'require-js';
-
-  @override
-  String get moduleFormat => 'amd';
-
-  @override
-  String get loadLibrariesModule => 'require.js';
-
-  @override
-  String get loadModuleSnippet => 'require';
-
-  @override
-  late final DartRuntimeDebugger dartRuntimeDebugger = DartRuntimeDebugger(
-    loadStrategy: this,
-    useLibraryBundleExpression: false,
-  );
-
-  /// Require JS config for ddc.
-  ///
-  /// Sets the base url to `/` so that all modules can be loaded using absolute
-  /// paths which simplifies a lot of scenarios.
-  ///
-  /// Sets the timeout for loading modules to infinity (0).
-  ///
-  /// Sets up the custom module paths.
-  ///
-  /// Adds error handler code for require.js which requests a `.errors` file for
-  /// any failed module, and logs it to the console.
-  String get _requireJsConfig =>
-      '''
-$_baseUrlScript;
-require.config({
-    baseUrl: baseUrl,
-    waitSeconds: 0,
-    paths: modulePaths
-});
-const modulesGraph = new Map();
-requirejs.onResourceLoad = function (context, map, depArray) {
-  const name = map.name;
-  const depNameArray = depArray.map((dep) => dep.name);
-  if (modulesGraph.has(name)) {
-    var previousDeps = modulesGraph.get(name);
-    var changed = previousDeps.length != depNameArray.length;
-    changed = changed || depNameArray.some(function(depName) {
-      return !previousDeps.includes(depName);
-    });
-    if (changed) {
-      console.warn("Dependencies graph change for module '" + name + "' detected. " +
-        "Dependencies was [" + previousDeps + "], now [" +  depNameArray.map((depName) => depName) +"]. " +
-        "Page can't be hot-reloaded, firing full page reload.");
-      window.location.reload();
-    }
-  } else {
-    modulesGraph.set(name, []);
-    for (const depName of depNameArray) {
-      if (!\$requireLoader.moduleParentsGraph.has(depName)) {
-        \$requireLoader.moduleParentsGraph.set(depName, []);
-      }
-      \$requireLoader.moduleParentsGraph.get(depName).push(name);
-      modulesGraph.get(name).push(depName);
-    }
-  }
-};
-''';
-
-  @override
-  Future<String> bootstrapFor(String entrypoint) async =>
-      await _requireLoaderSetup(entrypoint) + _requireJsConfig;
-
-  @override
-  String loadClientSnippet(String clientScript) =>
-      'window.\$requireLoader.forceLoadModule("$clientScript");\n';
-
-  Future<String> _requireLoaderSetup(String entrypoint) async {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    final modulePaths = await _moduleProvider(metadataProvider);
-    final moduleNames = modulePaths.map(
-      (key, value) => MapEntry<String, String>(value, key),
-    );
-    return '''
-$_baseUrlScript
-let modulePaths = ${const JsonEncoder.withIndent(" ").convert(modulePaths)};
-let moduleNames = ${const JsonEncoder.withIndent(" ").convert(moduleNames)};
-if(!window.\$requireLoader) {
-   window.\$requireLoader = {
-     digestsPath: '$_requireDigestsPath?entrypoint=$entrypoint',
-     // Used in package:build_runner/src/server/build_updates_client/hot_reload_client.dart
-     moduleParentsGraph: new Map(),
-     forceLoadModule: function (modulePath, callback, onError) {
-       let moduleName = moduleNames[modulePath];
-       if (moduleName == null) {
-         moduleName = modulePath;
-       }
-       requirejs.undef(moduleName);
-       try{
-        requirejs([moduleName], function() {
-          if (typeof callback != 'undefined') {
-            callback();
-          }
-        });
-       } catch (error) {
-        if (typeof onError != 'undefined') {
-          onError(error);
-        }else{
-          throw(error);
-        }
-       }
-     },
-     getModuleLibraries: null, // set up by _initializeTools
-   };
-}
-''';
-  }
-
-  @override
-  Future<String?> moduleForServerPath(String entrypoint, String serverPath) {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    return _moduleForServerPath(metadataProvider, serverPath);
-  }
-
-  @override
-  Future<String?> serverPathForModule(String entrypoint, String module) {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    return _serverPathForModule(metadataProvider, module);
-  }
-
-  @override
-  Future<String?> sourceMapPathForModule(String entrypoint, String module) {
-    final metadataProvider = metadataProviderFor(entrypoint);
-    return _sourceMapPathForModule(metadataProvider, module);
-  }
-
-  @override
-  String? serverPathForAppUri(String appUri) => _serverPathForAppUri(appUri);
-
-  @override
-  Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
-      _moduleInfoForProvider(metadataProviderFor(entrypoint));
-
-  @override
-  String? g3RelativePath(String absolutePath) => null;
-}
diff --git a/dwds/lib/src/loaders/strategy.dart b/dwds/lib/src/loaders/strategy.dart
deleted file mode 100644
index eea2416..0000000
--- a/dwds/lib/src/loaders/strategy.dart
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-import 'dart:typed_data';
-
-import 'package:dwds/src/debugging/dart_runtime_debugger.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:path/path.dart' as p;
-import 'package:shelf/shelf.dart';
-
-/// A load strategy that supports reading from a URI to find the sources needed
-/// to complete the hot reload or hot restart operation.
-abstract class ReloadableLoadStrategy implements LoadStrategy {
-  /// The [Uri] of the file that contains a JSONified list of maps which follows
-  /// the following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// `src`: A string that corresponds to the file path relative to the app base
-  /// URL root that contains the DDC library bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  ///
-  /// This is needed for hot reloads and restarts in order to tell the module
-  /// loader what files need to be loaded and what libraries need to be
-  /// reloaded. The contents of the file this [Uri] points to should be updated
-  /// whenever a hot reload or hot restart is executed.
-  Uri? get reloadedSourcesUri;
-}
-
-abstract class LoadStrategy {
-  final AssetReader _assetReader;
-  final String? _packageConfigPath;
-  final _providers = <String, MetadataProvider>{};
-
-  LoadStrategy(this._assetReader, {String? packageConfigPath})
-    : _packageConfigPath = packageConfigPath ?? _findPackageConfigFilePath();
-
-  /// The ID for this strategy.
-  ///
-  /// This ID is passed to the injected client so that it can react accordingly.
-  String get id;
-
-  /// Module format for JS generated by the compiler.
-  ///
-  /// Module format is passed to the expression compilation worker during
-  /// expression evaluation.
-  String get moduleFormat;
-
-  /// Module containing code for loading libraries.
-  ///
-  /// Used for preventing stepping into the library loading code.
-  String get loadLibrariesModule;
-
-  /// Returns a snippet of JS code that can be used to load a JS module.
-  ///
-  /// The snippet should be a reference to a function that takes a single
-  /// argument which is the module name to load.
-  String get loadModuleSnippet;
-
-  /// Provides a runtime debugger for the Dart runtime.
-  DartRuntimeDebugger get dartRuntimeDebugger;
-
-  /// The relative root path for library paths. The current directory will be
-  /// used if this is not overridden.
-  String? get libraryRoot => null;
-
-  /// The reload configuration for this strategy, e.g. liveReload.
-  ReloadConfiguration get reloadConfiguration;
-
-  /// App build settings, such as entry point, build flags, app kind etc.
-  BuildSettings get buildSettings;
-
-  /// A handler for strategy specific requests.
-  ///
-  /// Used as a part of the injected_handler middleware.
-  Handler get handler;
-
-  /// Returns a loader to read the content of the package configuration.
-  ///
-  /// The package configuration URIs will be resolved relative to
-  /// [packageConfigPath], but the loader can read the config from a different
-  /// location.
-  ///
-  /// If null, the default loader will read from [packageConfigPath].
-  Future<Uint8List?> Function(Uri uri)? get packageConfigLoader => null;
-
-  /// The absolute path to the app's package configuration.
-  String get packageConfigPath {
-    return _packageConfigPath ?? _defaultPackageConfigPath;
-  }
-
-  /// The default package config path if none is provided.
-  String get _defaultPackageConfigPath =>
-      p.join(DartUri.currentDirectory, '.dart_tool', 'package_config.json');
-
-  /// Returns the absolute file path of the `package_config.json` file in the
-  /// `.dart_tool` directory, searching recursively from the current directory
-  /// hierarchy.
-  static String? _findPackageConfigFilePath() {
-    var candidateDir = Directory(DartUri.currentDirectory).absolute;
-
-    while (true) {
-      final candidatePackageConfigFile = File(
-        p.join(candidateDir.path, '.dart_tool', 'package_config.json'),
-      );
-
-      if (candidatePackageConfigFile.existsSync()) {
-        return candidatePackageConfigFile.path;
-      }
-
-      final parentDir = candidateDir.parent;
-      if (parentDir.path == candidateDir.path) {
-        // We've reached the root directory
-        return null;
-      }
-
-      candidateDir = parentDir;
-    }
-  }
-
-  /// Returns the bootstrap required for this [LoadStrategy].
-  ///
-  /// The bootstrap is appended to the end of the entry point module.
-  Future<String> bootstrapFor(String entrypoint);
-
-  /// JS code snippet for loading the injected client script.
-  String loadClientSnippet(String clientScript);
-
-  /// Returns the module for the corresponding server path.
-  ///
-  /// For example:
-  ///
-  /// /packages/path/path.ddc.js -> packages/path/path
-  ///
-  Future<String?> moduleForServerPath(String entrypoint, String serverPath);
-
-  /// Returns the server path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js
-  ///
-  Future<String?> serverPathForModule(String entrypoint, String module);
-
-  /// Returns the source map path for the provided module.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> main.ddc.js.map
-  ///
-  Future<String?> sourceMapPathForModule(String entrypoint, String module);
-
-  /// Returns a map from module id to module info for the provided entrypoint.
-  ///
-  /// For example:
-  ///
-  ///   web/main -> {main.ddc.full.dill, main.ddc.dill}
-  ///
-  Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint);
-
-  /// Returns the server path for the app uri.
-  ///
-  /// For example:
-  ///
-  ///   org-dartlang-app://web/main.dart -> main.dart
-  ///
-  /// Will return `null` if the provided uri is not
-  /// an app URI.
-  String? serverPathForAppUri(String appUri);
-
-  /// Returns the relative path in google3, determined by the [absolutePath].
-  ///
-  /// Returns `null` if not a google3 app.
-  String? g3RelativePath(String absolutePath);
-
-  /// Returns the [MetadataProvider] for the application located at the provided
-  /// [entrypoint].
-  MetadataProvider metadataProviderFor(String entrypoint) {
-    if (_providers.containsKey(entrypoint)) {
-      return _providers[entrypoint]!;
-    } else {
-      throw StateError('No metadata provider for $entrypoint');
-    }
-  }
-
-  /// Creates and returns a [MetadataProvider] with the given [entrypoint] and
-  /// [reader].
-  MetadataProvider createProvider(String entrypoint, AssetReader reader) =>
-      MetadataProvider(entrypoint, reader);
-
-  /// Initializes a [MetadataProvider] for the application located at the
-  /// provided [entrypoint].
-  Future<void> trackEntrypoint(String entrypoint) {
-    final metadataProvider = createProvider(entrypoint, _assetReader);
-    _providers[metadataProvider.entrypoint] = metadataProvider;
-    // Returns a Future so that the asynchronous g3-implementation can override
-    // this method:
-    return Future.value();
-  }
-
-  Future<ModifiedModuleReport> reinitializeProviderAfterHotReload(
-    String entrypoint,
-    Map<String, List> reloadedModulesToLibraries,
-  ) {
-    final provider = _providers[entrypoint]!;
-    return provider.reinitializeAfterHotReload(reloadedModulesToLibraries);
-  }
-}
-
-enum ReloadConfiguration { none, hotReload, hotRestart, liveReload }
-
-/// App build settings.
-///
-/// We use load strategy to determine the build settings for the app.
-/// Note that some load strategies need to read those arguments from
-/// the build metadata as they are not always available until the app
-/// is built and loaded.
-class BuildSettings {
-  final Uri? appEntrypoint;
-  final bool canaryFeatures;
-  final bool isFlutterApp;
-  final List<String> experiments;
-
-  /// Whether the compilers allow the deprecated JS interop libraries, such as
-  /// `dart:html`.
-  ///
-  /// If `null`, no flag is passed and the compiler default is used.
-  final bool? deprecatedJsInterop;
-
-  const BuildSettings({
-    this.appEntrypoint,
-    this.canaryFeatures = false,
-    this.isFlutterApp = true,
-    this.experiments = const <String>[],
-    this.deprecatedJsInterop,
-  });
-}
diff --git a/dwds/lib/src/readers/asset_reader.dart b/dwds/lib/src/readers/asset_reader.dart
deleted file mode 100644
index 5bec51e..0000000
--- a/dwds/lib/src/readers/asset_reader.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:collection/collection.dart';
-import 'package:file/file.dart';
-import 'package:logging/logging.dart';
-import 'package:package_config/package_config.dart';
-
-/// A reader for Dart sources and related source maps.
-abstract class AssetReader {
-  /// Base path of the application, for example, set up in the index file:
-  ///
-  /// ```
-  /// <html>
-  ///   <head>
-  ///     <base href="/abc/">
-  ///     <script src="main.dart.js"></script>
-  ///   </head>
-  /// </html>
-  /// ```
-  String get basePath;
-
-  /// Returns the contents for a source map at the provided server path, or
-  /// null if the resource does not exist.
-  Future<String?> sourceMapContents(String serverPath);
-
-  /// Returns the contents for a dart source at the provided server path, or
-  /// null if the resource does not exist.
-  Future<String?> dartSourceContents(String serverPath);
-
-  /// Returns the contents for the merged metadata output at the provided path,
-  /// or null if the resource does not exist.
-  Future<String?> metadataContents(String serverPath);
-
-  /// Closes connections
-  Future<void> close();
-}
-
-class PackageUriMapper {
-  final _logger = Logger('PackageUriMapper');
-  final PackageConfig packageConfig;
-  final bool useDebuggerModuleNames;
-
-  static Future<PackageUriMapper> create(
-    FileSystem fileSystem,
-    Uri packageConfigFile, {
-    bool useDebuggerModuleNames = false,
-  }) async {
-    final packageConfig = await loadPackageConfig(
-      fileSystem.file(packageConfigFile),
-    );
-    return PackageUriMapper(
-      packageConfig,
-      useDebuggerModuleNames: useDebuggerModuleNames,
-    );
-  }
-
-  PackageUriMapper(this.packageConfig, {this.useDebuggerModuleNames = false});
-
-  /// Compute server path for package uri.
-  ///
-  /// Note: needs to match `urlForComponentUri` in javascript_bundle.dart
-  /// in SDK code.
-  String? packageUriToServerPath(Uri packageUri) {
-    final defaultServerPath = '/packages/${packageUri.path}';
-    if (packageUri.isScheme('package')) {
-      if (!useDebuggerModuleNames) {
-        return defaultServerPath;
-      }
-      final resolvedUri = packageConfig.resolve(packageUri);
-      if (resolvedUri == null) {
-        _logger.severe('Cannot resolve package uri $packageUri');
-        return defaultServerPath;
-      }
-      final package = packageConfig.packageOf(resolvedUri);
-      if (package == null) {
-        _logger.severe('Cannot find package for package uri $packageUri');
-        return defaultServerPath;
-      }
-      final root = package.root;
-      final relativeUrl = resolvedUri.toString().replaceFirst('$root', '');
-      final relativeRoot = _getRelativeRoot(root);
-      final ret = relativeRoot == null
-          ? 'packages/$relativeUrl'
-          : 'packages/$relativeRoot/$relativeUrl';
-      return ret;
-    }
-    _logger.severe('Expected package uri, but found $packageUri');
-    return null;
-  }
-
-  /// Compute resolved file uri for a server path.
-  Uri? serverPathToResolvedUri(String serverPath) {
-    serverPath = stripLeadingSlashes(serverPath);
-    final segments = serverPath.split('/');
-    if (segments.first == 'packages') {
-      if (!useDebuggerModuleNames) {
-        return packageConfig.resolve(
-          Uri(scheme: 'package', pathSegments: segments.skip(1)),
-        );
-      }
-      final relativeRoot = segments.skip(1).first;
-      final relativeUrl = segments.skip(2).join('/');
-      final package = packageConfig.packages.firstWhere(
-        (Package p) => _getRelativeRoot(p.root) == relativeRoot,
-      );
-      final resolvedUri = package.root.resolve(relativeUrl);
-
-      return resolvedUri;
-    }
-    _logger.severe('Expected "packages/" path, but found $serverPath');
-    return null;
-  }
-}
-
-String stripLeadingSlashes(String path) {
-  while (path.startsWith('/') || path.startsWith('\\')) {
-    path = path.substring(1);
-  }
-  return path;
-}
-
-String? _getRelativeRoot(Uri root) =>
-    root.pathSegments.lastWhereOrNull((segment) => segment.isNotEmpty);
diff --git a/dwds/lib/src/readers/frontend_server_asset_reader.dart b/dwds/lib/src/readers/frontend_server_asset_reader.dart
deleted file mode 100644
index a87b459..0000000
--- a/dwds/lib/src/readers/frontend_server_asset_reader.dart
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-import 'dart:io';
-
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:logging/logging.dart';
-import 'package:package_config/package_config.dart';
-import 'package:path/path.dart' as p;
-
-/// A reader for Dart sources and related source maps provided by the Frontend
-/// Server.
-class FrontendServerAssetReader implements AssetReader {
-  final _logger = Logger('FrontendServerAssetReader');
-  final File _mapOriginal;
-  final File _mapIncremental;
-  final File _jsonOriginal;
-  final File _jsonIncremental;
-  final String _packageRoot;
-  final Future<PackageConfig> _packageConfig;
-  final String _basePath;
-
-  /// Map of Dart module server path to source map contents.
-  final _mapContents = <String, String>{};
-
-  bool _haveReadOriginals = false;
-
-  /// Creates a [FrontendServerAssetReader].
-  ///
-  /// [outputPath] is the file path to the Frontend Server kernel file e.g.
-  ///
-  ///   /some/path/main.dart.dill
-  ///
-  /// Corresponding `.json` and `.map` files will be read relative to
-  /// [outputPath].
-  ///
-  /// [_packageRoot] is the path to the directory that contains a
-  /// `.dart_tool/package_config.json` file for the application.
-  FrontendServerAssetReader({
-    required String outputPath,
-    required String packageRoot,
-    String? basePath,
-  }) : _packageRoot = packageRoot,
-       _basePath = basePath ?? '',
-       _mapOriginal = File('$outputPath.map'),
-       _mapIncremental = File('$outputPath.incremental.map'),
-       _jsonOriginal = File('$outputPath.json'),
-       _jsonIncremental = File('$outputPath.incremental.json'),
-       _packageConfig = loadPackageConfig(
-         File(
-           p.absolute(p.join(packageRoot, '.dart_tool/package_config.json')),
-         ),
-       );
-
-  @override
-  String get basePath => _basePath;
-
-  @override
-  Future<String?> dartSourceContents(String serverPath) async {
-    if (serverPath.endsWith('.dart')) {
-      final packageConfig = await _packageConfig;
-
-      Uri? fileUri;
-      if (serverPath.startsWith('packages/')) {
-        final packagePath = serverPath.replaceFirst('packages/', 'package:');
-        fileUri = packageConfig.resolve(Uri.parse(packagePath));
-      } else {
-        fileUri = p.toUri(p.join(_packageRoot, serverPath));
-      }
-      if (fileUri != null) {
-        final source = File(fileUri.toFilePath());
-        if (source.existsSync()) return source.readAsString();
-      }
-    }
-    _logger.severe('Cannot find source contents for $serverPath');
-    return null;
-  }
-
-  @override
-  Future<String?> sourceMapContents(String serverPath) async {
-    if (serverPath.endsWith('lib.js.map')) {
-      if (!serverPath.startsWith('/')) serverPath = '/$serverPath';
-      // Strip the .map, sources are looked up by their js path.
-      serverPath = p.withoutExtension(serverPath);
-      if (_mapContents.containsKey(serverPath)) {
-        return _mapContents[serverPath];
-      }
-    }
-    _logger.severe('Cannot find source map contents for $serverPath');
-    return null;
-  }
-
-  /// Updates the internal caches by reading the Frontend Server output files.
-  ///
-  /// Will only read the incremental files on additional calls.
-  void updateCaches() {
-    if (!_haveReadOriginals) {
-      _updateCaches(_mapOriginal, _jsonOriginal);
-      _haveReadOriginals = true;
-    } else {
-      _updateCaches(_mapIncremental, _jsonIncremental);
-    }
-  }
-
-  void _updateCaches(File map, File json) {
-    if (!(map.existsSync() && json.existsSync())) {
-      throw StateError('$map and $json do not exist.');
-    }
-    final sourceContents = map.readAsBytesSync();
-    final sourceInfo =
-        jsonDecode(json.readAsStringSync()) as Map<String, dynamic>;
-    for (final key in sourceInfo.keys) {
-      final info = sourceInfo[key] as Map<String, dynamic>;
-      final sourcemapOffsets = info['sourcemap'] as List<dynamic>;
-      _mapContents[key] = utf8.decode(
-        sourceContents
-            .getRange(sourcemapOffsets[0] as int, sourcemapOffsets[1] as int)
-            .toList(),
-      );
-    }
-  }
-
-  @override
-  Future<String> metadataContents(String serverPath) {
-    // TODO(grouma) - Implement the merged metadata reader.
-    throw UnimplementedError();
-  }
-
-  @override
-  Future<void> close() async {}
-}
diff --git a/dwds/lib/src/readers/proxy_server_asset_reader.dart b/dwds/lib/src/readers/proxy_server_asset_reader.dart
deleted file mode 100644
index 4225ba9..0000000
--- a/dwds/lib/src/readers/proxy_server_asset_reader.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2020, 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:convert';
-import 'dart:io';
-
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:http/http.dart' as http;
-import 'package:http/io_client.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-import 'package:shelf_proxy/shelf_proxy.dart';
-
-/// A reader for resources provided by a proxy server.
-class ProxyServerAssetReader implements AssetReader {
-  final _logger = Logger('ProxyServerAssetReader');
-
-  final Handler _handler;
-  final http.Client? _client;
-
-  ProxyServerAssetReader._(this._handler, this._client);
-
-  factory ProxyServerAssetReader(
-    int assetServerPort, {
-    String root = '',
-    String host = 'localhost',
-    bool isHttps = false,
-  }) {
-    final scheme = isHttps ? 'https://' : 'http://';
-    final inner = HttpClient()
-      ..maxConnectionsPerHost = 200
-      ..idleTimeout = const Duration(seconds: 30)
-      ..connectionTimeout = const Duration(seconds: 30);
-    final client = isHttps
-        ? IOClient(inner..badCertificateCallback = (cert, host, port) => true)
-        : IOClient(inner);
-    var url = '$scheme$host:$assetServerPort/';
-    if (root.isNotEmpty) url += '$root/';
-    final handler = proxyHandler(url, client: client);
-    return ProxyServerAssetReader._(handler, client);
-  }
-
-  ProxyServerAssetReader.fromHandler(this._handler) : _client = null;
-
-  @override
-  String get basePath => '';
-
-  @override
-  Future<String?> dartSourceContents(String serverPath) =>
-      _readResource(serverPath);
-
-  @override
-  Future<String?> sourceMapContents(String serverPath) =>
-      _readResource(serverPath);
-
-  Future<String?> _readResource(String path) async {
-    // Handlers expect a fully formed HTML URI. The actual hostname and port
-    // does not matter.
-    final request = Request(
-      'GET',
-      Uri.parse('http://foo:0000/$path'),
-    ).change(headers: {'requested-by': 'DWDS'});
-    final response = await _handler(request);
-
-    if (response.statusCode != HttpStatus.ok) {
-      _logger.warning('''
-      Failed to load asset at path: $path.
-
-      Status code: ${response.statusCode}
-
-      Headers:
-      ${const JsonEncoder.withIndent('  ').convert(response.headers)}
-      ''');
-      return null;
-    } else {
-      return await response.readAsString();
-    }
-  }
-
-  @override
-  Future<String?> metadataContents(String serverPath) =>
-      _readResource(serverPath);
-
-  @override
-  Future<void> close() async => _client?.close();
-}
diff --git a/dwds/lib/src/servers/devtools.dart b/dwds/lib/src/servers/devtools.dart
deleted file mode 100644
index c52a079..0000000
--- a/dwds/lib/src/servers/devtools.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-/// A server for Dart Devtools.
-class DevTools {
-  final String hostname;
-  final int port;
-  final HttpServer _server;
-
-  Uri get uri => Uri(scheme: 'http', host: hostname, port: port);
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  DevTools(this.hostname, this.port, this._server);
-
-  Future<void> close() => _closed ??= _server.close();
-}
diff --git a/dwds/lib/src/servers/extension_backend.dart b/dwds/lib/src/servers/extension_backend.dart
deleted file mode 100644
index 80152c5..0000000
--- a/dwds/lib/src/servers/extension_backend.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:async/async.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/servers/extension_debugger.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-
-const authenticationResponse =
-    'Dart Debug Authentication Success!\n\n'
-    'You can close this tab and launch the Dart Debug Extension again.';
-
-/// A backend for the Dart Debug Extension.
-///
-/// Sets up an SSE handler to communicate with the extension background.
-/// Uses that SSE channel to create an [ExtensionDebugger].
-class ExtensionBackend {
-  static final _logger = Logger('ExtensionBackend');
-  final String hostname;
-  final int port;
-  final HttpServer _server;
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  ExtensionBackend._(
-    SocketHandler socketHandler,
-    this.hostname,
-    this.port,
-    this._server,
-  ) : connections = socketHandler.connections;
-
-  // Starts the backend on an open port.
-  static Future<ExtensionBackend> start(
-    SocketHandler socketHandler,
-    String hostname,
-  ) async {
-    var cascade = Cascade();
-    cascade = cascade
-        .add((request) {
-          if (request.url.path == authenticationPath) {
-            return Response.ok(
-              authenticationResponse,
-              headers: {
-                if (request.headers.containsKey('origin'))
-                  'Access-Control-Allow-Origin': request.headers['origin']!,
-                'Access-Control-Allow-Credentials': 'true',
-              },
-            );
-          }
-          return Response.notFound('');
-        })
-        .add(socketHandler.handler);
-    final server = await startHttpServer(hostname);
-    serveHttpRequests(server, cascade.handler, (e, s) {
-      _logger.warning('Error serving requests', e);
-      emitEvent(DwdsEvent.httpRequestException('ExtensionBackend', '$e:$s'));
-    });
-    return ExtensionBackend._(
-      socketHandler,
-      server.address.host,
-      server.port,
-      server,
-    );
-  }
-
-  Future<void> close() => _closed ??= _server.close();
-
-  final StreamQueue<SocketConnection> connections;
-
-  Future<ExtensionDebugger> get extensionDebugger async =>
-      ExtensionDebugger(await connections.next);
-}
diff --git a/dwds/lib/src/servers/extension_debugger.dart b/dwds/lib/src/servers/extension_debugger.dart
deleted file mode 100644
index 8240b86..0000000
--- a/dwds/lib/src/servers/extension_debugger.dart
+++ /dev/null
@@ -1,395 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:convert';
-
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:logging/logging.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
-    hide StackTrace;
-
-final _logger = Logger('ExtensionDebugger');
-
-/// A remote debugger backed by the Dart Debug Extension with an SSE connection.
-class ExtensionDebugger implements RemoteDebugger {
-  /// A connection between the debugger and the background of
-  /// Dart Debug Extension
-  final SocketConnection sseConnection;
-
-  /// A map from id to a completer associated with an [ExtensionRequest]
-  final _completers = <int, Completer>{};
-  final _eventStreams = <String, Stream>{};
-  var _completerId = 0;
-
-  @override
-  Future<void> Function()? onReconnect;
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  String? instanceId;
-  ExecutionContext? _executionContext;
-
-  ExecutionContext? get executionContext => _executionContext;
-
-  final _devToolsRequestController = StreamController<DevToolsRequest>();
-
-  Stream<DevToolsRequest> get devToolsRequestStream =>
-      _devToolsRequestController.stream;
-
-  final _notificationController = StreamController<WipEvent>.broadcast();
-
-  Stream<WipEvent> get onNotification => _notificationController.stream;
-
-  final _closeController = StreamController<Object>.broadcast();
-
-  @override
-  Stream<Object> get onClose => _closeController.stream;
-
-  @override
-  Stream<ConsoleAPIEvent> get onConsoleAPICalled => eventStream(
-    'Runtime.consoleAPICalled',
-    (WipEvent event) => ConsoleAPIEvent(event.json),
-  );
-
-  @override
-  Stream<ExceptionThrownEvent> get onExceptionThrown => eventStream(
-    'Runtime.exceptionThrown',
-    (WipEvent event) => ExceptionThrownEvent(event.json),
-  );
-
-  final _scripts = <String, WipScript>{};
-  final _scriptIds = <String, String>{};
-
-  ExtensionDebugger(this.sseConnection) {
-    sseConnection.stream.listen(
-      (data) {
-        final decoded = jsonDecode(data);
-        final message = _deserialize(decoded);
-        if (message is ExtensionResponse) {
-          final encodedResult = {
-            'result': json.decode(message.result),
-            'id': message.id,
-          };
-          final completer = _completers[message.id];
-          if (completer == null) {
-            throw StateError('Missing completer.');
-          }
-          // TODO(#988): Call completeError(WipError()) to match the behavior of
-          // package:webkit_inspection_protocol.
-          completer.complete(WipResponse(encodedResult));
-        } else if (message is ExtensionEvent) {
-          final map = {
-            'method': json.decode(message.method),
-            'params': json.decode(message.params),
-          };
-          // Note: package:sse will try to keep the connection alive, even
-          // after the client has been closed. Therefore the extension sends an
-          // event to notify DWDS that we should close the connection, instead
-          // of relying on the done event sent when the client is closed. See
-          // details:
-          // https://github.com/dart-lang/webdev/pull/1595#issuecomment-1116773378
-          if (map['method'] == 'DebugExtension.detached') {
-            close();
-          } else {
-            _notificationController.sink.add(WipEvent(map));
-          }
-        } else if (message is BatchedEvents) {
-          for (final event in message.events) {
-            final map = {
-              'method': json.decode(event.method),
-              'params': json.decode(event.params),
-            };
-            _notificationController.sink.add(WipEvent(map));
-          }
-        } else if (message is DevToolsRequest) {
-          instanceId = message.instanceId;
-          _executionContext = RemoteDebuggerExecutionContext(
-            message.contextId,
-            this,
-          );
-          _devToolsRequestController.sink.add(message);
-        }
-      },
-      onError: (_) {
-        close();
-      },
-      onDone: close,
-    );
-    onScriptParsed.listen((event) {
-      // Remove stale scripts from cache.
-      if (event.script.url.isNotEmpty &&
-          _scriptIds.containsKey(event.script.url)) {
-        _scripts.remove(_scriptIds[event.script.url]);
-      }
-      _scripts[event.script.scriptId] = event.script;
-      _scriptIds[event.script.url] = event.script.scriptId;
-    });
-    // Listens for a page reload.
-    onGlobalObjectCleared.listen((_) {
-      _scripts.clear();
-    });
-  }
-
-  void sendEvent(String method, String params) {
-    sseConnection.sink.add(
-      jsonEncode(ExtensionEvent(method: method, params: params)),
-    );
-  }
-
-  /// Sends a [command] with optional [params] to Dart Debug Extension
-  /// over the SSE connection.
-  @override
-  Future<WipResponse> sendCommand(
-    String command, {
-    Map<String, dynamic>? params,
-  }) {
-    final completer = Completer<WipResponse>();
-    final id = newId();
-    _completers[id] = completer;
-    try {
-      sseConnection.sink.add(
-        jsonEncode(
-          ExtensionRequest(
-            id: id,
-            command: command,
-            commandParams: jsonEncode(params ?? {}),
-          ),
-        ),
-      );
-      // ignore: avoid_catching_errors
-    } on StateError catch (error, stackTrace) {
-      if (error.message.contains('Cannot add event after closing')) {
-        _logger.severe('Socket connection closed. Shutting down debugger.');
-        closeWithError(error);
-      } else {
-        _logger.severe('Bad state while sending $command.', error, stackTrace);
-      }
-    } catch (error, stackTrace) {
-      _logger.severe(
-        'Unknown error while sending $command.',
-        error,
-        stackTrace,
-      );
-    }
-    return completer.future;
-  }
-
-  int newId() => _completerId++;
-
-  @override
-  Future<void> close() => _closed ??= () {
-    _closeController.add({});
-    return Future.wait([
-      sseConnection.sink.close(),
-      _notificationController.close(),
-      _devToolsRequestController.close(),
-      _closeController.close(),
-    ]);
-  }();
-
-  void closeWithError(Object? error) {
-    _logger.shout(
-      'Closing extension debugger due to error. Restart app for debugging '
-      'functionality',
-      error,
-    );
-    close();
-  }
-
-  @override
-  Future disable() => sendCommand('Debugger.disable');
-
-  @override
-  Future enable() => sendCommand('Debugger.enable');
-
-  @override
-  Future<String> getScriptSource(String scriptId) async =>
-      (await sendCommand(
-            'Debugger.getScriptSource',
-            params: {'scriptId': scriptId},
-          )).result!['scriptSource']
-          as String;
-
-  @override
-  Future<WipResponse> pause() => sendCommand('Debugger.pause');
-
-  @override
-  Future<WipResponse> resume() => sendCommand('Debugger.resume');
-
-  @override
-  Future<WipResponse> setPauseOnExceptions(PauseState state) => sendCommand(
-    'Debugger.setPauseOnExceptions',
-    params: {'state': _pauseStateToString(state)},
-  );
-
-  @override
-  Future<WipResponse> removeBreakpoint(String breakpointId) {
-    return sendCommand(
-      'Debugger.removeBreakpoint',
-      params: {'breakpointId': breakpointId},
-    );
-  }
-
-  @override
-  Future<WipResponse> stepInto({Map<String, dynamic>? params}) =>
-      sendCommand('Debugger.stepInto', params: params);
-
-  @override
-  Future<WipResponse> stepOut() => sendCommand('Debugger.stepOut');
-
-  @override
-  Future<WipResponse> stepOver({Map<String, dynamic>? params}) =>
-      sendCommand('Debugger.stepOver', params: params);
-
-  @override
-  Future<WipResponse> enablePage() => sendCommand('Page.enable');
-
-  @override
-  Future<WipResponse> pageReload() => sendCommand('Page.reload');
-
-  @override
-  Future<RemoteObject> evaluate(
-    String expression, {
-    bool? returnByValue,
-    int? contextId,
-  }) async {
-    final params = <String, dynamic>{'expression': expression};
-    if (returnByValue != null) {
-      params['returnByValue'] = returnByValue;
-    }
-    if (returnByValue != null) {
-      params['contextId'] = contextId;
-    }
-    final response = await sendCommand('Runtime.evaluate', params: params);
-    final result = _validateResult(response.result);
-    return RemoteObject(result['result'] as Map<String, dynamic>);
-  }
-
-  @override
-  Future<RemoteObject> evaluateOnCallFrame(
-    String callFrameId,
-    String expression,
-  ) async {
-    final params = <String, dynamic>{
-      'callFrameId': callFrameId,
-      'expression': expression,
-    };
-    final response = await sendCommand(
-      'Debugger.evaluateOnCallFrame',
-      params: params,
-    );
-    final result = _validateResult(response.result);
-    return RemoteObject(result['result'] as Map<String, dynamic>);
-  }
-
-  @override
-  Future<List<WipBreakLocation>> getPossibleBreakpoints(
-    WipLocation start,
-  ) async {
-    final params = <String, dynamic>{'start': start.toJsonMap()};
-    final response = await sendCommand(
-      'Debugger.getPossibleBreakpoints',
-      params: params,
-    );
-    final result = _validateResult(response.result);
-    final locations = result['locations'] as List;
-    return List.from(
-      locations.map((map) => WipBreakLocation(map as Map<String, dynamic>)),
-    );
-  }
-
-  @override
-  Stream<T> eventStream<T>(String method, WipEventTransformer<T> transformer) {
-    return _eventStreams
-        .putIfAbsent(
-          method,
-          () => onNotification
-              .where((event) => event.method == method)
-              .map(transformer),
-        )
-        .cast();
-  }
-
-  @override
-  Stream<GlobalObjectClearedEvent> get onGlobalObjectCleared => eventStream(
-    'Debugger.globalObjectCleared',
-    (WipEvent event) => GlobalObjectClearedEvent(event.json),
-  );
-
-  @override
-  Stream<DebuggerPausedEvent> get onPaused => eventStream(
-    'Debugger.paused',
-    (WipEvent event) => DebuggerPausedEvent(event.json),
-  );
-
-  @override
-  Stream<DebuggerResumedEvent> get onResumed => eventStream(
-    'Debugger.resumed',
-    (WipEvent event) => DebuggerResumedEvent(event.json),
-  );
-
-  @override
-  Stream<ScriptParsedEvent> get onScriptParsed => eventStream(
-    'Debugger.scriptParsed',
-    (WipEvent event) => ScriptParsedEvent(event.json),
-  );
-
-  @override
-  Stream<TargetCrashedEvent> get onTargetCrashed => eventStream(
-    'Inspector.targetCrashed',
-    (WipEvent event) => TargetCrashedEvent(event.json),
-  );
-
-  @override
-  Map<String, WipScript> get scripts => UnmodifiableMapView(_scripts);
-
-  String _pauseStateToString(PauseState state) {
-    switch (state) {
-      case PauseState.all:
-        return 'all';
-      case PauseState.none:
-        return 'none';
-      case PauseState.uncaught:
-        return 'uncaught';
-    }
-  }
-
-  Map<String, dynamic> _validateResult(Map<String, dynamic>? result) {
-    if (result == null) {
-      throw ChromeDebugException({'text': 'null result from Chrome Devtools'});
-    }
-    if (result.containsKey('exceptionDetails')) {
-      throw ChromeDebugException(
-        result['exceptionDetails'] as Map<String, dynamic>,
-      );
-    }
-    return result;
-  }
-
-  static Object? _deserialize(dynamic decoded) {
-    if (decoded case ['ExtensionResponse', ...]) {
-      return ExtensionResponse.fromJson(decoded);
-    }
-    if (decoded case ['ExtensionEvent', ...]) {
-      return ExtensionEvent.fromJson(decoded);
-    }
-    if (decoded case ['BatchedEvents', ...]) {
-      return BatchedEvents.fromJson(decoded);
-    }
-    if (decoded case ['DevToolsRequest', ...]) {
-      return DevToolsRequest.fromJson(decoded);
-    }
-    return null;
-  }
-}
diff --git a/dwds/lib/src/services/app_debug_services.dart b/dwds/lib/src/services/app_debug_services.dart
deleted file mode 100644
index d0b862e..0000000
--- a/dwds/lib/src/services/app_debug_services.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dds/dds_launcher.dart';
-import 'package:dwds/src/dwds_vm_client.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/services/debug_service.dart';
-import 'package:dwds/src/services/proxy_service.dart';
-
-/// Common interface for debug service containers.
-class AppDebugServices<
-  T extends DebugService<U>,
-  U extends ProxyService,
-  V extends DwdsVmClient<U, T>
-> {
-  final T debugService;
-  final V dwdsVmClient;
-  final DartDevelopmentServiceLauncher? _dds;
-  Uri? get ddsUri => _dds?.wsUri;
-  Uri? get devToolsUri => _dds?.devToolsUri;
-  Uri? get dtdUri => _dds?.dtdUri;
-  final DwdsStats? dwdsStats;
-  String? connectedInstanceId;
-
-  Future<void>? _closed;
-
-  AppDebugServices({
-    required this.debugService,
-    required this.dwdsVmClient,
-    required this._dds,
-    this.dwdsStats,
-  });
-
-  ProxyService get proxyService => debugService.proxyService;
-
-  Future<void> close() {
-    return _closed ??= Future.wait([
-      debugService.close(),
-      dwdsVmClient.close(),
-    ]);
-  }
-}
diff --git a/dwds/lib/src/services/batched_expression_evaluator.dart b/dwds/lib/src/services/batched_expression_evaluator.dart
deleted file mode 100644
index 164b04b..0000000
--- a/dwds/lib/src/services/batched_expression_evaluator.dart
+++ /dev/null
@@ -1,165 +0,0 @@
-// 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:async';
-
-import 'package:collection/collection.dart';
-import 'package:dwds/shared/batched_stream.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/modules.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/expression_evaluator.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-class EvaluateRequest {
-  final String isolateId;
-  final String? libraryUri;
-  final String expression;
-  final Map<String, String>? scope;
-  final completer = Completer<RemoteObject>();
-
-  EvaluateRequest(this.isolateId, this.libraryUri, this.expression, this.scope);
-}
-
-class BatchedExpressionEvaluator extends ExpressionEvaluator {
-  final _logger = Logger('BatchedExpressionEvaluator');
-  final ChromeAppInspector _inspector;
-  final _requestController = BatchedStreamController<EvaluateRequest>(
-    delay: 200,
-  );
-  bool _closed = false;
-
-  BatchedExpressionEvaluator(
-    String entrypoint,
-    this._inspector,
-    Debugger debugger,
-    Locations locations,
-    Modules modules,
-    ExpressionCompiler compiler,
-  ) : super(entrypoint, _inspector, debugger, locations, modules, compiler) {
-    _requestController.stream.listen(_processRequest);
-  }
-
-  @override
-  void close() {
-    if (_closed) return;
-    _logger.fine('Closed');
-    _requestController.close();
-    _closed = true;
-  }
-
-  @override
-  Future<RemoteObject> evaluateExpression(
-    String isolateId,
-    String? libraryUri,
-    String expression,
-    Map<String, String>? scope,
-  ) async {
-    if (_closed) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'Batched expression evaluator closed',
-      );
-    }
-    final request = EvaluateRequest(isolateId, libraryUri, expression, scope);
-    _requestController.sink.add(request);
-    return request.completer.future;
-  }
-
-  void _processRequest(List<EvaluateRequest> requests) {
-    String? libraryUri;
-    String? isolateId;
-    Map<String, String>? scope;
-    var currentRequests = <EvaluateRequest>[];
-
-    for (final request in requests) {
-      libraryUri ??= request.libraryUri;
-      isolateId ??= request.isolateId;
-      scope ??= request.scope;
-
-      if (libraryUri != request.libraryUri ||
-          isolateId != request.isolateId ||
-          !const MapEquality<String, String>().equals(scope, request.scope)) {
-        _logger.fine('New batch due to');
-        if (libraryUri != request.libraryUri) {
-          _logger.fine(' - library uri: $libraryUri != ${request.libraryUri}');
-        }
-        if (isolateId != request.isolateId) {
-          _logger.fine(' - isolateId: $isolateId != ${request.isolateId}');
-        }
-        if (!const MapEquality<String, String>().equals(scope, request.scope)) {
-          _logger.fine(' - scope: $scope != ${request.scope}');
-        }
-
-        safeUnawaited(_evaluateBatch(currentRequests));
-        currentRequests = [];
-        libraryUri = request.libraryUri;
-        isolateId = request.isolateId;
-        scope = request.scope;
-      }
-      currentRequests.add(request);
-    }
-    safeUnawaited(_evaluateBatch(currentRequests));
-  }
-
-  Future<void> _evaluateBatch(List<EvaluateRequest> requests) async {
-    if (requests.isEmpty) return;
-
-    final first = requests.first;
-    if (requests.length == 1) {
-      if (first.completer.isCompleted) return;
-      return super
-          .evaluateExpression(
-            first.isolateId,
-            first.libraryUri,
-            first.expression,
-            first.scope,
-          )
-          .then(requests.first.completer.complete);
-    }
-
-    final expressions = requests.map((r) => r.expression).join(', ');
-    final batchedExpression = '[ $expressions ]';
-
-    _logger.fine('Evaluating batch of expressions $batchedExpression');
-
-    final list = await super.evaluateExpression(
-      first.isolateId,
-      first.libraryUri,
-      batchedExpression,
-      first.scope,
-    );
-
-    final listId = list.objectId;
-    if (listId == null) {
-      for (final request in requests) {
-        safeUnawaited(_evaluateBatch([request]));
-      }
-      return;
-    }
-
-    for (var i = 0; i < requests.length; i++) {
-      final request = requests[i];
-      if (request.completer.isCompleted) continue;
-      _logger.fine('Getting result out of a batch for ${request.expression}');
-
-      safeUnawaited(
-        _inspector
-            .getProperties(listId, offset: i, count: 1, length: requests.length)
-            .then((v) {
-              final result = v.first.value!;
-              _logger.fine(
-                'Got result out of a batch for ${request.expression}: $result',
-              );
-              request.completer.complete(result);
-            }),
-        onError: request.completer.completeError,
-      );
-    }
-  }
-}
diff --git a/dwds/lib/src/services/chrome/chrome_debug_exception.dart b/dwds/lib/src/services/chrome/chrome_debug_exception.dart
deleted file mode 100644
index 82e377d..0000000
--- a/dwds/lib/src/services/chrome/chrome_debug_exception.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// 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 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-final class ChromeDebugException extends ExceptionDetails implements Exception {
-  /// Optional, additional information about the exception.
-  final Object? additionalDetails;
-
-  /// Optional, the exact contents of the eval that was attempted.
-  final String? evalContents;
-
-  /// Optional, the stack where exception happened.
-  @override
-  late final StackTrace? stackTrace;
-
-  ChromeDebugException(
-    Map<String, dynamic> exceptionDetails, {
-    this.additionalDetails,
-    this.evalContents,
-  }) : super(exceptionDetails) {
-    final json = exceptionDetails['stackTrace'];
-    stackTrace = json == null ? null : StackTrace(json as Map<String, dynamic>);
-  }
-
-  @override
-  String toString() {
-    final description = StringBuffer()
-      ..writeln('Unexpected error from chrome devtools:');
-    description.writeln('text: $text');
-    if (exception != null) {
-      description.writeln('exception:');
-      description.writeln('  preview: ${exception?.json['preview']}');
-      description.writeln('  description: ${exception?.description}');
-      description.writeln('  type: ${exception?.type}');
-      description.writeln('  value: ${exception?.value}');
-    }
-    if (evalContents != null) {
-      description.writeln('attempted JS eval: `$evalContents`');
-    }
-    if (additionalDetails != null) {
-      description.writeln('additional details:\n  $additionalDetails');
-    }
-    if (stackTrace != null) {
-      var trace = stackTrace;
-      description.writeln('stack trace:');
-      while (trace != null) {
-        for (final frame in trace.printFrames()) {
-          description.writeln(frame);
-        }
-        trace = trace.parent;
-      }
-    }
-    return description.toString();
-  }
-}
diff --git a/dwds/lib/src/services/chrome/chrome_debug_service.dart b/dwds/lib/src/services/chrome/chrome_debug_service.dart
deleted file mode 100644
index 6fa2731..0000000
--- a/dwds/lib/src/services/chrome/chrome_debug_service.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds/src/services/debug_service.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:meta/meta.dart';
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:sse/server/sse_handler.dart';
-
-/// A Dart Web Debug Service.
-///
-/// Creates a [ChromeProxyService] from an existing Chrome instance.
-final class ChromeDebugService extends DebugService<ChromeProxyService> {
-  ChromeDebugService._({
-    required super.serverHostname,
-    required super.useSse,
-    required super.ddsConfig,
-    required super.urlEncoder,
-  });
-
-  static const _kSseHandlerPath = '\$debugHandler';
-
-  @protected
-  @override
-  Future<void> initialize({
-    required ChromeProxyService proxyService,
-    void Function(Map<String, Object>)? onRequest,
-    void Function(Map<String, Object?>)? onResponse,
-  }) async {
-    await super.initialize(proxyService: proxyService);
-    shelf.Handler handler;
-    // DDS will always connect to DWDS via web sockets.
-    if (useSse && !ddsConfig.enable) {
-      handler = _initializeSSEHandler(
-        chromeProxyService: proxyService,
-        onRequest: onRequest,
-        onResponse: onResponse,
-      );
-    } else {
-      handler = initializeWebSocketHandler(
-        proxyService: proxyService,
-        onRequest: onRequest,
-        onResponse: onResponse,
-      );
-    }
-    await serve(handler: handler);
-  }
-
-  static Future<ChromeDebugService> start({
-    required String hostname,
-    required RemoteDebugger remoteDebugger,
-    required ExecutionContext executionContext,
-    required AssetReader assetReader,
-    required AppConnection appConnection,
-    UrlEncoder? urlEncoder,
-    void Function(Map<String, Object>)? onRequest,
-    void Function(Map<String, Object?>)? onResponse,
-    required DartDevelopmentServiceConfiguration ddsConfig,
-    bool useSse = false,
-    ExpressionCompiler? expressionCompiler,
-  }) async {
-    final debugService = ChromeDebugService._(
-      serverHostname: hostname,
-      useSse: useSse,
-      ddsConfig: ddsConfig,
-      urlEncoder: urlEncoder,
-    );
-    final chromeProxyService = await ChromeProxyService.create(
-      remoteDebugger: remoteDebugger,
-      debugService: debugService,
-      assetReader: assetReader,
-      appConnection: appConnection,
-      executionContext: executionContext,
-      expressionCompiler: expressionCompiler,
-    );
-    await debugService.initialize(
-      proxyService: chromeProxyService,
-      onRequest: onRequest,
-      onResponse: onResponse,
-    );
-    return debugService;
-  }
-
-  shelf.Handler _initializeSSEHandler({
-    required ChromeProxyService chromeProxyService,
-    void Function(Map<String, Object>)? onRequest,
-    void Function(Map<String, Object?>)? onResponse,
-  }) {
-    final sseHandler = SseHandler(
-      Uri.parse('/$authToken/$_kSseHandlerPath'),
-      keepAlive: const Duration(seconds: 5),
-    );
-    final handler = sseHandler.handler;
-    safeUnawaited(() async {
-      while (await sseHandler.connections.hasNext) {
-        final connection = await sseHandler.connections.next;
-        handleConnection(
-          connection,
-          chromeProxyService,
-          serviceExtensionRegistry,
-          onRequest: onRequest,
-          onResponse: onResponse,
-        );
-      }
-    }());
-    return handler;
-  }
-}
diff --git a/dwds/lib/src/services/chrome/chrome_proxy_service.dart b/dwds/lib/src/services/chrome/chrome_proxy_service.dart
deleted file mode 100644
index ad785f3..0000000
--- a/dwds/lib/src/services/chrome/chrome_proxy_service.dart
+++ /dev/null
@@ -1,1373 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/data/debug_event.dart';
-import 'package:dwds/data/register_event.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/instance.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/debugging/modules.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/debugging/skip_list.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/readers/asset_reader.dart';
-import 'package:dwds/src/services/batched_expression_evaluator.dart';
-import 'package:dwds/src/services/chrome/chrome_debug_service.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/expression_evaluator.dart';
-import 'package:dwds/src/services/proxy_service.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart' hide LogRecord;
-import 'package:vm_service/vm_service.dart' hide vmServiceVersion;
-import 'package:vm_service_interface/vm_service_interface.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
-    hide StackTrace;
-
-/// A proxy from the chrome debug protocol to the dart vm service protocol.
-final class ChromeProxyService extends ProxyService<ChromeAppInspector> {
-  /// Signals when isolate starts.
-  Future<void> get isStarted => _startedCompleter.future;
-  Completer<void> _startedCompleter = Completer<void>();
-
-  /// Signals when expression compiler is ready to evaluate.
-  Future<void> get isCompilerInitialized => _compilerCompleter.future;
-  Completer<void> _compilerCompleter = Completer<void>();
-
-  final RemoteDebugger remoteDebugger;
-  final ExecutionContext executionContext;
-
-  final AssetReader _assetReader;
-
-  final Locations _locations;
-
-  final SkipLists _skipLists;
-
-  final Modules _modules;
-
-  /// Provides debugger-related functionality.
-  late final Future<Debugger> debuggerFuture;
-
-  StreamSubscription<ConsoleAPIEvent>? _consoleSubscription;
-
-  /// If non-null, a resume event should await the result of this after resuming
-  /// execution.
-  ///
-  /// This is used to complete a hot reload.
-  Future<void> Function()? _finishHotReloadOnResume;
-
-  final _logger = Logger('ChromeProxyService');
-
-  final ExpressionCompiler? _compiler;
-  ExpressionEvaluator? _expressionEvaluator;
-
-  /// Isolate creation should wait until this completer is complete to prevent
-  /// computing metadata in an invalid state.
-  ///
-  /// Starts out completed and is reinitialized and completed when needed.
-  Completer<void> allowedToCreateIsolate = Completer<void>()..complete();
-
-  bool terminatingIsolates = false;
-
-  ChromeProxyService._({
-    required super.vm,
-    required super.debugService,
-    required AssetReader assetReader,
-    required this.remoteDebugger,
-    required this._modules,
-    required this._locations,
-    required this._skipLists,
-    required this.executionContext,
-    required this._compiler,
-  }) : _assetReader = assetReader,
-       super(root: assetReader.basePath) {
-    debuggerFuture = Debugger.create(
-      remoteDebugger,
-      streamNotify,
-      _locations,
-      _skipLists,
-      root,
-    );
-  }
-
-  static Future<ChromeProxyService> create({
-    required RemoteDebugger remoteDebugger,
-    required ChromeDebugService debugService,
-    required AssetReader assetReader,
-    required AppConnection appConnection,
-    required ExecutionContext executionContext,
-    required ExpressionCompiler? expressionCompiler,
-  }) async {
-    final vm = VM(
-      name: 'ChromeDebugProxy',
-      operatingSystem: Platform.operatingSystem,
-      startTime: DateTime.now().millisecondsSinceEpoch,
-      version: Platform.version,
-      isolates: [],
-      isolateGroups: [],
-      systemIsolates: [],
-      systemIsolateGroups: [],
-      targetCPU: 'Web',
-      hostCPU: 'DWDS',
-      architectureBits: -1,
-      pid: -1,
-    );
-
-    final root = assetReader.basePath;
-    final modules = Modules(root);
-    final locations = Locations(assetReader, modules, root);
-    final skipLists = SkipLists(root);
-    final service = ChromeProxyService._(
-      vm: vm,
-      debugService: debugService,
-      assetReader: assetReader,
-      remoteDebugger: remoteDebugger,
-      modules: modules,
-      locations: locations,
-      skipLists: skipLists,
-      executionContext: executionContext,
-      compiler: expressionCompiler,
-    );
-    await service.createIsolate(appConnection, newConnection: true);
-    return service;
-  }
-
-  /// Reinitializes any caches so that they can be recomputed across hot reload.
-  ///
-  /// We use the [ModifiedModuleReport] to more efficiently invalidate caches.
-  Future<void> _reinitializeForHotReload(
-    Map<String, List> reloadedModules,
-  ) async {
-    final entrypoint = inspector.appConnection.request.entrypointPath;
-    final modifiedModuleReport = await globalToolConfiguration.loadStrategy
-        .reinitializeProviderAfterHotReload(entrypoint, reloadedModules);
-    await _initializeEntrypoint(
-      entrypoint,
-      modifiedModuleReport: modifiedModuleReport,
-    );
-    await inspector.initialize(modifiedModuleReport: modifiedModuleReport);
-  }
-
-  /// Initializes metadata in [Locations], [Modules], and [ExpressionCompiler].
-  ///
-  /// If [modifiedModuleReport] is not null, only removes and reinitializes
-  /// modified metadata.
-  Future<void> _initializeEntrypoint(
-    String entrypoint, {
-    ModifiedModuleReport? modifiedModuleReport,
-  }) async {
-    await _modules.initialize(
-      entrypoint,
-      modifiedModuleReport: modifiedModuleReport,
-    );
-    await _locations.initialize(
-      entrypoint,
-      modifiedModuleReport: modifiedModuleReport,
-    );
-    await _skipLists.initialize(
-      entrypoint,
-      modifiedModuleReport: modifiedModuleReport,
-    );
-    // We do not need to wait for compiler dependencies to be updated as the
-    // [ExpressionEvaluator] is robust to evaluation requests during updates.
-    safeUnawaited(_updateCompilerDependencies(entrypoint));
-  }
-
-  Future<void> _updateCompilerDependencies(String entrypoint) async {
-    final loadStrategy = globalToolConfiguration.loadStrategy;
-    final moduleFormat = loadStrategy.moduleFormat;
-    final buildSettings = loadStrategy.buildSettings;
-
-    _logger.info('Initializing expression compiler for $entrypoint');
-
-    final compilerOptions = CompilerOptions(
-      moduleFormat: ModuleFormat.values.byName(moduleFormat),
-      canaryFeatures: buildSettings.canaryFeatures,
-      experiments: buildSettings.experiments,
-      deprecatedJsInterop: buildSettings.deprecatedJsInterop,
-    );
-
-    final compiler = _compiler;
-    if (compiler != null) {
-      await compiler.initialize(compilerOptions);
-      final dependencies = await loadStrategy.moduleInfoForEntrypoint(
-        entrypoint,
-      );
-      await captureElapsedTime(() async {
-        final result = await compiler.updateDependencies(dependencies);
-        // Expression evaluation is ready after dependencies are updated.
-        if (!_compilerCompleter.isCompleted) _compilerCompleter.complete();
-        return result;
-      }, (result) => DwdsEvent.compilerUpdateDependencies(entrypoint));
-    }
-  }
-
-  Future<void> _prewarmExpressionCompilerCache() async {
-    // Exit early if the expression evaluation is not enabled.
-    if (_compiler == null || _expressionEvaluator == null) {
-      return;
-    }
-    // Wait until the inspector is ready.
-    await isInitialized;
-
-    // Pre-warm the flutter framework module cache in the compiler.
-    //
-    // Flutter inspector relies on evaluations in widget_inspector
-    // library, which is a part of the flutter framework module, to
-    // produce widget trees, draw the layout explorer, show hover
-    // cards etc.
-    // Pre-warming the cache while DevTools is still loading helps
-    // Flutter Inspector start faster.
-    final libraryToCache = await inspector.flutterWidgetInspectorLibrary;
-    if (libraryToCache != null) {
-      final isolateId = inspector.isolateRef.id;
-      final libraryId = libraryToCache.id;
-      if (isolateId != null && libraryId != null) {
-        _logger.finest(
-          'Caching ${libraryToCache.uri} in expression compiler worker',
-        );
-        await evaluate(isolateId, libraryId, 'true');
-      }
-    }
-  }
-
-  /// Creates a new isolate.
-  ///
-  /// Only one isolate at a time is supported, but they should be cleaned up
-  /// with [destroyIsolate] and recreated with this method there is a hot
-  /// restart or full page refresh.
-  ///
-  /// If [newConnection] is true, this method does not recompute metadata
-  /// information as the metadata couldn't have changed.
-  @override
-  Future<void> createIsolate(
-    AppConnection appConnection, {
-    bool newConnection = false,
-  }) async {
-    // Inspector is null if the previous isolate is destroyed.
-    if (isIsolateRunning) {
-      throw UnsupportedError(
-        'Cannot create multiple isolates for the same app',
-      );
-    }
-    // Wait until we're allowed to create the isolate. This is needed in hot
-    // restart as scripts may not be parsed yet.
-    if (!allowedToCreateIsolate.isCompleted) {
-      _logger.info(
-        'Waiting until hot restart is completed before creating '
-        'isolate',
-      );
-      await allowedToCreateIsolate.future;
-    }
-    // Waiting for the debugger to be ready before initializing the entrypoint.
-    //
-    // Note: moving `await debugger` after the `_initializeEntryPoint` call
-    // causes `getcwd` system calls to fail. Since that system call is used
-    // in first `Uri.base` call in the expression compiler service isolate,
-    // the expression compiler service will fail to start.
-    // Issue: https://github.com/dart-lang/webdev/issues/1282
-    final debugger = await debuggerFuture;
-    final entrypoint = appConnection.request.entrypointPath;
-    if (!newConnection) {
-      await globalToolConfiguration.loadStrategy.trackEntrypoint(entrypoint);
-    }
-    await _initializeEntrypoint(entrypoint);
-
-    debugger.notifyPausedAtStart();
-    inspector = await ChromeAppInspector.create(
-      appConnection,
-      remoteDebugger,
-      _assetReader,
-      _locations,
-      root,
-      debugger,
-      executionContext,
-    );
-
-    final compiler = _compiler;
-    _expressionEvaluator = compiler == null
-        ? null
-        : BatchedExpressionEvaluator(
-            entrypoint,
-            inspector,
-            debugger,
-            _locations,
-            _modules,
-            compiler,
-          );
-
-    safeUnawaited(_prewarmExpressionCompilerCache());
-
-    safeUnawaited(
-      appConnection.onStart.then((_) {
-        debugger.resumeFromStart();
-        _startedCompleter.complete();
-      }),
-    );
-
-    safeUnawaited(appConnection.onDone.then((_) => destroyIsolate()));
-
-    final isolateRef = inspector.isolateRef;
-    final timestamp = DateTime.now().millisecondsSinceEpoch;
-
-    // Listen for `registerExtension` and `postEvent` calls.
-    _setUpChromeConsoleListeners(isolateRef);
-
-    vm.isolates?.add(isolateRef);
-
-    streamNotify(
-      'Isolate',
-      Event(
-        kind: EventKind.kIsolateStart,
-        timestamp: timestamp,
-        isolate: isolateRef,
-      ),
-    );
-    streamNotify(
-      'Isolate',
-      Event(
-        kind: EventKind.kIsolateRunnable,
-        timestamp: timestamp,
-        isolate: isolateRef,
-      ),
-    );
-
-    // TODO: We shouldn't need to fire these events since they exist on the
-    // isolate, but devtools doesn't recognize extensions after a page refresh
-    // otherwise.
-    await sendServiceExtensionRegisteredEvents();
-
-    // If the new isolate was created as part of a restart, send a
-    // kPausePostRequest event to notify client that the app is paused so that
-    // it can resume:
-    if (hasPendingRestart) {
-      streamNotify(
-        'Debug',
-        Event(
-          kind: EventKind.kPausePostRequest,
-          timestamp: timestamp,
-          isolate: isolateRef,
-        ),
-      );
-    }
-
-    // The service is considered initialized when the first isolate is created.
-    if (!initializedCompleter.isCompleted) initializedCompleter.complete();
-  }
-
-  /// Should be called when there is a hot restart or full page refresh.
-  ///
-  /// Clears out the [inspector] and all related cached information.
-  @override
-  void destroyIsolate() {
-    _logger.fine('$hashCode Destroying isolate');
-    if (!isIsolateRunning) return;
-
-    final isolate = inspector.isolate;
-    final isolateRef = inspector.isolateRef;
-
-    initializedCompleter = Completer<void>();
-    _startedCompleter = Completer<void>();
-    _compilerCompleter = Completer<void>();
-    streamNotify(
-      'Isolate',
-      Event(
-        kind: EventKind.kIsolateExit,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        isolate: isolateRef,
-      ),
-    );
-    vm.isolates?.removeWhere((ref) => ref.id == isolate.id);
-    inspector = null;
-    _expressionEvaluator?.close();
-    _consoleSubscription?.cancel();
-    _consoleSubscription = null;
-  }
-
-  /// Removes the breakpoints in the running isolate.
-  Future<void> disableBreakpoints() async {
-    if (!isIsolateRunning) return;
-    final isolate = inspector.isolate;
-
-    final debugger = await debuggerFuture;
-    await Future.wait([
-      for (final breakpoint in isolate.breakpoints ?? <Breakpoint>[])
-        debugger.removeBreakpoint(breakpoint.id!),
-    ]);
-  }
-
-  @override
-  Future<Breakpoint> addBreakpoint(
-    String isolateId,
-    String scriptId,
-    int line, {
-    int? column,
-  }) {
-    return wrapInErrorHandlerAsync(
-      'addBreakpoint',
-      () => _addBreakpoint(isolateId, scriptId, line),
-    );
-  }
-
-  Future<Breakpoint> _addBreakpoint(
-    String isolateId,
-    String scriptId,
-    int line, {
-    int? column,
-  }) async {
-    await isInitialized;
-    checkIsolate('addBreakpoint', isolateId);
-    return (await debuggerFuture).addBreakpoint(scriptId, line, column: column);
-  }
-
-  @override
-  Future<Breakpoint> addBreakpointAtEntry(String isolateId, String functionId) {
-    return rpcNotSupportedFuture('addBreakpointAtEntry');
-  }
-
-  @override
-  Future<Breakpoint> addBreakpointWithScriptUri(
-    String isolateId,
-    String scriptUri,
-    int line, {
-    int? column,
-  }) => wrapInErrorHandlerAsync(
-    'addBreakpointWithScriptUri',
-    () =>
-        _addBreakpointWithScriptUri(isolateId, scriptUri, line, column: column),
-  );
-
-  Future<Breakpoint> _addBreakpointWithScriptUri(
-    String isolateId,
-    String scriptUri,
-    int line, {
-    int? column,
-  }) async {
-    await isInitialized;
-    checkIsolate('addBreakpointWithScriptUri', isolateId);
-    if (Uri.parse(scriptUri).scheme == 'dart') {
-      // TODO(annagrin): Support setting breakpoints in dart SDK locations.
-      // Issue: https://github.com/dart-lang/webdev/issues/1584
-      throw RPCError(
-        'addBreakpoint',
-        102,
-        'The VM is unable to add a breakpoint '
-            'at the specified line or function: $scriptUri:$line:$column: '
-            'breakpoints in dart SDK locations are not supported yet.',
-      );
-    }
-    final dartUri = DartUri(scriptUri, root);
-    final scriptRef = await inspector.scriptRefFor(dartUri.serverPath);
-    final scriptId = scriptRef?.id;
-    if (scriptId == null) {
-      throw RPCError(
-        'addBreakpoint',
-        102,
-        'The VM is unable to add a breakpoint '
-            'at the specified line or function: $scriptUri:$line:$column: '
-            'cannot find script ID for ${dartUri.serverPath}',
-      );
-    }
-    return (await debuggerFuture).addBreakpoint(scriptId, line, column: column);
-  }
-
-  @override
-  Future<Response> callServiceExtension(
-    String method, {
-    String? isolateId,
-    Map? args,
-  }) => wrapInErrorHandlerAsync(
-    'callServiceExtension',
-    () => _callServiceExtension(method, isolateId: isolateId, args: args),
-  );
-
-  Future<Response> _callServiceExtension(
-    String method, {
-    String? isolateId,
-    Map? args,
-  }) async {
-    await isInitialized;
-    isolateId ??= inspector.isolate.id;
-    checkIsolate('callServiceExtension', isolateId);
-    args ??= <String, String>{};
-    final stringArgs = args.map(
-      (k, v) => MapEntry(
-        k is String ? k : jsonEncode(k),
-        v is String ? v : jsonEncode(v),
-      ),
-    );
-    if (!(await inspector.getExtensionRpcs()).contains(method)) {
-      throw RPCError(
-        method,
-        RPCErrorKind.kMethodNotFound.code,
-        'Unknown service method: $method',
-      );
-    }
-    final expression = globalToolConfiguration.loadStrategy.dartRuntimeDebugger
-        .invokeExtensionJsExpression(method, jsonEncode(stringArgs));
-    final result = await inspector.jsEvaluate(expression, awaitPromise: true);
-    final decodedResponse =
-        jsonDecode(result.value as String) as Map<String, dynamic>;
-    if (decodedResponse.containsKey('code') &&
-        decodedResponse.containsKey('message') &&
-        decodedResponse.containsKey('data')) {
-      // ignore: only_throw_errors
-      throw RPCError(
-        method,
-        decodedResponse['code'] as int,
-        // ignore: avoid-unnecessary-type-casts
-        decodedResponse['message'] as String,
-        decodedResponse['data'] as Map,
-      );
-    } else {
-      return Response()..json = decodedResponse;
-    }
-  }
-
-  Future<Response> _getEvaluationResult(
-    String isolateId,
-    Future<RemoteObject> Function() evaluation,
-    String expression,
-  ) async {
-    try {
-      final result = await evaluation();
-      if (!isIsolateRunning || isolateId != inspector.isolate.id) {
-        _logger.fine(
-          'Cannot get evaluation result for isolate $isolateId: '
-          ' isolate exited.',
-        );
-        return ErrorRef(
-          kind: 'error',
-          message: 'Isolate exited',
-          id: createId(),
-        );
-      }
-
-      // Handle compilation errors, internal errors,
-      // and reference errors from JavaScript evaluation in chrome.
-      if (_hasEvaluationError(result.type)) {
-        if (_hasReportableEvaluationError(result.type)) {
-          _logger.warning(
-            'Failed to evaluate expression \'$expression\': '
-            '${result.type}: ${result.value}.',
-          );
-
-          _logger.info(
-            'Please follow instructions at '
-            'https://github.com/dart-lang/webdev/issues/956 '
-            'to file a bug.',
-          );
-        }
-        return ErrorRef(
-          kind: 'error',
-          message: '${result.type}: ${result.value}',
-          id: createId(),
-        );
-      }
-      return await _instanceRef(result);
-    } on RPCError catch (_) {
-      rethrow;
-    } catch (e, s) {
-      // Handle errors that throw exceptions, such as invalid JavaScript
-      // generated by the expression evaluator.
-      _logger.warning('Failed to evaluate expression \'$expression\'. ');
-      _logger.info(
-        'Please follow instructions at '
-        'https://github.com/dart-lang/webdev/issues/956 '
-        'to file a bug.',
-      );
-      _logger.info('$e:$s');
-      return ErrorRef(kind: 'error', message: '<unknown>', id: createId());
-    }
-  }
-
-  bool _hasEvaluationError(String type) => type.contains('Error');
-
-  // Decides if the error is serious enough to be shown to the user
-  // to encourage bug reporting.
-  bool _hasReportableEvaluationError(String type) {
-    if (!_hasEvaluationError(type)) return false;
-
-    if (type == EvaluationErrorKind.compilation ||
-        type == EvaluationErrorKind.asyncFrame) {
-      return false;
-    }
-    return true;
-  }
-
-  @override
-  Future<Response> evaluate(
-    String isolateId,
-    String targetId,
-    String expression, {
-    Map<String, String>? scope,
-    // TODO(798) - respect disableBreakpoints.
-    bool? disableBreakpoints,
-
-    /// Note that `idZoneId` arguments will be ignored. This parameter is only
-    /// here to make this method is a valid override of
-    /// [VmServiceInterface.evaluate].
-    String? idZoneId,
-  }) => wrapInErrorHandlerAsync(
-    'evaluate',
-    () => _evaluate(isolateId, targetId, expression, scope: scope),
-  );
-
-  Future<Response> _evaluate(
-    String isolateId,
-    String targetId,
-    String expression, {
-    Map<String, String>? scope,
-  }) {
-    // TODO(798) - respect disableBreakpoints.
-    return captureElapsedTime(() async {
-      await isInitialized;
-      final evaluator = _expressionEvaluator;
-      if (evaluator != null) {
-        await isCompilerInitialized;
-        checkIsolate('evaluate', isolateId);
-
-        late Obj object;
-        try {
-          object = await inspector.getObject(targetId);
-        } catch (_) {
-          return ErrorRef(
-            kind: 'error',
-            message:
-                'Evaluate is called on an unsupported target:'
-                '$targetId',
-            id: createId(),
-          );
-        }
-
-        final library = object is Library ? object : inspector.isolate.rootLib;
-
-        if (object is Instance) {
-          // Evaluate is called on a target - convert this to a dart
-          // expression and scope by adding a target variable to the
-          // expression and the scope, for example:
-          //
-          // Library: 'package:hello_world/main.dart'
-          // Expression: 'hashCode' => 'x.hashCode'
-          // Scope: {} => { 'x' : targetId }
-
-          final target = _newVariableForScope(scope);
-          expression = '$target.$expression';
-          scope = (scope ?? {})..addAll({target: targetId});
-        }
-
-        return await _getEvaluationResult(
-          isolateId,
-          () => evaluator.evaluateExpression(
-            isolateId,
-            library?.uri,
-            expression,
-            scope,
-          ),
-          expression,
-        );
-      }
-      throw RPCError(
-        'evaluate',
-        RPCErrorKind.kInvalidRequest.code,
-        'Expression evaluation is not supported for this configuration.',
-      );
-    }, (result) => DwdsEvent.evaluate(expression, result));
-  }
-
-  String _newVariableForScope(Map<String, String>? scope) {
-    // Find a new variable not in scope.
-    var candidate = 'x';
-    while (scope?.containsKey(candidate) ?? false) {
-      candidate += '\$1';
-    }
-    return candidate;
-  }
-
-  @override
-  Future<Response> evaluateInFrame(
-    String isolateId,
-    int frameIndex,
-    String expression, {
-    Map<String, String>? scope,
-    // TODO(798) - respect disableBreakpoints.
-    bool? disableBreakpoints,
-
-    /// Note that `idZoneId` arguments will be ignored. This parameter is only
-    /// here to make this method is a valid override of
-    /// [VmServiceInterface.evaluateInFrame].
-    String? idZoneId,
-  }) => wrapInErrorHandlerAsync(
-    'evaluateInFrame',
-    () => _evaluateInFrame(isolateId, frameIndex, expression, scope: scope),
-  );
-
-  Future<Response> _evaluateInFrame(
-    String isolateId,
-    int frameIndex,
-    String expression, {
-    Map<String, String>? scope,
-  }) {
-    // TODO(798) - respect disableBreakpoints.
-
-    return captureElapsedTime(() async {
-      await isInitialized;
-      final evaluator = _expressionEvaluator;
-      if (evaluator != null) {
-        await isCompilerInitialized;
-        checkIsolate('evaluateInFrame', isolateId);
-
-        return await _getEvaluationResult(
-          isolateId,
-          () => evaluator.evaluateExpressionInFrame(
-            isolateId,
-            frameIndex,
-            expression,
-            scope,
-          ),
-          expression,
-        );
-      }
-      throw RPCError(
-        'evaluateInFrame',
-        RPCErrorKind.kInvalidRequest.code,
-        'Expression evaluation is not supported for this configuration.',
-      );
-    }, (result) => DwdsEvent.evaluateInFrame(expression, result));
-  }
-
-  @override
-  Future<MemoryUsage> getMemoryUsage(String isolateId) =>
-      wrapInErrorHandlerAsync(
-        'getMemoryUsage',
-        () => _getMemoryUsage(isolateId),
-      );
-
-  Future<MemoryUsage> _getMemoryUsage(String isolateId) async {
-    await isInitialized;
-    checkIsolate('getMemoryUsage', isolateId);
-    return inspector.getMemoryUsage();
-  }
-
-  @override
-  Future<Obj> getObject(
-    String isolateId,
-    String objectId, {
-    int? offset,
-    int? count,
-
-    /// Note that `idZoneId` arguments will be ignored. This parameter is only
-    /// here to make this method is a valid override of
-    /// [VmServiceInterface.getObject].
-    String? idZoneId,
-  }) => wrapInErrorHandlerAsync(
-    'getObject',
-    () => _getObject(isolateId, objectId, offset: offset, count: count),
-  );
-
-  Future<Obj> _getObject(
-    String isolateId,
-    String objectId, {
-    int? offset,
-    int? count,
-  }) async {
-    await isInitialized;
-    checkIsolate('getObject', isolateId);
-    return inspector.getObject(objectId, offset: offset, count: count);
-  }
-
-  @override
-  Future<SourceReport> getSourceReport(
-    String isolateId,
-    List<String> reports, {
-    String? scriptId,
-    // Note: Ignore the following optional parameters. They are here to match
-    // the VM service interface.
-    int? tokenPos,
-    int? endTokenPos,
-    bool? forceCompile,
-    bool? reportLines,
-    List<String>? libraryFilters,
-    List<String>? librariesAlreadyCompiled,
-  }) => wrapInErrorHandlerAsync(
-    'getSourceReport',
-    () => _getSourceReport(isolateId, reports, scriptId: scriptId),
-  );
-
-  Future<SourceReport> _getSourceReport(
-    String isolateId,
-    List<String> reports, {
-    String? scriptId,
-  }) {
-    return captureElapsedTime(() async {
-      await isInitialized;
-      checkIsolate('getSourceReport', isolateId);
-      return await inspector.getSourceReport(reports, scriptId: scriptId);
-    }, (result) => DwdsEvent.getSourceReport());
-  }
-
-  /// Returns the current stack.
-  ///
-  /// Throws RPCError the corresponding isolate is not paused.
-  ///
-  /// The returned stack will contain up to [limit] frames if provided.
-  @override
-  Future<Stack> getStack(
-    String isolateId, {
-    int? limit,
-
-    /// Note that `idZoneId` arguments will be ignored. This parameter is only
-    /// here to make this method is a valid override of
-    /// [VmServiceInterface.getStack].
-    String? idZoneId,
-  }) => wrapInErrorHandlerAsync(
-    'getStack',
-    () => _getStack(isolateId, limit: limit),
-  );
-
-  Future<Stack> _getStack(String isolateId, {int? limit}) async {
-    await isInitialized;
-    await isStarted;
-    checkIsolate('getStack', isolateId);
-    return (await debuggerFuture).getStack(limit: limit);
-  }
-
-  @override
-  Future<Response> invoke(
-    String isolateId,
-    String targetId,
-    String selector,
-    List argumentIds, {
-    // TODO(798) - respect disableBreakpoints.
-    bool? disableBreakpoints,
-
-    /// Note that `idZoneId` arguments will be ignored. This parameter is only
-    /// here to make this method is a valid override of
-    /// [VmServiceInterface.invoke].
-    String? idZoneId,
-  }) => wrapInErrorHandlerAsync(
-    'invoke',
-    () => _invoke(isolateId, targetId, selector, argumentIds),
-  );
-
-  Future<Response> _invoke(
-    String isolateId,
-    String targetId,
-    String selector,
-    List argumentIds,
-  ) async {
-    await isInitialized;
-    checkIsolate('invoke', isolateId);
-    final remote = await inspector.invoke(targetId, selector, argumentIds);
-    return _instanceRef(remote);
-  }
-
-  @override
-  Stream<Event> onEvent(String streamId) {
-    return streamControllers.putIfAbsent(streamId, () {
-      switch (streamId) {
-        case EventStreams.kExtension:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kIsolate:
-          // TODO: right now we only support the `ServiceExtensionAdded` event
-          // for the Isolate stream.
-          return StreamController<Event>.broadcast();
-        case EventStreams.kVM:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kGC:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kTimeline:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kService:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kDebug:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kLogging:
-          return StreamController<Event>.broadcast();
-        case EventStreams.kStdout:
-          return _chromeConsoleStreamController(
-            (e) => _stdoutTypes.contains(e.type),
-          );
-        case EventStreams.kStderr:
-          return _chromeConsoleStreamController(
-            (e) => _stderrTypes.contains(e.type),
-            includeExceptions: true,
-          );
-        default:
-          throw RPCError(
-            'streamListen',
-            RPCErrorKind.kInvalidParams.code,
-            'The stream `$streamId` is not supported on web devices',
-          );
-      }
-    }).stream;
-  }
-
-  /// If [internalPause] is true, indicates that this was a pause triggered
-  /// within DWDS, and therefore a `PauseInterrupted` event is never sent to the
-  /// VM service event stream. Instead, we just wait for the pause to be
-  /// completed.
-  @override
-  Future<Success> pause(String isolateId, {bool internalPause = false}) =>
-      wrapInErrorHandlerAsync(
-        'pause',
-        () => _pause(isolateId, internalPause: internalPause),
-      );
-
-  Future<Success> _pause(
-    String isolateId, {
-    required bool internalPause,
-  }) async {
-    await isInitialized;
-    checkIsolate('pause', isolateId);
-    return (await debuggerFuture).pause(internalPause: internalPause);
-  }
-
-  @override
-  Future<ReloadReport> reloadSources(
-    String isolateId, {
-    bool? force,
-    bool? pause,
-    String? rootLibUri,
-    String? packagesUri,
-  }) async {
-    await isInitialized;
-    checkIsolate('reloadSources', isolateId);
-
-    ReloadReport getFailedReloadReport(String error) =>
-        _ReloadReportWithMetadata(success: false)
-          ..json = {
-            'notices': [
-              {'message': error},
-            ],
-          };
-    try {
-      await _performClientSideHotReload(isolateId);
-    } catch (e) {
-      _logger.info('Hot reload failed: $e');
-      return getFailedReloadReport(e.toString());
-    }
-    _logger.info('Successful hot reload');
-    return _ReloadReportWithMetadata(success: true);
-  }
-
-  /// Performs a client-side hot reload by fetching libraries, handling
-  /// PausePostRequests, and invoking the reload.
-  Future<void> _performClientSideHotReload(String isolateId) async {
-    _logger.info('Attempting a hot reload');
-
-    final debugger = await debuggerFuture;
-    final reloadedSrcs = <String>{};
-    final computedReloadedSrcs = Completer<void>();
-    final parsedAllReloadedSrcs = Completer<void>();
-    // Wait until all the reloaded scripts are parsed before we reinitialize
-    // metadata below.
-    final parsedScriptsSubscription = debugger.parsedScriptsController.stream
-        .listen((url) {
-          computedReloadedSrcs.future.then((_) {
-            reloadedSrcs.remove(Uri.parse(url).normalizePath().path);
-            if (reloadedSrcs.isEmpty && !parsedAllReloadedSrcs.isCompleted) {
-              parsedAllReloadedSrcs.complete();
-            }
-          });
-        });
-
-    // Initiate a hot reload.
-    _logger.info('Issuing \$dartHotReloadStartDwds request');
-    final remoteObject = await inspector.jsEvaluate(
-      '\$dartHotReloadStartDwds();',
-      awaitPromise: true,
-      returnByValue: true,
-    );
-    final reloadedSrcModuleLibraries = (remoteObject.value as List).cast<Map>();
-    final reloadedModulesToLibraries = <String, List<String>>{};
-    for (final srcModuleLibrary in reloadedSrcModuleLibraries) {
-      final srcModuleLibraryCast = srcModuleLibrary.cast<String, Object>();
-      reloadedSrcs.add(
-        Uri.parse(srcModuleLibraryCast['src'] as String).normalizePath().path,
-      );
-      reloadedModulesToLibraries[srcModuleLibraryCast['module'] as String] =
-          (srcModuleLibraryCast['libraries'] as List).cast<String>();
-    }
-    computedReloadedSrcs.complete();
-    if (reloadedSrcs.isNotEmpty) await parsedAllReloadedSrcs.future;
-    await parsedScriptsSubscription.cancel();
-
-    if (!pauseIsolatesOnStart) {
-      // Finish hot reload immediately.
-      _logger.info('Issuing \$dartHotReloadEndDwds request');
-      await inspector.jsEvaluate(
-        '\$dartHotReloadEndDwds();',
-        awaitPromise: true,
-      );
-      _logger.info('\$dartHotReloadEndDwds request complete.');
-      // TODO(srujzs): Supposedly Dart DevTools uses a kIsolateReload event
-      // for breakpoints? We should confirm and add tests before sending the
-      // event.
-      return;
-    }
-    // If `pause_isolates_on_start` is enabled, pause and then the reload
-    // should finish later after the client removes breakpoints, reregisters
-    // breakpoints, and resumes.
-    _finishHotReloadOnResume = () async {
-      // Client finished setting breakpoints, called resume, and now the
-      // execution has resumed. Finish the hot reload so we start executing
-      // the new code instead.
-      _logger.info('Issuing \$dartHotReloadEndDwds request');
-      await inspector.jsEvaluate(
-        '\$dartHotReloadEndDwds();',
-        awaitPromise: true,
-      );
-      _logger.info('\$dartHotReloadEndDwds request complete.');
-    };
-
-    // Pause and wait for the pause to occur before managing breakpoints.
-    await pause(isolateId, internalPause: true);
-
-    await _reinitializeForHotReload(reloadedModulesToLibraries);
-
-    // This lets the client know that we're ready for breakpoint management
-    // and a resume.
-    streamNotify(
-      'Debug',
-      Event(
-        kind: EventKind.kPausePostRequest,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        isolate: inspector.isolateRef,
-      ),
-    );
-  }
-
-  @override
-  Future<Success> removeBreakpoint(String isolateId, String breakpointId) =>
-      wrapInErrorHandlerAsync(
-        'removeBreakpoint',
-        () => _removeBreakpoint(isolateId, breakpointId),
-      );
-
-  Future<Success> _removeBreakpoint(
-    String isolateId,
-    String breakpointId,
-  ) async {
-    await isInitialized;
-    checkIsolate('removeBreakpoint', isolateId);
-    return (await debuggerFuture).removeBreakpoint(breakpointId);
-  }
-
-  @override
-  Future<Success> resume(String isolateId, {String? step, int? frameIndex}) =>
-      wrapInErrorHandlerAsync(
-        'resume',
-        () => _resume(isolateId, step: step, frameIndex: frameIndex),
-      );
-
-  Future<Success> _resume(
-    String isolateId, {
-    String? step,
-    int? frameIndex,
-  }) async {
-    // If there is a subscriber listening for a resume event after hot-restart,
-    // then add the event to the stream and skip processing it.
-    if (resumeAfterRestartEventsController.hasListener) {
-      resumeAfterRestartEventsController.add(isolateId);
-      return Success();
-    }
-
-    if (inspector.appConnection.isStarted) {
-      await captureElapsedTime(() async {
-        await isInitialized;
-        await isStarted;
-        checkIsolate('resume', isolateId);
-        final debugger = await debuggerFuture;
-        return await debugger.resume(step: step, frameIndex: frameIndex);
-      }, (result) => DwdsEvent.resume(step));
-    } else {
-      inspector.appConnection.runMain();
-    }
-    // Finish the hot reload if needed.
-    if (_finishHotReloadOnResume != null) {
-      await _finishHotReloadOnResume!();
-      _finishHotReloadOnResume = null;
-    }
-    return Success();
-  }
-
-  /// This method is deprecated in vm_service package.
-  ///
-  /// TODO(annagrin): remove after dart-code and IntelliJ stop using this API.
-  /// Issue: https://github.com/dart-lang/webdev/issues/1868
-  ///
-  // ignore: annotate_overrides
-  Future<Success> setExceptionPauseMode(
-    String isolateId,
-    /*ExceptionPauseMode*/
-    String mode,
-  ) => setIsolatePauseMode(isolateId, exceptionPauseMode: mode);
-
-  @override
-  Future<Success> setIsolatePauseMode(
-    String isolateId, {
-    String? exceptionPauseMode,
-    // TODO(elliette): Is there a way to respect the shouldPauseOnExit parameter
-    // in Chrome?
-    bool? shouldPauseOnExit,
-  }) => wrapInErrorHandlerAsync(
-    'setIsolatePauseMode',
-    () =>
-        _setIsolatePauseMode(isolateId, exceptionPauseMode: exceptionPauseMode),
-  );
-
-  Future<Success> _setIsolatePauseMode(
-    String isolateId, {
-    String? exceptionPauseMode,
-  }) async {
-    await isInitialized;
-    checkIsolate('setIsolatePauseMode', isolateId);
-    return (await debuggerFuture).setExceptionPauseMode(
-      exceptionPauseMode ?? ExceptionPauseMode.kNone,
-    );
-  }
-
-  /// Returns a streamController that listens for console logs from chrome and
-  /// adds all events passing [filter] to the stream.
-  StreamController<Event> _chromeConsoleStreamController(
-    bool Function(ConsoleAPIEvent) filter, {
-    bool includeExceptions = false,
-  }) {
-    late StreamController<Event> controller;
-    StreamSubscription? chromeConsoleSubscription;
-    StreamSubscription? exceptionsSubscription;
-
-    // This is an edge case for this lint apparently
-    //
-    // ignore: join_return_with_assignment
-    controller = StreamController<Event>.broadcast(
-      onCancel: () {
-        chromeConsoleSubscription?.cancel();
-        exceptionsSubscription?.cancel();
-      },
-      onListen: () {
-        chromeConsoleSubscription = remoteDebugger.onConsoleAPICalled.listen((
-          e,
-        ) {
-          if (!isIsolateRunning) return;
-          final isolateRef = inspector.isolateRef;
-          if (!filter(e)) return;
-          final args = e.params?['args'] as List?;
-          final item = args?[0] as Map?;
-          final value = '${item?["value"]}\n';
-          controller.add(
-            Event(
-                kind: EventKind.kWriteEvent,
-                timestamp: DateTime.now().millisecondsSinceEpoch,
-                isolate: isolateRef,
-              )
-              ..bytes = base64.encode(utf8.encode(value))
-              ..timestamp = e.timestamp.toInt(),
-          );
-        });
-        if (includeExceptions) {
-          exceptionsSubscription = remoteDebugger.onExceptionThrown.listen((
-            e,
-          ) async {
-            if (!isIsolateRunning) return;
-            final isolateRef = inspector.isolateRef;
-            var description = e.exceptionDetails.exception?.description;
-            if (description != null) {
-              description = await inspector.mapExceptionStackTrace(description);
-            }
-            controller.add(
-              Event(
-                kind: EventKind.kWriteEvent,
-                timestamp: DateTime.now().millisecondsSinceEpoch,
-                isolate: isolateRef,
-              )..bytes = base64.encode(utf8.encode(description ?? '')),
-            );
-          });
-        }
-      },
-    );
-    return controller;
-  }
-
-  /// Parses the [DebugEvent] and emits a corresponding Dart VM Service
-  /// protocol [Event].
-  @override
-  void parseDebugEvent(DebugEvent debugEvent) {
-    if (terminatingIsolates) return;
-    super.parseDebugEvent(debugEvent);
-  }
-
-  /// Parses the [RegisterEvent] and emits a corresponding Dart VM Service
-  /// protocol [Event].
-  @override
-  void parseRegisterEvent(RegisterEvent registerEvent) {
-    if (terminatingIsolates) return;
-    super.parseRegisterEvent(registerEvent);
-  }
-
-  /// Listens for chrome console events and handles the ones we care about.
-  void _setUpChromeConsoleListeners(IsolateRef isolateRef) {
-    _consoleSubscription = remoteDebugger.onConsoleAPICalled.listen((
-      event,
-    ) async {
-      if (terminatingIsolates) return;
-      if (event.type != 'debug') return;
-      if (!isIsolateRunning) return;
-
-      final isolate = inspector.isolate;
-      if (isolateRef.id != isolate.id) return;
-
-      final args = event.args;
-      final firstArgValue = (args.isNotEmpty ? args[0].value : null) as String?;
-      switch (firstArgValue) {
-        case 'dart.developer.inspect':
-          // All inspected objects should be real objects.
-          if (event.args[1].type != 'object') break;
-
-          final inspectee = await _instanceRef(event.args[1]);
-          streamNotify(
-            EventStreams.kDebug,
-            Event(
-                kind: EventKind.kInspect,
-                timestamp: DateTime.now().millisecondsSinceEpoch,
-                isolate: isolateRef,
-              )
-              ..inspectee = inspectee
-              ..timestamp = event.timestamp.toInt(),
-          );
-          break;
-        case 'dart.developer.log':
-          await _handleDeveloperLog(isolateRef, event).catchError(
-            (Object error, StackTrace stackTrace) => _logger.warning(
-              'Error handling developer log:',
-              error,
-              stackTrace,
-            ),
-          );
-          break;
-        default:
-          break;
-      }
-    });
-  }
-
-  Future<void> _handleDeveloperLog(
-    IsolateRef isolateRef,
-    ConsoleAPIEvent event,
-  ) async {
-    final logObject =
-        (event.params?['args'] as List<dynamic>?)?[1] as Map<String, dynamic>?;
-    final objectId = logObject?['objectId'] as String?;
-    // Always attempt to fetch the full properties instead of relying on
-    // `RemoteObject.preview` which only has truncated log messages:
-    // https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-RemoteObject
-    final logParams = objectId != null
-        ? await _fetchFullLogParams(objectId, logObject: logObject)
-        : _fetchAbbreviatedLogParams(logObject);
-
-    final logRecord = LogRecord(
-      message: await _instanceRef(logParams['message']),
-      loggerName: await _instanceRef(logParams['name']),
-      level: logParams['level'] != null
-          ? int.tryParse(logParams['level']!.value.toString())
-          : 0,
-      error: await _instanceRef(logParams['error']),
-      time: event.timestamp.toInt(),
-      sequenceNumber: logParams['sequenceNumber'] != null
-          ? int.tryParse(logParams['sequenceNumber']!.value.toString())
-          : 0,
-      stackTrace: await _instanceRef(logParams['stackTrace']),
-      zone: await _instanceRef(logParams['zone']),
-    );
-
-    streamNotify(
-      EventStreams.kLogging,
-      Event(
-          kind: EventKind.kLogging,
-          timestamp: DateTime.now().millisecondsSinceEpoch,
-          isolate: isolateRef,
-        )
-        ..logRecord = logRecord
-        ..timestamp = event.timestamp.toInt(),
-    );
-  }
-
-  Future<Map<String, RemoteObject>> _fetchFullLogParams(
-    String objectId, {
-    required Map<String, dynamic>? logObject,
-  }) async {
-    final logParams = <String, RemoteObject>{};
-    for (final property in await inspector.getProperties(objectId)) {
-      final name = property.name;
-      final value = property.value;
-      if (name != null && value != null) {
-        logParams[name] = value;
-      }
-    }
-
-    // If for some reason we don't get the full log params, then return the
-    // abbreviated version instead:
-    if (logParams.isEmpty) {
-      return _fetchAbbreviatedLogParams(logObject);
-    }
-    return logParams;
-  }
-
-  Map<String, RemoteObject> _fetchAbbreviatedLogParams(
-    Map<String, dynamic>? logObject,
-  ) {
-    final logParams = <String, RemoteObject>{};
-    final preview = logObject?['preview'] as Map<String, dynamic>?;
-    final properties = preview?['properties'] as List<dynamic>?;
-    for (final dynamic property in properties ?? []) {
-      if (property is Map<String, dynamic> && property['name'] != null) {
-        logParams[property['name'] as String] = RemoteObject(property);
-      }
-    }
-    return logParams;
-  }
-
-  Future<InstanceRef> _instanceRef(RemoteObject? obj) async {
-    final instance = obj == null ? null : await inspector.instanceRefFor(obj);
-    return instance ?? ChromeAppInstanceHelper.kNullInstanceRef;
-  }
-}
-
-// The default `ReloadReport`'s `toJson` only emits the type and success of the
-// operation. Override it to expose additional possible metadata in the `json`.
-// This then gets called in the VM service code that handles request and
-// responses.
-class _ReloadReportWithMetadata extends ReloadReport {
-  _ReloadReportWithMetadata({super.success});
-
-  @override
-  Map<String, dynamic> toJson() {
-    final jsonified = <String, Object?>{
-      'type': type,
-      'success': success ?? false,
-    };
-    // Include any other metadata we may have included in `json`, potentially
-    // even overriding the above defaults.
-    for (final jsonKey in super.json?.keys ?? <String>[]) {
-      jsonified[jsonKey] = super.json![jsonKey];
-    }
-    return jsonified;
-  }
-}
-
-/// The `type`s of [ConsoleAPIEvent]s that are treated as `stderr` logs.
-const _stderrTypes = ['error'];
-
-/// The `type`s of [ConsoleAPIEvent]s that are treated as `stdout` logs.
-const _stdoutTypes = ['log', 'info', 'warning'];
diff --git a/dwds/lib/src/services/debug_service.dart b/dwds/lib/src/services/debug_service.dart
deleted file mode 100644
index 8975167..0000000
--- a/dwds/lib/src/services/debug_service.dart
+++ /dev/null
@@ -1,279 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-import 'dart:math';
-import 'dart:typed_data';
-
-import 'package:dds/dds_launcher.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/services/proxy_service.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:logging/logging.dart';
-import 'package:meta/meta.dart';
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:shelf_web_socket/shelf_web_socket.dart';
-import 'package:stream_channel/stream_channel.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-bool _acceptNewConnections = true;
-
-final _clientConnections = <int, StreamChannel>{};
-int _clientId = 0;
-
-Logger _logger = Logger('DebugService');
-
-/// Common interface for debug services (Chrome or WebSocket based).
-abstract class DebugService<T extends ProxyService> {
-  DebugService({
-    required this.serverHostname,
-    required this.ddsConfig,
-    required this.urlEncoder,
-    required this.useSse,
-  });
-
-  /// The URI pointing to the VM service implementation hosted by the
-  /// [DebugService].
-  String get uri => _uri.toString();
-
-  Uri get _uri => _cachedUri ??= () {
-    final dds = _dds;
-    if (ddsConfig.enable && dds != null) {
-      return useSse ? dds.sseUri : dds.wsUri;
-    }
-    return useSse
-        ? Uri(
-            scheme: 'sse',
-            host: _server.address.host,
-            port: _server.port,
-            path: '$authToken/\$debugHandler',
-          )
-        : Uri(
-            scheme: 'ws',
-            host: _server.address.host,
-            port: _server.port,
-            path: authToken,
-          );
-  }();
-
-  Uri? _cachedUri;
-  String? _ddsUri;
-
-  late final T proxyService;
-
-  final UrlEncoder? urlEncoder;
-
-  late final String authToken = _makeAuthToken();
-  final bool useSse;
-
-  Future<String> get encodedUri async {
-    return _encodedUri ??= await urlEncoder?.call(uri) ?? uri;
-  }
-
-  String? _encodedUri;
-
-  DartDevelopmentServiceConfiguration ddsConfig;
-  DartDevelopmentServiceLauncher? _dds;
-
-  final String serverHostname;
-  late final HttpServer _server;
-
-  String get hostname => _uri.host;
-  int get port => _uri.port;
-
-  final serviceExtensionRegistry = ServiceExtensionRegistry();
-
-  /// Null until [close] is called.
-  ///
-  /// All subsequent calls to [close] will return this future.
-  Future<void>? _closed;
-
-  @protected
-  @mustCallSuper
-  @mustBeOverridden
-  // False positive
-  // ignore: avoid-redundant-async
-  Future<void> initialize({required T proxyService}) async {
-    this.proxyService = proxyService;
-  }
-
-  @protected
-  Future<void> serve({required shelf.Handler handler}) async {
-    _server = await startHttpServer(serverHostname, port: 44456);
-    serveHttpRequests(_server, handler, (e, s) {
-      _logger.warning('Error serving requests', e);
-      emitEvent(DwdsEvent.httpRequestException('$runtimeType', '$e:$s'));
-    });
-  }
-
-  /// Closes the debug service and associated resources.
-  Future<void> close() => _closed ??= Future.wait([
-    _server.close(),
-    if (_dds != null) _dds!.shutdown(),
-  ]);
-
-  Future<DartDevelopmentServiceLauncher> startDartDevelopmentService() async {
-    // Note: DDS can handle both web socket and SSE connections with no
-    // additional configuration.
-    final hostname = _server.address.host;
-    _dds = await DartDevelopmentServiceLauncher.start(
-      appName: ddsConfig.appName ?? 'Unknown web app',
-      remoteVmServiceUri: Uri(
-        scheme: 'http',
-        host: hostname,
-        port: _server.port,
-        path: authToken,
-      ),
-      serviceUri: Uri(
-        scheme: 'http',
-        host: hostname,
-        port: ddsConfig.port ?? 0,
-      ),
-      devToolsServerAddress: ddsConfig.devToolsServerAddress,
-      serveDevTools: ddsConfig.serveDevTools,
-      dartExecutable: ddsConfig.dartExecutable,
-    );
-    return _dds!;
-  }
-
-  void yieldControlToDDS(String uri) {
-    // We track the URI of the connected DDS instance seperately instead of
-    // relying on _dds being non-null as there's no guarantee that DWDS is the
-    // tool starting DDS.
-    if (_ddsUri != null) {
-      // This exception is identical to the one thrown from
-      // sdk/lib/vmservice/vmservice.dart
-      throw RPCError(
-        '_yieldControlToDDS',
-        RPCErrorKind.kFeatureDisabled.code,
-        'A DDS instance is already connected at $_ddsUri.',
-        {'ddsUri': _ddsUri.toString()},
-      );
-    }
-    _acceptNewConnections = false;
-    _ddsUri = uri;
-  }
-
-  @protected
-  shelf.Handler initializeWebSocketHandler({
-    required ProxyService proxyService,
-    void Function(Map<String, Object>)? onRequest,
-    void Function(Map<String, Object?>)? onResponse,
-  }) {
-    return _wrapHandler(
-      webSocketHandler((Object webSocket, String? subprotocol) {
-        handleConnection(
-          webSocket as StreamChannel,
-          proxyService,
-          serviceExtensionRegistry,
-          onRequest: onRequest,
-          onResponse: onResponse,
-        );
-      }),
-      authToken: authToken,
-    );
-  }
-
-  shelf.Handler _wrapHandler(shelf.Handler innerHandler, {String? authToken}) {
-    return (shelf.Request request) {
-      if (!_acceptNewConnections) {
-        return shelf.Response.forbidden(
-          'Cannot connect directly to the VM service as a Dart Development '
-          'Service (DDS) instance has taken control and can be found at '
-          '$_ddsUri.',
-        );
-      }
-      if (authToken != null && request.url.pathSegments.first != authToken) {
-        return shelf.Response.forbidden('Incorrect auth token');
-      }
-      return innerHandler(request);
-    };
-  }
-
-  @protected
-  @mustCallSuper
-  void handleConnection(
-    StreamChannel channel,
-    ProxyService proxyService,
-    ServiceExtensionRegistry serviceExtensionRegistry, {
-    void Function(Map<String, Object>)? onRequest,
-    void Function(Map<String, Object?>)? onResponse,
-  }) {
-    final clientId = _clientId++;
-    final responseController = StreamController<Map<String, Object?>>();
-    responseController.stream
-        .asyncMap<String>((response) async {
-          // This error indicates a successful invocation to _yieldControlToDDS.
-          // We don't have a good way to access the list of connected clients
-          // while also being able to determine which client invoked the RPC
-          // without some form of client ID.
-          //
-          // We can probably do better than this, but it will likely involve
-          // some refactoring.
-          if (response case {
-            'error': {
-              'code': DisconnectNonDartDevelopmentServiceClients.kErrorCode,
-            },
-          }) {
-            final nonDdsClients = _clientConnections.entries
-                .where((MapEntry<int, StreamChannel> e) => e.key != clientId)
-                .map((e) => e.value);
-            await Future.wait([
-              for (final client in nonDdsClients) client.sink.close(),
-            ]);
-            // Remove the artificial error and return Success.
-            response.remove('error');
-            response['result'] = Success().toJson();
-          }
-          if (onResponse != null) onResponse(response);
-          return jsonEncode(response);
-        })
-        .listen(channel.sink.add, onError: channel.sink.addError);
-    final inputStream = channel.stream.map((value) {
-      if (value is List<int>) {
-        value = utf8.decode(value);
-      } else if (value is! String) {
-        throw StateError(
-          'Got value with unexpected type ${value.runtimeType} from web '
-          'socket, expected a List<int> or String.',
-        );
-      }
-      final request = Map<String, Object>.from(
-        jsonDecode(value as String) as Map,
-      );
-      if (onRequest != null) onRequest(request);
-      return request;
-    });
-    VmServerConnection(
-      inputStream,
-      responseController.sink,
-      serviceExtensionRegistry,
-      proxyService,
-    ).done.whenComplete(() {
-      _clientConnections.remove(clientId);
-      if (!_acceptNewConnections && _clientConnections.isEmpty) {
-        // DDS has disconnected so we can allow for clients to connect directly
-        // to DWDS.
-        _ddsUri = null;
-        _acceptNewConnections = true;
-      }
-    });
-    _clientConnections[clientId] = channel;
-  }
-
-  // Creates a random auth token for more secure connections.
-  String _makeAuthToken() {
-    final tokenBytes = 8;
-    final bytes = Uint8List(tokenBytes);
-    final random = Random.secure();
-    for (var i = 0; i < tokenBytes; i++) {
-      bytes[i] = random.nextInt(256);
-    }
-    return base64Url.encode(bytes);
-  }
-}
diff --git a/dwds/lib/src/services/expression_compiler.dart b/dwds/lib/src/services/expression_compiler.dart
deleted file mode 100644
index 15e1433..0000000
--- a/dwds/lib/src/services/expression_compiler.dart
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2020, 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.
-
-/// Options passed to DDC and the expression compiler.
-class CompilerOptions {
-  final ModuleFormat moduleFormat;
-
-  final bool canaryFeatures;
-  final List<String> experiments;
-
-  /// Whether the compiler allows the deprecated JS interop libraries, such as
-  /// `dart:html`.
-  ///
-  /// If `null`, no flag is passed and the compiler default is used.
-  final bool? deprecatedJsInterop;
-
-  CompilerOptions({
-    required this.moduleFormat,
-    required this.canaryFeatures,
-    required this.experiments,
-    this.deprecatedJsInterop,
-  });
-}
-
-/// Indicates the module system DDC is targeting.
-enum ModuleFormat { amd, ddc, es6 }
-
-/// Result of compilation of dart expression to JavaScript
-class ExpressionCompilationResult {
-  final bool isError;
-  final String result;
-
-  /// Result of compilation from dart to JavaScript
-  ///
-  /// [result] JavaScript expression as String, or error message
-  /// if compilation has failed
-  /// [isError] true if compilation has failed, false otherwise
-  ExpressionCompilationResult(this.result, this.isError);
-
-  @override
-  String toString() => 'result: $result, isError:$isError';
-}
-
-/// Interface to provide means of compiling expressions from dart to JavaScript
-/// used to implement expression evaluation in any tools using dwds
-abstract class ExpressionCompiler {
-  /// Compiles [expression] in [libraryUri] at [line]:[column] to JavaScript
-  /// in [moduleName].
-  ///
-  /// Values listed in [jsFrameValues] are substituted for their names in the
-  /// [expression].
-  ///
-  /// Ensures that all [jsModules] are loaded and accessible inside the
-  /// expression.
-  ///
-  /// Returns [ExpressionCompilationResult]
-  /// Errors are reported using onDiagnostic function
-  /// [moduleName] is of the form '/packages/hello_world_main.dart'
-  /// [jsFrameValues] is a map from js variable name to its primitive value
-  /// or another variable name, for example
-  /// { 'x': '1', 'y': 'y', 'o': 'null' }
-  /// [jsModules] is a map from variable name to the module name, where
-  /// variable name is the name originally used in JavaScript to contain the
-  /// module object, for example:
-  /// { 'dart':'dart_sdk', 'main': '/packages/hello_world_main.dart' }
-  ///
-  /// Should wait for the dependencies to update if called during a call to
-  /// [updateDependencies].
-  Future<ExpressionCompilationResult> compileExpressionToJs(
-    String isolateId,
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  );
-
-  /// Trigger (re-)load of kernel files for modules.
-  ///
-  /// (Re-)load summaries for changed modules and trigger reload
-  /// of full dill file for module on first expression evaluation
-  /// in the module.
-  ///
-  /// [modules]: moduleName -> moduleInfo
-  ///
-  /// [updateDependencies] is called during isolate creation.
-  Future<bool> updateDependencies(Map<String, ModuleInfo> modules);
-
-  /// Initializes the compiler with the app build settings.
-  ///
-  /// May be called multiple times and always before [updateDependencies].
-  Future<void> initialize(CompilerOptions options);
-}
-
-class ModuleInfo {
-  final String fullDillPath;
-  final String summaryPath;
-
-  ModuleInfo(this.fullDillPath, this.summaryPath);
-
-  @override
-  String toString() => '{ $fullDillPath, $summaryPath }';
-}
diff --git a/dwds/lib/src/services/expression_compiler_service.dart b/dwds/lib/src/services/expression_compiler_service.dart
deleted file mode 100644
index cf5cc12..0000000
--- a/dwds/lib/src/services/expression_compiler_service.dart
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:isolate';
-
-import 'package:async/async.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/utilities/sdk_configuration.dart';
-import 'package:logging/logging.dart';
-import 'package:meta/meta.dart';
-
-/// Returns the arguments for the DDC expression compiler worker.
-@visibleForTesting
-List<String> expressionCompilerWorkerArgs({
-  required Uri sdkSummaryUri,
-  required String address,
-  required int port,
-  required CompilerOptions compilerOptions,
-  required bool verbose,
-}) => [
-  '--experimental-expression-compiler',
-  '--dart-sdk-summary',
-  '$sdkSummaryUri',
-  '--asset-server-address',
-  address,
-  '--asset-server-port',
-  '$port',
-  '--module-format',
-  compilerOptions.moduleFormat.name,
-  if (verbose) '--verbose',
-  for (final experiment in compilerOptions.experiments)
-    '--enable-experiment=$experiment',
-  if (compilerOptions.canaryFeatures) '--canary',
-  ?_deprecatedJsInteropArg(compilerOptions.deprecatedJsInterop),
-];
-
-/// The `--[no-]deprecated-js-interop` argument, or `null` to use the compiler
-/// default.
-String? _deprecatedJsInteropArg(bool? deprecatedJsInterop) =>
-    switch (deprecatedJsInterop) {
-      null => null,
-      true => '--deprecated-js-interop',
-      false => '--no-deprecated-js-interop',
-    };
-
-class _Compiler {
-  static final _logger = Logger('ExpressionCompilerService');
-  final StreamQueue<dynamic> _responseQueue;
-  final ReceivePort _receivePort;
-  final SendPort _sendPort;
-
-  Future<void>? _dependencyUpdate;
-
-  _Compiler._(this._responseQueue, this._receivePort, this._sendPort);
-
-  /// Sends [request] on [_sendPort] and returns the next event from the
-  /// response stream.
-  Future<Map<String, dynamic>> _send(Map<String, Object> request) async {
-    _sendPort.send(request);
-    if (!await _responseQueue.hasNext) {
-      return {
-        'succeeded': false,
-        'errors': ['compilation worker response stream closed'],
-      };
-    }
-    final response = await _responseQueue.next;
-    if (response is! Map<String, dynamic>) {
-      return {
-        'succeeded': false,
-        'errors': ['compilation worker returned invalid response: $response'],
-      };
-    }
-    return response;
-  }
-
-  /// Starts expression compilation service.
-  ///
-  /// Starts expression compiler worker in an isolate and creates the
-  /// expression compilation service that communicates to the worker.
-  ///
-  /// [sdkConfiguration] describes the locations of SDK files used in
-  /// expression compilation (summaries, libraries spec, compiler worker
-  /// snapshot).
-  ///
-  /// Performs handshake with the isolate running expression compiler
-  /// worker to establish communication via send/receive ports, returns
-  /// the service after the communication is established.
-  ///
-  /// Users need to stop the service by calling [stop].
-  static Future<_Compiler> start(
-    String address,
-    int port,
-    SdkConfiguration sdkConfiguration,
-    CompilerOptions compilerOptions,
-    bool verbose,
-  ) async {
-    sdkConfiguration.validateSdkDir();
-    sdkConfiguration.validateSummaries();
-
-    final workerUri = sdkConfiguration.compilerWorkerUri!;
-    final sdkSummaryUri = sdkConfiguration.sdkSummaryUri!;
-
-    final args = expressionCompilerWorkerArgs(
-      sdkSummaryUri: sdkSummaryUri,
-      address: address,
-      port: port,
-      compilerOptions: compilerOptions,
-      verbose: verbose,
-    );
-
-    _logger.info('Starting...');
-    _logger.finest('$workerUri ${args.join(' ')}');
-
-    final receivePort = ReceivePort();
-    await Isolate.spawnUri(
-      workerUri,
-      args,
-      receivePort.sendPort,
-      // Note(annagrin): ddc snapshot is generated with no asserts, so we have
-      // to run it unchecked in case the calling isolate is checked, as it
-      // happens, for example, when debugging webdev in VSCode or running tests
-      // using 'dart run'
-      checked: false,
-    );
-
-    final responseQueue = StreamQueue(receivePort);
-    final sendPort = await responseQueue.next as SendPort;
-
-    final service = _Compiler._(responseQueue, receivePort, sendPort);
-
-    return service;
-  }
-
-  Future<bool> updateDependencies(Map<String, ModuleInfo> modules) async {
-    final updateCompleter = Completer<void>();
-    _dependencyUpdate = updateCompleter.future;
-
-    _logger.info('Updating dependencies...');
-    _logger.finest('Dependencies: $modules');
-
-    final response = await _send({
-      'command': 'UpdateDeps',
-      'inputs': [
-        for (final moduleName in modules.keys)
-          {
-            'path': modules[moduleName]!.fullDillPath,
-            'summaryPath': modules[moduleName]!.summaryPath,
-            'moduleName': moduleName,
-          },
-      ],
-    });
-    final result = (response['succeeded'] as bool?) ?? false;
-    if (result) {
-      _logger.info('Updated dependencies.');
-    } else {
-      final errors = response['errors'];
-      final exception = response['exception'];
-      final s = response['stackTrace'] as String?;
-      final stackTrace = s == null ? null : StackTrace.fromString(s);
-      _logger.severe(
-        'Failed to update dependencies: $errors',
-        exception,
-        stackTrace,
-      );
-    }
-    updateCompleter.complete();
-    return result;
-  }
-
-  Future<ExpressionCompilationResult> compileExpressionToJs(
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  ) async {
-    _logger.finest('Waiting for dependencies to update');
-    if (_dependencyUpdate == null) {
-      _logger.warning(
-        'Dependencies are not updated before compiling expressions',
-      );
-      return ExpressionCompilationResult('<compiler is not ready>', true);
-    }
-
-    await _dependencyUpdate;
-
-    _logger.finest('Compiling "$expression" at $libraryUri:$line');
-
-    final response = await _send({
-      'command': 'CompileExpression',
-      'expression': expression,
-      'line': line,
-      'column': column,
-      'jsModules': jsModules,
-      'jsScope': jsFrameValues,
-      'libraryUri': libraryUri,
-      'scriptUri': scriptUri,
-      'moduleName': moduleName,
-    });
-
-    final error = _createErrorMsg(response);
-    final procedure = (response['compiledProcedure'] as String?) ?? '';
-    final succeeded = (response['succeeded'] as bool?) ?? false;
-    final result = succeeded ? procedure : error;
-
-    if (succeeded) {
-      _logger.finest('Compiled "$expression" to: $result');
-    } else {
-      _logger.finest('Failed to compile "$expression": $result');
-    }
-    return ExpressionCompilationResult(result, !succeeded);
-  }
-
-  String _createErrorMsg(Map<String, dynamic> response) {
-    final errors = response['errors'] as List<String>?;
-    if (errors != null && errors.isNotEmpty) return errors.first;
-
-    final e = response['exception'];
-    final s = response['stackTrace'];
-    return e != null ? '$e:$s' : '<unknown error>';
-  }
-
-  /// Stops the service.
-  ///
-  /// Terminates the isolate running expression compiler worker
-  /// and marks the service as stopped.
-  void stop() {
-    _sendPort.send({'command': 'Shutdown'});
-    _receivePort.close();
-    _logger.info('Stopped.');
-  }
-}
-
-/// Service that handles expression compilation requests.
-///
-/// Expression compiler service spawns a dartdevc in expression compilation
-/// mode in an isolate and communicates with the isolate via send/receive
-/// ports. It also handles full dill file read requests from the isolate
-/// and redirects them to the asset server.
-///
-/// Uses [_address] and [_port] to communicate and to redirect asset
-/// requests to the asset server.
-///
-/// Configuration created by [sdkConfigurationProvider] describes the
-/// locations of SDK files used in expression compilation (summaries,
-/// libraries spec, compiler worker snapshot).
-///
-/// Users need to stop the service by calling [stop].
-class ExpressionCompilerService implements ExpressionCompiler {
-  final _compiler = Completer<_Compiler>();
-  final String _address;
-  final FutureOr<int> _port;
-  final bool _verbose;
-
-  final SdkConfigurationProvider sdkConfigurationProvider;
-
-  ExpressionCompilerService(
-    this._address,
-    this._port, {
-    this._verbose = false,
-    required this.sdkConfigurationProvider,
-  });
-
-  @override
-  Future<ExpressionCompilationResult> compileExpressionToJs(
-    String isolateId,
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  ) async => (await _compiler.future).compileExpressionToJs(
-    libraryUri,
-    scriptUri,
-    line,
-    column,
-    jsModules,
-    jsFrameValues,
-    moduleName,
-    expression,
-  );
-
-  @override
-  Future<void> initialize(CompilerOptions options) async {
-    if (_compiler.isCompleted) return;
-
-    final compiler = await _Compiler.start(
-      _address,
-      await _port,
-      await sdkConfigurationProvider.configuration,
-      options,
-      _verbose,
-    );
-
-    _compiler.complete(compiler);
-  }
-
-  @override
-  Future<bool> updateDependencies(Map<String, ModuleInfo> modules) async =>
-      (await _compiler.future).updateDependencies(modules);
-
-  Future<void> stop() async {
-    if (_compiler.isCompleted) return (await _compiler.future).stop();
-  }
-}
diff --git a/dwds/lib/src/services/expression_evaluator.dart b/dwds/lib/src/services/expression_evaluator.dart
deleted file mode 100644
index 1230b96..0000000
--- a/dwds/lib/src/services/expression_evaluator.dart
+++ /dev/null
@@ -1,566 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/dart_scope.dart';
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/modules.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/javascript_builder.dart';
-import 'package:dwds/src/utilities/conversions.dart';
-import 'package:dwds/src/utilities/objects.dart' as chrome;
-import 'package:logging/logging.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-class EvaluationErrorKind {
-  EvaluationErrorKind._();
-
-  static const compilation = 'CompilationError';
-  static const type = 'TypeError';
-  static const reference = 'ReferenceError';
-  static const internal = 'InternalError';
-  static const asyncFrame = 'AsyncFrameError';
-  static const invalidInput = 'InvalidInputError';
-  static const loadModule = 'LoadModuleError';
-}
-
-/// ExpressionEvaluator provides functionality to evaluate dart expressions
-/// from text user input in the debugger, using chrome remote debugger to
-/// collect context for evaluation (scope, types, modules), and using
-/// ExpressionCompilerInterface to compile dart expressions to JavaScript.
-class ExpressionEvaluator {
-  final String _entrypoint;
-  final ChromeAppInspector _inspector;
-  final Debugger _debugger;
-  final Locations _locations;
-  final Modules _modules;
-  final ExpressionCompiler _compiler;
-  final _logger = Logger('ExpressionEvaluator');
-  bool _closed = false;
-
-  /// Strip synthetic library name from compiler error messages.
-  static final _syntheticNameFilterRegex = RegExp(
-    'org-dartlang-debug:synthetic_debug_expression:.*:.*Error: ',
-  );
-
-  /// Find module path from the XHR call network error message received from
-  /// chrome.
-  ///
-  /// Example:
-  /// NetworkError: Failed to load `http://<hostname>.com/path/to/module.js?<cache_busting_token>`
-  static final _loadModuleErrorRegex = RegExp(
-    r".*Failed to load '.*\.com/(.*\.js).*",
-  );
-
-  ExpressionEvaluator(
-    this._entrypoint,
-    this._inspector,
-    this._debugger,
-    this._locations,
-    this._modules,
-    this._compiler,
-  );
-
-  /// Create and error with [severity] and [message]
-  ///
-  /// [severity] is one of kinds in [EvaluationErrorKind]
-  RemoteObject createError(String severity, String message) {
-    return RemoteObject(<String, String>{'type': severity, 'value': message});
-  }
-
-  void close() {
-    _closed = true;
-  }
-
-  /// Evaluate dart expression inside a given library.
-  ///
-  /// Uses ExpressionCompiler interface to compile the expression to
-  /// JavaScript and sends evaluate requests to chrome to calculate
-  /// the final result.
-  ///
-  /// Returns remote object containing the result of evaluation or error.
-  ///
-  /// [isolateId] current isolate ID.
-  /// [libraryUri] dart library to evaluate the expression in.
-  /// [expression] dart expression to evaluate.
-  Future<RemoteObject> evaluateExpression(
-    String isolateId,
-    String? libraryUri,
-    String expression,
-    Map<String, String>? scope,
-  ) async {
-    if (_closed) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'expression evaluator closed.',
-      );
-    }
-
-    scope ??= {};
-
-    if (expression.isEmpty) {
-      return createError(EvaluationErrorKind.invalidInput, expression);
-    }
-
-    if (libraryUri == null) {
-      return createError(EvaluationErrorKind.invalidInput, 'no library uri');
-    }
-
-    final module = await _modules.moduleForLibrary(libraryUri);
-    if (module == null) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'no module for $libraryUri',
-      );
-    }
-
-    // Wrap the expression in a lambda so we can call it as a function.
-    expression = _createDartLambda(expression, scope.keys);
-    _logger.finest('Evaluating "$expression" at $module');
-
-    // Compile expression using an expression compiler, such as
-    // frontend server or expression compiler worker.
-    final compilationResult = await _compiler.compileExpressionToJs(
-      isolateId,
-      libraryUri.toString(),
-      // Evaluating at "the library level" (and passing line 0 column 0) we'll
-      // also just pass the library uri as the script uri.
-      libraryUri.toString(),
-      0,
-      0,
-      {},
-      {},
-      module,
-      expression,
-    );
-
-    final isError = compilationResult.isError;
-    final jsResult = compilationResult.result;
-    if (isError) {
-      return _formatCompilationError(jsResult);
-    }
-
-    // Strip try/catch incorrectly added by the expression compiler.
-    final jsCode = _maybeStripTryCatch(jsResult);
-
-    // Send JS expression to chrome to evaluate.
-    var result = await _callJsFunction(jsCode, scope);
-    result = await _formatEvaluationError(result);
-
-    _logger.finest('Evaluated "$expression" to "${result.json}"');
-    return result;
-  }
-
-  /// Evaluate dart expression inside a given frame (function).
-  ///
-  /// Gets necessary context (types, scope, module names) data from chrome,
-  /// uses ExpressionCompiler interface to compile the expression to
-  /// JavaScript, and sends evaluate requests to chrome to calculate the
-  /// final result.
-  ///
-  /// Returns remote object containing the result of evaluation or error.
-  ///
-  /// [isolateId] current isolate ID.
-  /// [frameIndex] JavaScript frame to evaluate the expression in.
-  /// [expression] dart expression to evaluate.
-  /// [scope] additional scope to use in the expression as a map from
-  ///   variable names to remote object IDs.
-  ///
-  /////////////////////////////////
-  /// **Example - without scope**
-  ///
-  /// To evaluate a dart expression `e`, we perform the following:
-  ///
-  /// 1. compile dart expression `e` to JavaScript expression `jsExpr`
-  ///    using the expression compiler (i.e. frontend server or expression
-  ///    compiler worker).
-  ///
-  /// 2. create JavaScript wrapper expression, `jsWrapperExpr`, defined as
-  ///
-  ///    ```JavaScript
-  ///    try {
-  ///      jsExpr;
-  ///    } catch (error) {
-  ///      error.name + ": " + error.message;
-  ///    }
-  ///    ```
-  ///
-  /// 3. evaluate `JsExpr` using `Debugger.evaluateOnCallFrame` chrome API.
-  ///
-  /// //////////////////////////
-  /// **Example - with scope**
-  ///
-  /// To evaluate a dart expression
-  /// ```dart
-  ///   this.t + a + x + y
-  /// ```
-  /// in a dart scope that defines `a` and `this`, and additional scope
-  /// `x, y`, we perform the following:
-  ///
-  /// 1. compile dart function
-  ///
-  ///    ```dart
-  ///    (x, y, a) { return this.t + a + x + y; }
-  ///    ```
-  ///
-  ///    to JavaScript function
-  ///
-  ///    ```jsFunc```
-  ///
-  ///    using the expression compiler (i.e. frontend server or expression
-  ///    compiler worker).
-  ///
-  /// 2. create JavaScript wrapper function, `jsWrapperFunc`, defined as
-  ///
-  ///    ```JavaScript
-  ///    function (x, y, a, __t$this) {
-  ///      try {
-  ///        return function (x, y, a) {
-  ///          return jsFunc(x, y, a);
-  ///        }.bind(__t$this)(x, y, a);
-  ///      } catch (error) {
-  ///        return error.name + ": " + error.message;
-  ///      }
-  ///    }
-  ///    ```
-  ///
-  /// 3. collect scope variable object IDs for total scope
-  ///    (original frame scope from WipCallFrame + additional scope passed
-  ///    by the user).
-  ///
-  /// 4. call `jsWrapperFunc` using `Runtime.callFunctionOn` chrome API
-  ///    with scope variable object IDs passed as arguments.
-  Future<RemoteObject> evaluateExpressionInFrame(
-    String isolateId,
-    int frameIndex,
-    String expression,
-    Map<String, String>? scope,
-  ) async {
-    scope ??= {};
-
-    if (expression.isEmpty) {
-      return createError(EvaluationErrorKind.invalidInput, expression);
-    }
-
-    // Get JS scope and current JS location.
-    final jsFrame = _debugger.jsFrameForIndex(frameIndex);
-    if (jsFrame == null) {
-      return createError(
-        EvaluationErrorKind.asyncFrame,
-        'Expression evaluation in async frames '
-        'is not supported. No frame with index $frameIndex.',
-      );
-    }
-
-    final functionName = jsFrame.functionName;
-    final jsLine = jsFrame.location.lineNumber;
-    final jsScriptId = jsFrame.location.scriptId;
-    final jsColumn = jsFrame.location.columnNumber;
-    final frameScope = await _collectLocalFrameScope(jsFrame);
-
-    // Find corresponding dart location and scope.
-    final url = _debugger.urlForScriptId(jsScriptId);
-    if (url == null) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'Cannot find url for JS script: $jsScriptId',
-      );
-    }
-    final locationMap = await _locations.locationForJs(url, jsLine, jsColumn);
-    if (locationMap == null) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'Cannot find Dart location for JS location: '
-        'url: $url, '
-        'function: $functionName, '
-        'line: $jsLine, '
-        'column: $jsColumn',
-      );
-    }
-
-    final dartLocation = locationMap.dartLocation;
-    final dartSourcePath = dartLocation.uri.serverPath;
-    final libraryUri = await _modules.libraryForSource(dartSourcePath);
-    final scriptUri = await _modules.libraryOrPartForSource(dartSourcePath);
-    if (libraryUri == null) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'no libraryUri for $dartSourcePath',
-      );
-    }
-
-    final module = await _modules.moduleForLibrary(libraryUri.toString());
-    if (module == null) {
-      return createError(
-        EvaluationErrorKind.internal,
-        'no module for $libraryUri ($dartSourcePath)',
-      );
-    }
-
-    _logger.finest(
-      'Evaluating "$expression" at $module, '
-      '$libraryUri:${dartLocation.line}:${dartLocation.column} '
-      'or rather $scriptUri:${dartLocation.line}:${dartLocation.column} '
-      'with scope: $scope',
-    );
-
-    if (scope.isNotEmpty) {
-      final totalScope = Map<String, String>.from(scope)..addAll(frameScope);
-      expression = _createDartLambda(expression, totalScope.keys);
-    }
-
-    _logger.finest('Compiling "$expression"');
-
-    // Compile expression using an expression compiler, such as
-    // frontend server or expression compiler worker.
-    //
-    // TODO(annagrin): map JS locals to dart locals in the expression
-    // and JS scope before passing them to the dart expression compiler.
-    // Issue:  https://github.com/dart-lang/sdk/issues/40273
-    final compilationResult = await _compiler.compileExpressionToJs(
-      isolateId,
-      libraryUri.toString(),
-      scriptUri.toString(),
-      dartLocation.line,
-      dartLocation.column,
-      {},
-      frameScope.map((key, value) => MapEntry(key, key)),
-      module,
-      expression,
-    );
-
-    final isError = compilationResult.isError;
-    final jsResult = compilationResult.result;
-    if (isError) {
-      return _formatCompilationError(jsResult);
-    }
-
-    // Strip try/catch incorrectly added by the expression compiler.
-    final jsCode = _maybeStripTryCatch(jsResult);
-
-    // Send JS expression to chrome to evaluate.
-    var result = scope.isEmpty
-        ? await _evaluateJsExpressionInFrame(frameIndex, jsCode)
-        : await _callJsFunctionInFrame(frameIndex, jsCode, scope, frameScope);
-
-    result = await _formatEvaluationError(result);
-    _logger.finest('Evaluated "$expression" to "${result.json}"');
-    return result;
-  }
-
-  /// Call JavaScript [function] with [scope] on frame [frameIndex].
-  ///
-  /// Wrap the [function] in a lambda that takes scope variables as parameters.
-  /// Send JS expression to chrome to evaluate in frame with [frameIndex]
-  /// with the provided [scope].
-  ///
-  /// [frameIndex] is the index of the frame to call the function in.
-  /// [function] is the JS function to evaluate.
-  /// [scope] is the additional scope as a map from scope variables to
-  ///   remote object IDs.
-  /// [frameScope] is the original scope as a map from scope variables
-  ///   to remote object IDs.
-  Future<RemoteObject> _callJsFunctionInFrame(
-    int frameIndex,
-    String function,
-    Map<String, String> scope,
-    Map<String, String> frameScope,
-  ) async {
-    final totalScope = Map<String, String>.from(scope)..addAll(frameScope);
-    final thisObject = await _debugger.evaluateJsOnCallFrameIndex(
-      frameIndex,
-      'this',
-    );
-
-    final thisObjectId = thisObject.objectId;
-    if (thisObjectId != null) {
-      totalScope['this'] = thisObjectId;
-    }
-
-    return _callJsFunction(function, totalScope);
-  }
-
-  /// Call the [function] with [scope] as arguments.
-  ///
-  /// Wrap the [function] in a lambda that takes scope variables as parameters.
-  /// Send JS expression to chrome to evaluate with the provided [scope].
-  ///
-  /// [function] is the JS function to evaluate.
-  /// [scope] is a map from scope variables to remote object IDs.
-  Future<RemoteObject> _callJsFunction(
-    String function,
-    Map<String, String> scope,
-  ) {
-    final jsCode = _createEvalFunction(function, scope.keys);
-
-    _logger.finest('Evaluating JS: "$jsCode" with scope: $scope');
-    return _inspector.callFunction(jsCode, scope.values);
-  }
-
-  /// Evaluate JavaScript [expression] on frame [frameIndex].
-  ///
-  /// Wrap the [expression] in a try/catch expression to catch errors.
-  /// Send JS expression to chrome to evaluate on frame [frameIndex].
-  ///
-  /// [frameIndex] is the index of the frame to call the function in.
-  /// [expression] is the JS function to evaluate.
-  Future<RemoteObject> _evaluateJsExpressionInFrame(
-    int frameIndex,
-    String expression,
-  ) {
-    final jsCode = _createEvalExpression(expression);
-
-    _logger.finest('Evaluating JS: "$jsCode"');
-    return _debugger.evaluateJsOnCallFrameIndex(frameIndex, jsCode);
-  }
-
-  static String? _getObjectId(RemoteObject? object) =>
-      object?.objectId ?? dartIdFor(object?.value);
-
-  RemoteObject _formatCompilationError(String error) {
-    // Frontend currently gives a text message including library name
-    // and function name on compilation error. Strip this information
-    // since it shows synthetic names that are only used for temporary
-    // debug library during expression evaluation.
-    //
-    // TODO(annagrin): modify frontend to avoid stripping dummy names
-    // [issue 40449](https://github.com/dart-lang/sdk/issues/40449)
-    if (error.startsWith('[')) {
-      error = error.substring(1);
-    }
-    if (error.endsWith(']')) {
-      error = error.substring(0, error.lastIndexOf(']'));
-    }
-    if (error.contains('InternalError: ')) {
-      error = error.replaceAll('InternalError: ', '');
-      return createError(EvaluationErrorKind.internal, error);
-    }
-    error = error.replaceAll(_syntheticNameFilterRegex, '');
-    return createError(EvaluationErrorKind.compilation, error);
-  }
-
-  Future<RemoteObject> _formatEvaluationError(RemoteObject result) async {
-    if (result.type == 'string') {
-      var error = '${result.value}';
-      if (error.startsWith('ReferenceError: ')) {
-        error = error.replaceFirst('ReferenceError: ', '');
-        return createError(EvaluationErrorKind.reference, error);
-      } else if (error.startsWith('TypeError: ')) {
-        error = error.replaceFirst('TypeError: ', '');
-        return createError(EvaluationErrorKind.type, error);
-      } else if (error.startsWith('NetworkError: ')) {
-        var modulePath = _loadModuleErrorRegex.firstMatch(error)?.group(1);
-        final module = modulePath != null
-            ? await globalToolConfiguration.loadStrategy.moduleForServerPath(
-                _entrypoint,
-                modulePath,
-              )
-            : 'unknown';
-        modulePath ??= 'unknown';
-        error =
-            'Module is not loaded : $module (path: $modulePath). '
-            'Accessing libraries that have not yet been used in the '
-            'application is not supported during expression evaluation.';
-        return createError(EvaluationErrorKind.loadModule, error);
-      }
-    }
-    return result;
-  }
-
-  /// Return local scope as a map from variable names to remote object IDs.
-  ///
-  /// [frame] is the current frame index.
-  Future<Map<String, String>> _collectLocalFrameScope(
-    WipCallFrame frame,
-  ) async {
-    final scope = <String, String>{};
-
-    void collectVariables(Iterable<chrome.Property> variables) {
-      for (final p in variables) {
-        final name = p.name;
-        final value = p.value;
-        // TODO: null values represent variables optimized by v8.
-        // Show that to the user.
-        if (name != null && value != null && !_isUndefined(value)) {
-          final objectId = _getObjectId(p.value);
-          if (objectId != null) {
-            scope[name] = objectId;
-          }
-        }
-      }
-    }
-
-    // skip library and main scope
-    final scopeChain = filterScopes(frame).reversed;
-    for (final scope in scopeChain) {
-      final objectId = scope.object.objectId;
-      if (objectId != null) {
-        final scopeProperties = await _inspector.getProperties(objectId);
-        collectVariables(scopeProperties);
-      }
-    }
-
-    return scope;
-  }
-
-  bool _isUndefined(RemoteObject value) => value.type == 'undefined';
-
-  static String _createDartLambda(String expression, Iterable<String> params) =>
-      '(${params.join(', ')}) { return $expression; }';
-
-  /// Strip try/catch incorrectly added by the expression compiler.
-  /// TODO: remove adding try/catch block in expression compiler.
-  /// https://github.com/dart-lang/webdev/issues/1341, then remove
-  /// this stripping code.
-  static String _maybeStripTryCatch(String jsCode) {
-    // Match the wrapping generated by the expression compiler exactly
-    // so the matching does not succeed naturally after the wrapping is
-    // removed:
-    //
-    // Expression compiler's wrapping:
-    //
-    // '\ntry {'
-    // '\n  ($jsExpression('
-    // '\n    $args'
-    // '\n  ))'
-    // '\n} catch (error) {'
-    // '\n  error.name + ": " + error.message;'
-    // '\n}';
-    //
-    final lines = jsCode.split('\n');
-    if (lines.length > 5) {
-      final tryLines = lines.getRange(0, 2).toList();
-      final bodyLines = lines.getRange(2, lines.length - 3);
-      final catchLines = lines
-          .getRange(lines.length - 3, lines.length)
-          .toList();
-      if (tryLines[0].isEmpty &&
-          tryLines[1] == 'try {' &&
-          catchLines[0] == '} catch (error) {' &&
-          catchLines[1] == '  error.name + ": " + error.message;' &&
-          catchLines[2] == '}') {
-        return bodyLines.join('\n');
-      }
-    }
-    return jsCode;
-  }
-
-  /// Create JS expression to pass to `Debugger.evaluateOnCallFrame`.
-  static String _createEvalExpression(String expression) {
-    final body = expression.split('\n').where((e) => e.isNotEmpty);
-
-    return JsBuilder.createEvalExpression(body);
-  }
-
-  /// Create JS function  to invoke in `Runtime.callFunctionOn`.
-  static String _createEvalFunction(String function, Iterable<String> params) {
-    final body = function.split('\n').where((e) => e.isNotEmpty);
-
-    return params.contains('this')
-        ? JsBuilder.createEvalBoundFunction(body, params)
-        : JsBuilder.createEvalStaticFunction(body, params);
-  }
-}
diff --git a/dwds/lib/src/services/javascript_builder.dart b/dwds/lib/src/services/javascript_builder.dart
deleted file mode 100644
index cd02aee..0000000
--- a/dwds/lib/src/services/javascript_builder.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) 2023, 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.
-
-/// Efficient JavaScript code builder.
-///
-/// Used to create wrapper expressions and functions for expression evaluation.
-class JsBuilder {
-  var _indent = 0;
-  final _buffer = StringBuffer();
-
-  String? _built;
-  String build() => _built ??= _buffer.toString();
-
-  JsBuilder();
-
-  void write(String item) {
-    _buffer.write(item);
-  }
-
-  void writeLine(String item) {
-    _buffer.writeln(item);
-  }
-
-  void writeAll(Iterable<String> items, [String separator = '']) {
-    _buffer.writeAll(items, separator);
-  }
-
-  void _writeIndent() {
-    writeAll([for (var i = 0; i < _indent * 2; i++) ' '], '');
-  }
-
-  void writeWithIndent(String item) {
-    _writeIndent();
-    write(item);
-  }
-
-  void writeLineWithIndent(String line) {
-    _writeIndent();
-    writeLine(line);
-  }
-
-  void writeMultiLineExpression(Iterable<String> lines) {
-    var i = 0;
-    for (final line in lines) {
-      if (i == 0) {
-        writeLine(line);
-      } else if (i < lines.length - 1) {
-        writeLineWithIndent(line);
-      } else {
-        writeWithIndent(line);
-      }
-      i++;
-    }
-  }
-
-  void increaseIndent() {
-    _indent++;
-  }
-
-  void decreaseIndent() {
-    if (_indent != 0) _indent--;
-  }
-
-  /// Call the expression built by [build] with [args].
-  ///
-  /// $function($args);
-  void writeCallExpression(Iterable<String> args, void Function() build) {
-    build();
-    write('(');
-    writeAll(args, ', ');
-    write(')');
-  }
-
-  /// Wrap the expression built by [build] in try/catch block.
-  ///
-  /// try {
-  ///   $expression;
-  /// } catch (error) {
-  ///   error.name + ": " + error.message;
-  /// };
-  void writeTryCatchExpression(void Function() build) {
-    writeLineWithIndent('try {');
-
-    increaseIndent();
-    writeWithIndent('');
-    build();
-    writeLine('');
-    decreaseIndent();
-
-    writeLineWithIndent('} catch (error) {');
-    writeLineWithIndent('  error.name + ": " + error.message;');
-    writeWithIndent('}');
-  }
-
-  ///  Wrap the statement built by [build] in try/catch block.
-  ///
-  /// try {
-  ///   $statement
-  /// } catch (error) {
-  ///   return error.name + ": " + error.message;
-  /// };
-  void writeTryCatchStatement(void Function() build) {
-    writeLineWithIndent('try {');
-
-    increaseIndent();
-    build();
-    writeLine('');
-    decreaseIndent();
-
-    writeLineWithIndent('} catch (error) {');
-    writeLineWithIndent('  return error.name + ": " + error.message;');
-    writeWithIndent('}');
-  }
-
-  /// Return the expression built by [build].
-  ///
-  /// return $expression;
-  void writeReturnStatement(void Function() build) {
-    writeWithIndent('return ');
-    build();
-    write(';');
-  }
-
-  /// Define a function with [params] and body built by [build].
-  ///
-  /// function($args) {
-  ///   $body
-  /// };
-  void writeFunctionDefinition(Iterable<String> params, void Function() build) {
-    write('function (');
-    writeAll(params, ', ');
-    writeLine(') {');
-
-    increaseIndent();
-    build();
-    writeLine('');
-    decreaseIndent();
-
-    writeWithIndent('}');
-  }
-
-  /// Bind the function built by [build] to [to].
-  ///
-  /// $function.bind($to)
-  void writeBindExpression(String to, void Function() build) {
-    build();
-    write('.bind(');
-    write(to);
-    write(')');
-  }
-
-  /// Create a wrapper expression to evaluate the [body].
-  ///
-  /// Can be used in `Debugger.evaluateOnCallFrame` Chrome API.
-  ///
-  /// try {
-  ///   $expression;
-  /// } catch (error) {
-  ///   error.name + ": " + error.message;
-  /// }
-  static String createEvalExpression(Iterable<String> body) =>
-      (JsBuilder().._writeEvalExpression(body)).build();
-
-  void _writeEvalExpression(Iterable<String> body) {
-    writeTryCatchExpression(() {
-      writeMultiLineExpression(body);
-      write(';');
-    });
-  }
-
-  /// Create a wrapper function with [params] that calls a static [function].
-  ///
-  /// Can be used in `Runtime.callFunctionOn` Chrome API.
-  ///
-  /// function ($params) {
-  ///   try {
-  ///     return $function($params);
-  ///   } catch (error) {
-  ///     return error.name + ": " + error.message;
-  ///   }
-  /// }
-  static String createEvalStaticFunction(
-    Iterable<String> function,
-    Iterable<String> params,
-  ) => (JsBuilder().._writeEvalStaticFunction(function, params)).build();
-
-  void _writeEvalStaticFunction(
-    Iterable<String> function,
-    Iterable<String> params,
-  ) {
-    writeFunctionDefinition(
-      params,
-      () => writeTryCatchStatement(
-        () => writeReturnStatement(
-          () => writeCallExpression(params, () {
-            writeMultiLineExpression(function);
-          }),
-        ),
-      ),
-    );
-  }
-
-  /// Create a wrapper function with [params] that calls a bound [function].
-  ///
-  /// Can be used in `Runtime.callFunctionOn` Chrome API.
-  /// function ($params, __t$this) {
-  ///   try {
-  ///     return function ($params) {
-  ///       return $function($params);
-  ///     }.bind(__t$this)($params);
-  ///   } catch (error) {
-  ///     return error.name + ": " + error.message;
-  ///   }
-  /// }
-  static String createEvalBoundFunction(
-    Iterable<String> function,
-    Iterable<String> params,
-  ) => (JsBuilder().._writeEvalBoundFunction(function, params)).build();
-
-  void _writeEvalBoundFunction(
-    Iterable<String> function,
-    Iterable<String> params,
-  ) {
-    final original = 'this';
-    final substitute = '__t\$this';
-
-    final args = params.where((e) => e != original);
-    final substitutedParams = [
-      ...params.where((e) => e != original),
-      substitute,
-    ];
-
-    writeFunctionDefinition(
-      substitutedParams,
-      () => writeTryCatchStatement(
-        () => writeReturnStatement(
-          () => writeCallExpression(
-            args,
-            () => writeBindExpression(
-              substitute,
-              () => writeFunctionDefinition(
-                args,
-                () => writeReturnStatement(
-                  () => writeCallExpression(args, () {
-                    writeMultiLineExpression(function);
-                  }),
-                ),
-              ),
-            ),
-          ),
-        ),
-      ),
-    );
-  }
-}
diff --git a/dwds/lib/src/services/proxy_service.dart b/dwds/lib/src/services/proxy_service.dart
deleted file mode 100644
index 24b2642..0000000
--- a/dwds/lib/src/services/proxy_service.dart
+++ /dev/null
@@ -1,674 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/data/debug_event.dart';
-import 'package:dwds/data/hot_reload_response.dart';
-import 'package:dwds/data/hot_restart_response.dart';
-import 'package:dwds/data/register_event.dart';
-import 'package:dwds/data/service_extension_response.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/services/debug_service.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:meta/meta.dart';
-import 'package:pub_semver/pub_semver.dart' as semver;
-import 'package:vm_service/vm_service.dart' as vm_service;
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-// This event is identical to the one sent by the VM service from
-// sdk/lib/vmservice/vmservice.dart before existing VM service clients are
-// disconnected.
-final class DartDevelopmentServiceConnectedEvent extends Event {
-  DartDevelopmentServiceConnectedEvent({
-    required super.timestamp,
-    required this.uri,
-  }) : message =
-           'A Dart Developer Service instance has connected and this '
-           'direct connection to the VM service will now be closed. '
-           'Please reconnect to the Dart Development Service at $uri.',
-       super(kind: 'DartDevelopmentServiceConnected');
-
-  final String message;
-  final String uri;
-
-  @override
-  Map<String, Object?> toJson() => {
-    ...super.toJson(),
-    'uri': uri,
-    'message': message,
-  };
-}
-
-final class DisconnectNonDartDevelopmentServiceClients extends RPCError {
-  DisconnectNonDartDevelopmentServiceClients()
-    : super('_yieldControlToDDS', kErrorCode);
-
-  // Arbitrary error code that's unlikely to be used elsewhere.
-  static const kErrorCode = -199328;
-}
-
-/// Abstract base class for VM service proxy implementations.
-abstract base class ProxyService<InspectorT extends AppInspector>
-    implements VmServiceInterface {
-  /// Cache of all existing StreamControllers.
-  ///
-  /// These are all created through [onEvent].
-  final Map<String, StreamController<vm_service.Event>> _streamControllers = {};
-
-  /// Provides variable inspection functionality.
-  InspectorT get inspector {
-    if (_inspector == null) {
-      throw StateError('No running isolate (inspector is not set).');
-    }
-    return _inspector!;
-  }
-
-  @protected
-  set inspector(InspectorT? inspector) {
-    _inspector = inspector;
-  }
-
-  InspectorT? _inspector;
-
-  /// Determines if there an isolate running currently.
-  ///
-  /// [_inspector] is `null` iff the isolate is not running,
-  /// for example, before the first isolate starts or during
-  /// a hot restart.
-  bool get isIsolateRunning => _inspector != null;
-
-  /// The [DebugService] implementation.
-  final DebugService debugService;
-
-  /// The root `VM` instance.
-  final vm_service.VM vm;
-
-  /// Signals when isolate is initialized.
-  Future<void> get isInitialized => initializedCompleter.future;
-  Completer<void> initializedCompleter = Completer<void>();
-
-  static const _kPauseIsolatesOnStartFlag = 'pause_isolates_on_start';
-
-  /// The flags that can be set at runtime via [setFlag] and their respective
-  /// values.
-  final Map<String, bool> _currentVmServiceFlags = {
-    _kPauseIsolatesOnStartFlag: false,
-  };
-
-  /// The value of the [_kPauseIsolatesOnStartFlag].
-  ///
-  /// This value can be updated at runtime via [setFlag].
-  bool get pauseIsolatesOnStart =>
-      _currentVmServiceFlags[_kPauseIsolatesOnStartFlag] ?? false;
-
-  /// Stream controller for resume events after restart.
-  final _resumeAfterRestartEventsController =
-      StreamController<String>.broadcast();
-
-  /// A global stream of resume events for hot restart.
-  ///
-  /// The values in the stream are the isolates IDs for the resume event.
-  ///
-  /// IMPORTANT: This should only be listened to during a hot-restart or page
-  /// refresh. The debugger ignores any resume events as long as there is a
-  /// subscriber to this stream.
-  Stream<String> get resumeAfterRestartEventsStream =>
-      _resumeAfterRestartEventsController.stream;
-
-  /// Whether or not the connected app has a pending restart.
-  bool get hasPendingRestart => _resumeAfterRestartEventsController.hasListener;
-
-  // Protected accessors for subclasses
-  Map<String, StreamController<vm_service.Event>> get streamControllers =>
-      _streamControllers;
-  StreamController<String> get resumeAfterRestartEventsController =>
-      _resumeAfterRestartEventsController;
-  Map<String, bool> get currentVmServiceFlags => _currentVmServiceFlags;
-
-  /// The root at which we're serving.
-  final String root;
-
-  ProxyService({
-    required this.vm,
-    required this.root,
-    required this.debugService,
-  });
-
-  /// Sends events to stream controllers.
-  void streamNotify(String streamId, vm_service.Event event) {
-    final controller = _streamControllers[streamId];
-    if (controller == null) return;
-    controller.add(event);
-  }
-
-  /// Returns a broadcast stream for the given streamId.
-  @override
-  Stream<vm_service.Event> onEvent(String streamId) {
-    return _streamControllers.putIfAbsent(streamId, () {
-      return StreamController<vm_service.Event>.broadcast();
-    }).stream;
-  }
-
-  @override
-  Future<void> yieldControlToDDS(String uri) async {
-    // This will throw an RPCError if there's already an existing DDS instance.
-    debugService.yieldControlToDDS(uri);
-
-    // Notify existing clients that DDS has connected and they're about to be
-    // disconnected.
-    final event = DartDevelopmentServiceConnectedEvent(
-      timestamp: DateTime.now().millisecondsSinceEpoch,
-      uri: uri,
-    );
-    streamNotify(EventStreams.kService, event);
-
-    // We throw since we have no other way to control what the response content
-    // is for this RPC. The debug service will check for this particular
-    // exception as a signal to close connections to all other clients.
-    throw DisconnectNonDartDevelopmentServiceClients();
-  }
-
-  @override
-  Future<vm_service.Success> streamListen(String streamId) =>
-      wrapInErrorHandlerAsync('streamListen', () => _streamListen(streamId));
-
-  Future<vm_service.Success> _streamListen(String streamId) async {
-    // TODO: This should return an error if the stream is already being listened
-    // to.
-    onEvent(streamId);
-    return vm_service.Success();
-  }
-
-  @override
-  Future<vm_service.Success> streamCancel(String streamId) {
-    // TODO: We should implement this (as we've already implemented
-    // streamListen).
-    return _rpcNotSupportedFuture('streamCancel');
-  }
-
-  @override
-  Future<vm_service.VM> getVM() => wrapInErrorHandlerAsync('getVM', _getVM);
-
-  Future<vm_service.VM> _getVM() {
-    return captureElapsedTime(() async {
-      return vm;
-    }, (result) => DwdsEvent.getVM());
-  }
-
-  @override
-  Future<Isolate> getIsolate(String isolateId) =>
-      wrapInErrorHandlerAsync('getIsolate', () => _getIsolate(isolateId));
-
-  Future<Isolate> _getIsolate(String isolateId) {
-    return captureElapsedTime(() async {
-      await isInitialized;
-      checkIsolate('getIsolate', isolateId);
-      return inspector.isolate;
-    }, (result) => DwdsEvent.getIsolate());
-  }
-
-  @override
-  Future<Success> setName(String isolateId, String name) =>
-      wrapInErrorHandlerAsync('setName', () => _setName(isolateId, name));
-
-  Future<Success> _setName(String isolateId, String name) async {
-    await isInitialized;
-    checkIsolate('setName', isolateId);
-    inspector.isolate.name = name;
-    return Success();
-  }
-
-  @override
-  Future<Success> setVMName(String name) =>
-      wrapInErrorHandlerAsync('setVMName', () => _setVMName(name));
-
-  Future<Success> _setVMName(String name) async {
-    vm.name = name;
-    streamNotify(
-      'VM',
-      Event(
-        kind: EventKind.kVMUpdate,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        // We are not guaranteed to have an isolate at this point in time.
-        isolate: null,
-        vm: toVMRef(vm),
-      ),
-    );
-    return Success();
-  }
-
-  @override
-  Future<vm_service.FlagList> getFlagList() =>
-      wrapInErrorHandlerAsync('getFlagList', _getFlagList);
-
-  Future<vm_service.FlagList> _getFlagList() async {
-    final flags = _currentVmServiceFlags.entries.map<vm_service.Flag>(
-      (entry) =>
-          vm_service.Flag(name: entry.key, valueAsString: '${entry.value}'),
-    );
-    return vm_service.FlagList(flags: flags.toList());
-  }
-
-  @override
-  Future<vm_service.Success> setFlag(String name, String value) =>
-      wrapInErrorHandlerAsync('setFlag', () => _setFlag(name, value));
-
-  Future<vm_service.Success> _setFlag(String name, String value) async {
-    if (!_currentVmServiceFlags.containsKey(name)) {
-      throw vm_service.RPCError(
-        'setFlag',
-        vm_service.RPCErrorKind.kInvalidRequest.code,
-        'Cannot set flag "$name" (invalid flag)',
-      );
-    }
-
-    if (value != 'true' && value != 'false') {
-      throw vm_service.RPCError(
-        'setFlag',
-        vm_service.RPCErrorKind.kInvalidParams.code,
-        'Cannot set flag "$name" to "$value" (boolean value expected)',
-      );
-    }
-    _currentVmServiceFlags[name] = value == 'true';
-    return vm_service.Success();
-  }
-
-  @override
-  Future<vm_service.ProtocolList> getSupportedProtocols() =>
-      wrapInErrorHandlerAsync('getSupportedProtocols', _getSupportedProtocols);
-
-  Future<vm_service.ProtocolList> _getSupportedProtocols() async {
-    final version = semver.Version.parse(vm_service.vmServiceVersion);
-    return vm_service.ProtocolList(
-      protocols: [
-        vm_service.Protocol(
-          protocolName: 'VM Service',
-          major: version.major,
-          minor: version.minor,
-        ),
-      ],
-    );
-  }
-
-  @override
-  Future<vm_service.Version> getVersion() =>
-      wrapInErrorHandlerAsync('getVersion', _getVersion);
-
-  Future<vm_service.Version> _getVersion() async {
-    final version = semver.Version.parse(vm_service.vmServiceVersion);
-    return vm_service.Version(major: version.major, minor: version.minor);
-  }
-
-  // Note: Ignore the optional local parameter, when it is set to `true` the
-  // request is intercepted and handled by DDS.
-  @override
-  Future<UriList> lookupResolvedPackageUris(
-    String isolateId,
-    List<String> uris, {
-    bool? local,
-  }) => wrapInErrorHandlerAsync(
-    'lookupResolvedPackageUris',
-    () => _lookupResolvedPackageUris(isolateId, uris),
-  );
-
-  Future<UriList> _lookupResolvedPackageUris(
-    String isolateId,
-    List<String> uris,
-  ) async {
-    await isInitialized;
-    checkIsolate('lookupResolvedPackageUris', isolateId);
-    return UriList(uris: uris.map(DartUri.toResolvedUri).toList());
-  }
-
-  @override
-  Future<UriList> lookupPackageUris(String isolateId, List<String> uris) =>
-      wrapInErrorHandlerAsync(
-        'lookupPackageUris',
-        () => _lookupPackageUris(isolateId, uris),
-      );
-
-  Future<UriList> _lookupPackageUris(
-    String isolateId,
-    List<String> uris,
-  ) async {
-    await isInitialized;
-    checkIsolate('lookupPackageUris', isolateId);
-    return UriList(uris: uris.map(DartUri.toPackageUri).toList());
-  }
-
-  @override
-  Future<ScriptList> getScripts(String isolateId) =>
-      wrapInErrorHandlerAsync('getScripts', () => _getScripts(isolateId));
-
-  Future<ScriptList> _getScripts(String isolateId) {
-    return captureElapsedTime(() async {
-      await isInitialized;
-      checkIsolate('getScripts', isolateId);
-      return inspector.getScripts();
-    }, (result) => DwdsEvent.getScripts());
-  }
-
-  /// Parses the [BatchedDebugEvents] and emits corresponding Dart VM Service
-  /// protocol [Event]s.
-  void parseBatchedDebugEvents(BatchedDebugEvents debugEvents) {
-    for (final debugEvent in debugEvents.events) {
-      parseDebugEvent(debugEvent);
-    }
-  }
-
-  /// Parses the [DebugEvent] and emits a corresponding Dart VM Service
-  /// protocol [Event].
-  @mustCallSuper
-  void parseDebugEvent(DebugEvent debugEvent) {
-    if (!isIsolateRunning) return;
-    final isolateRef = inspector.isolateRef;
-
-    streamNotify(
-      EventStreams.kExtension,
-      Event(
-          kind: EventKind.kExtension,
-          timestamp: DateTime.now().millisecondsSinceEpoch,
-          isolate: isolateRef,
-        )
-        ..extensionKind = debugEvent.kind
-        ..extensionData = ExtensionData.parse(
-          jsonDecode(debugEvent.eventData) as Map<String, dynamic>,
-        ),
-    );
-  }
-
-  /// Parses the [RegisterEvent] and emits a corresponding Dart VM Service
-  /// protocol [Event].
-  @mustCallSuper
-  void parseRegisterEvent(RegisterEvent registerEvent) {
-    if (!isIsolateRunning) return;
-
-    final isolate = inspector.isolate;
-    final isolateRef = inspector.isolateRef;
-    final service = registerEvent.eventData;
-    isolate.extensionRPCs?.add(service);
-
-    streamNotify(
-      EventStreams.kIsolate,
-      Event(
-        kind: EventKind.kServiceExtensionAdded,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        isolate: isolateRef,
-      )..extensionRPC = service,
-    );
-  }
-
-  /// Completes hot reload with response from client.
-  ///
-  /// Default implementation throws [UnimplementedError].
-  /// Override in subclasses that support hot reload completion.
-  void completeHotReload(HotReloadResponse response) {
-    throw UnimplementedError('completeHotReload not supported');
-  }
-
-  /// Completes hot restart with response from client.
-  ///
-  /// Default implementation throws [UnimplementedError].
-  /// Override in subclasses that support hot restart completion.
-  void completeHotRestart(HotRestartResponse response) {
-    throw UnimplementedError('completeHotRestart not supported');
-  }
-
-  /// Completes service extension with response from client.
-  ///
-  /// Default implementation throws [UnimplementedError].
-  /// Override in subclasses that support service extension completion.
-  void completeServiceExtension(ServiceExtensionResponse response) {
-    throw UnimplementedError('completeServiceExtension not supported');
-  }
-
-  /// Sends `ServiceExtensionAdded` events for each currently registered
-  /// service extension.
-  Future<void> sendServiceExtensionRegisteredEvents() async {
-    final timestamp = DateTime.now().millisecondsSinceEpoch;
-    for (final extensionRpc in await inspector.getExtensionRpcs()) {
-      streamNotify(
-        'Isolate',
-        vm_service.Event(
-          kind: vm_service.EventKind.kServiceExtensionAdded,
-          timestamp: timestamp,
-          isolate: inspector.isolateRef,
-        )..extensionRPC = extensionRpc,
-      );
-    }
-  }
-
-  /// Standard RPC error for unsupported methods.
-  static vm_service.RPCError _rpcNotSupported(String method) {
-    return vm_service.RPCError(
-      method,
-      vm_service.RPCErrorKind.kMethodNotFound.code,
-      '$method: Not supported on web devices',
-    );
-  }
-
-  /// Standard future error for unsupported methods.
-  static Future<T> _rpcNotSupportedFuture<T>(String method) {
-    return Future.error(_rpcNotSupported(method));
-  }
-
-  /// Protected accessor for _rpcNotSupportedFuture for subclasses
-  Future<T> rpcNotSupportedFuture<T>(String method) {
-    return _rpcNotSupportedFuture<T>(method);
-  }
-
-  // Default implementations for unsupported methods
-  @override
-  Future<vm_service.AllocationProfile> getAllocationProfile(
-    String isolateId, {
-    bool? gc,
-    bool? reset,
-  }) {
-    return _rpcNotSupportedFuture('getAllocationProfile');
-  }
-
-  @override
-  Future<vm_service.ClassList> getClassList(String isolateId) {
-    return _rpcNotSupportedFuture('getClassList');
-  }
-
-  @override
-  Future<vm_service.InstanceSet> getInstances(
-    String isolateId,
-    String classId,
-    int limit, {
-    bool? includeImplementers,
-    bool? includeSubclasses,
-    String? idZoneId,
-  }) {
-    return _rpcNotSupportedFuture('getInstances');
-  }
-
-  @override
-  Future<vm_service.Success> kill(String isolateId) {
-    return _rpcNotSupportedFuture('kill');
-  }
-
-  @override
-  Future<vm_service.Success> clearVMTimeline() {
-    return _rpcNotSupportedFuture('clearVMTimeline');
-  }
-
-  @override
-  Future<vm_service.Timeline> getVMTimeline({
-    int? timeOriginMicros,
-    int? timeExtentMicros,
-  }) {
-    return _rpcNotSupportedFuture('getVMTimeline');
-  }
-
-  @override
-  Future<vm_service.TimelineFlags> getVMTimelineFlags() {
-    return _rpcNotSupportedFuture('getVMTimelineFlags');
-  }
-
-  @override
-  Future<vm_service.Success> setVMTimelineFlags(List<String> recordedStreams) {
-    return _rpcNotSupportedFuture('setVMTimelineFlags');
-  }
-
-  @override
-  Future<vm_service.Timestamp> getVMTimelineMicros() {
-    return _rpcNotSupportedFuture('getVMTimelineMicros');
-  }
-
-  @override
-  Future<vm_service.InboundReferences> getInboundReferences(
-    String isolateId,
-    String targetId,
-    int limit, {
-    String? idZoneId,
-  }) {
-    return _rpcNotSupportedFuture('getInboundReferences');
-  }
-
-  @override
-  Future<vm_service.RetainingPath> getRetainingPath(
-    String isolateId,
-    String targetId,
-    int limit, {
-    String? idZoneId,
-  }) {
-    return _rpcNotSupportedFuture('getRetainingPath');
-  }
-
-  @override
-  Future<vm_service.Success> requestHeapSnapshot(String isolateId) {
-    return _rpcNotSupportedFuture('requestHeapSnapshot');
-  }
-
-  @override
-  Future<vm_service.IsolateGroup> getIsolateGroup(String isolateGroupId) {
-    return _rpcNotSupportedFuture('getIsolateGroup');
-  }
-
-  @override
-  Future<vm_service.MemoryUsage> getIsolateGroupMemoryUsage(
-    String isolateGroupId,
-  ) {
-    return _rpcNotSupportedFuture('getIsolateGroupMemoryUsage');
-  }
-
-  @override
-  Future<vm_service.ProcessMemoryUsage> getProcessMemoryUsage() =>
-      _rpcNotSupportedFuture('getProcessMemoryUsage');
-
-  @override
-  Future<Success> setLibraryDebuggable(
-    String isolateId,
-    String libraryId,
-    bool isDebuggable,
-  ) {
-    return rpcNotSupportedFuture('setLibraryDebuggable');
-  }
-
-  @override
-  Future<vm_service.PortList> getPorts(String isolateId) =>
-      throw UnimplementedError();
-
-  @override
-  Future<vm_service.CpuSamples> getAllocationTraces(
-    String isolateId, {
-    int? timeOriginMicros,
-    int? timeExtentMicros,
-    String? classId,
-  }) => throw UnimplementedError();
-
-  @override
-  Future<vm_service.Success> setTraceClassAllocation(
-    String isolateId,
-    String classId,
-    bool enable,
-  ) => throw UnimplementedError();
-
-  @override
-  Future<vm_service.Breakpoint> setBreakpointState(
-    String isolateId,
-    String breakpointId,
-    bool enable,
-  ) => throw UnimplementedError();
-
-  @override
-  Future<vm_service.Success> streamCpuSamplesWithUserTag(
-    List<String> userTags,
-  ) => _rpcNotSupportedFuture('streamCpuSamplesWithUserTag');
-
-  @override
-  Future<vm_service.CpuSamples> getCpuSamples(
-    String isolateId,
-    int timeOriginMicros,
-    int timeExtentMicros,
-  ) {
-    return _rpcNotSupportedFuture('getCpuSamples');
-  }
-
-  @override
-  Future<vm_service.Success> clearCpuSamples(String isolateId) {
-    return _rpcNotSupportedFuture('clearCpuSamples');
-  }
-
-  @override
-  Future<Success> registerService(String service, String alias) {
-    return rpcNotSupportedFuture('registerService');
-  }
-
-  /// Creates a new isolate for debugging.
-  ///
-  /// Implementations should handle isolate lifecycle management according to
-  /// their specific debugging mode (Chrome vs WebSocket).
-  Future<void> createIsolate(
-    AppConnection appConnection, {
-    bool newConnection = false,
-  });
-
-  /// Destroys the isolate and cleans up debugging state.
-  ///
-  /// Implementations should handle cleanup according to their specific
-  /// debugging mode and connection management strategy.
-  void destroyIsolate();
-
-  /// Validate that isolateId matches the current isolate we're connected to and
-  /// return that isolate.
-  ///
-  /// This is useful to call at the beginning of API methods that are passed an
-  /// isolate id.
-  @protected
-  Isolate checkIsolate(String methodName, String? isolateId) {
-    final currentIsolateId = inspector.isolate.id;
-    if (currentIsolateId == null) {
-      throw StateError('No running isolate ID');
-    }
-    if (isolateId != currentIsolateId) {
-      _throwSentinel(
-        methodName,
-        SentinelKind.kCollected,
-        'Unrecognized isolateId: $isolateId',
-      );
-    }
-    return inspector.isolate;
-  }
-
-  static Never _throwSentinel(String method, String kind, String message) {
-    final data = <String, String>{'kind': kind, 'valueAsString': message};
-    throw SentinelException.parse(method, data);
-  }
-
-  /// Prevent DWDS from blocking Dart SDK rolls if changes in package:vm_service
-  /// are unimplemented in DWDS.
-  @override
-  dynamic noSuchMethod(Invocation invocation) {
-    return super.noSuchMethod(invocation);
-  }
-}
diff --git a/dwds/lib/src/services/web_socket/web_socket_debug_service.dart b/dwds/lib/src/services/web_socket/web_socket_debug_service.dart
deleted file mode 100644
index 36ab4da..0000000
--- a/dwds/lib/src/services/web_socket/web_socket_debug_service.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/services/debug_service.dart';
-import 'package:dwds/src/services/web_socket/web_socket_proxy_service.dart';
-import 'package:meta/meta.dart';
-
-/// Defines callbacks for sending messages to the connected client.
-/// Returns the number of clients the request was successfully sent to.
-typedef SendClientRequest = int Function(Object request);
-
-/// WebSocket-based debug service for web debugging.
-final class WebSocketDebugService extends DebugService<WebSocketProxyService> {
-  WebSocketDebugService._({
-    required super.serverHostname,
-    required super.ddsConfig,
-    required super.urlEncoder,
-  }) : super(
-         // The web socket debug service doesn't support SSE connections.
-         useSse: false,
-       );
-
-  @protected
-  @override
-  Future<void> initialize({required WebSocketProxyService proxyService}) async {
-    await super.initialize(proxyService: proxyService);
-    await serve(
-      handler: initializeWebSocketHandler(proxyService: proxyService),
-    );
-  }
-
-  static Future<WebSocketDebugService> start({
-    required String hostname,
-    required AppConnection appConnection,
-    required AssetReader assetReader,
-    required SendClientRequest sendClientRequest,
-    required DartDevelopmentServiceConfiguration ddsConfig,
-    UrlEncoder? urlEncoder,
-  }) async {
-    final debugService = WebSocketDebugService._(
-      serverHostname: hostname,
-      ddsConfig: ddsConfig,
-      urlEncoder: urlEncoder,
-    );
-    final webSocketProxyService = await WebSocketProxyService.create(
-      sendClientRequest,
-      appConnection,
-      assetReader.basePath,
-      debugService,
-    );
-    await debugService.initialize(proxyService: webSocketProxyService);
-    return debugService;
-  }
-}
diff --git a/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart b/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart
deleted file mode 100644
index 29a00d1..0000000
--- a/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart
+++ /dev/null
@@ -1,907 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/data/hot_reload_request.dart';
-import 'package:dwds/data/hot_reload_response.dart';
-import 'package:dwds/data/hot_restart_request.dart';
-import 'package:dwds/data/hot_restart_response.dart';
-import 'package:dwds/data/ping_request.dart';
-import 'package:dwds/data/service_extension_request.dart';
-import 'package:dwds/data/service_extension_response.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/debugging/web_socket_inspector.dart';
-import 'package:dwds/src/services/proxy_service.dart';
-import 'package:dwds/src/services/web_socket/web_socket_debug_service.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart' as vm_service;
-import 'package:vm_service/vm_service.dart';
-
-/// Defines callbacks for sending messages to the connected client.
-/// Returns the number of clients the request was successfully sent to.
-typedef SendClientRequest = int Function(Object request);
-
-const _pauseIsolatesOnStartFlag = 'pause_isolates_on_start';
-
-/// Grace period before destroying isolate when no clients are detected.
-/// This handles the race condition during page refresh where the old connection
-/// closes before the new connection is established, preventing premature
-/// isolate destruction.
-const _isolateDestructionGracePeriod = Duration(seconds: 15);
-
-/// Error message when no clients are available for hot reload/restart.
-const kNoClientsAvailable = 'No clients available.';
-
-/// Tracks hot reload responses from multiple browser windows/tabs.
-class _HotReloadTracker {
-  final String requestId;
-  final Completer<HotReloadResponse> completer;
-  final int expectedResponses;
-  final List<HotReloadResponse> responses = [];
-  final Timer timeoutTimer;
-
-  _HotReloadTracker({
-    required this.requestId,
-    required this.completer,
-    required this.expectedResponses,
-    required this.timeoutTimer,
-  });
-
-  bool get gotAllResponses => responses.length >= expectedResponses;
-
-  void addResponse(HotReloadResponse response) {
-    responses.add(response);
-  }
-
-  bool get allSuccessful => responses.every((r) => r.success);
-
-  void dispose() {
-    timeoutTimer.cancel();
-  }
-}
-
-/// Tracks hot restart responses from multiple browser windows/tabs.
-class _HotRestartTracker {
-  final String requestId;
-  final Completer<HotRestartResponse> completer;
-  final int expectedResponses;
-  final List<HotRestartResponse> responses = [];
-  final Timer timeoutTimer;
-
-  _HotRestartTracker({
-    required this.requestId,
-    required this.completer,
-    required this.expectedResponses,
-    required this.timeoutTimer,
-  });
-
-  bool get gotAllResponses => responses.length >= expectedResponses;
-
-  void addResponse(HotRestartResponse response) {
-    responses.add(response);
-  }
-
-  bool get allSuccessful => responses.every((r) => r.success);
-
-  void dispose() {
-    timeoutTimer.cancel();
-  }
-}
-
-/// Tracks service extension responses from multiple browser windows/tabs.
-class _ServiceExtensionTracker {
-  final String requestId;
-  final Completer<ServiceExtensionResponse> completer;
-  final int expectedResponses;
-  final List<ServiceExtensionResponse> responses = [];
-  final Timer timeoutTimer;
-
-  _ServiceExtensionTracker({
-    required this.requestId,
-    required this.completer,
-    required this.expectedResponses,
-    required this.timeoutTimer,
-  });
-
-  bool get gotAllResponses => responses.length >= expectedResponses;
-
-  void addResponse(ServiceExtensionResponse response) {
-    responses.add(response);
-  }
-
-  bool get allSuccessful => responses.every((r) => r.success);
-
-  void dispose() {
-    timeoutTimer.cancel();
-  }
-}
-
-/// Exception thrown when no browser clients are connected to DWDS.
-class NoClientsAvailableException implements Exception {
-  final String message;
-
-  NoClientsAvailableException._(this.message);
-
-  @override
-  String toString() => 'NoClientsAvailableException: $message';
-}
-
-/// WebSocket-based VM service proxy for web debugging.
-final class WebSocketProxyService extends ProxyService<WebSocketAppInspector> {
-  final _logger = Logger('WebSocketProxyService');
-
-  /// Active service extension trackers by request ID.
-  final _pendingServiceExtensionTrackers = <String, _ServiceExtensionTracker>{};
-
-  /// Sends messages to the client.
-  final SendClientRequest sendClientRequest;
-
-  /// App connection for this service.
-  AppConnection appConnection;
-
-  /// Active hot reload trackers by request ID.
-  final _pendingHotReloads = <String, _HotReloadTracker>{};
-
-  /// Active hot restart trackers by request ID.
-  final _pendingHotRestarts = <String, _HotRestartTracker>{};
-
-  /// App connection cleanup subscriptions by connection instance ID.
-  final _appConnectionDoneSubscriptions = <String, StreamSubscription<void>>{};
-
-  /// Active connection count for this service.
-  int _activeConnectionCount = 0;
-
-  WebSocketProxyService._({
-    required this.sendClientRequest,
-    required super.vm,
-    required super.root,
-    required super.debugService,
-    required this.appConnection,
-  });
-
-  static Future<WebSocketProxyService> create(
-    SendClientRequest sendClientRequest,
-    AppConnection appConnection,
-    String root,
-    WebSocketDebugService debugService,
-  ) async {
-    final vm = vm_service.VM(
-      name: 'WebSocketDebugProxy',
-      operatingSystem: 'web',
-      startTime: DateTime.now().millisecondsSinceEpoch,
-      version: 'unknown',
-      isolates: [],
-      isolateGroups: [],
-      systemIsolates: [],
-      systemIsolateGroups: [],
-      targetCPU: 'Web',
-      hostCPU: 'DWDS',
-      architectureBits: -1,
-      pid: -1,
-    );
-    final service = WebSocketProxyService._(
-      sendClientRequest: sendClientRequest,
-      vm: vm,
-      root: root,
-      debugService: debugService,
-      appConnection: appConnection,
-    );
-    safeUnawaited(service.createIsolate(appConnection));
-    return service;
-  }
-
-  /// Creates a new isolate for WebSocket debugging.
-  @override
-  Future<void> createIsolate(
-    AppConnection appConnection, {
-    bool newConnection = false,
-  }) async {
-    // Update app connection
-    this.appConnection = appConnection;
-
-    // Track this connection
-    final connectionId = appConnection.request.instanceId;
-
-    // Check if this connection is already being tracked
-    final isNewConnection =
-        newConnection ||
-        !_appConnectionDoneSubscriptions.containsKey(connectionId);
-
-    if (isNewConnection) {
-      _activeConnectionCount++;
-      _logger.fine(
-        'Adding new connection: $connectionId (total: $_activeConnectionCount)',
-      );
-    } else {
-      _logger.fine(
-        'Reconnecting existing connection: $connectionId (total: '
-        '$_activeConnectionCount)',
-      );
-    }
-
-    // Auto-cleanup on connection close
-    final existingSubscription = _appConnectionDoneSubscriptions[connectionId];
-    await existingSubscription?.cancel();
-    _appConnectionDoneSubscriptions[connectionId] = appConnection.onDone
-        .asStream()
-        .listen((_) {
-          _handleConnectionClosed(connectionId);
-        });
-
-    // If we already have a running isolate, just update the connection and
-    // return
-    if (isIsolateRunning) {
-      _logger.fine(
-        'Reusing existing isolate ${inspector.isolateRef.id} for connection: '
-        '$connectionId',
-      );
-      return;
-    }
-
-    inspector = await WebSocketAppInspector.create(this, appConnection, root);
-
-    final isolateRef = inspector.isolateRef;
-    vm.isolates?.add(isolateRef);
-    final timestamp = DateTime.now().millisecondsSinceEpoch;
-
-    _logger.fine(
-      'Created new isolate: ${isolateRef.id} for connection: $connectionId',
-    );
-
-    // Send lifecycle events
-    streamNotify(
-      vm_service.EventStreams.kIsolate,
-      vm_service.Event(
-        kind: vm_service.EventKind.kIsolateStart,
-        timestamp: timestamp,
-        isolate: isolateRef,
-      ),
-    );
-    streamNotify(
-      vm_service.EventStreams.kIsolate,
-      vm_service.Event(
-        kind: vm_service.EventKind.kIsolateRunnable,
-        timestamp: timestamp,
-        isolate: isolateRef,
-      ),
-    );
-
-    // Send pause event if enabled
-    if (pauseIsolatesOnStart) {
-      final pauseEvent = vm_service.Event(
-        kind: vm_service.EventKind.kPauseStart,
-        timestamp: timestamp,
-        isolate: isolateRef,
-      );
-      inspector.isolate.pauseEvent = pauseEvent;
-      streamNotify(vm_service.EventStreams.kDebug, pauseEvent);
-    }
-
-    // Complete initialization after isolate is set up
-    if (!initializedCompleter.isCompleted) initializedCompleter.complete();
-  }
-
-  /// Handles a connection being closed.
-  void _handleConnectionClosed(String connectionId) {
-    _logger.fine('Connection closed: $connectionId');
-
-    // Only decrement if this connection was actually being tracked
-    if (_appConnectionDoneSubscriptions.containsKey(connectionId)) {
-      // Remove the subscription for this connection
-      _appConnectionDoneSubscriptions[connectionId]?.cancel();
-      _appConnectionDoneSubscriptions.remove(connectionId);
-
-      // Decrease active connection count
-      _activeConnectionCount--;
-      _logger.fine(
-        'Removed connection: $connectionId (remaining: '
-        '$_activeConnectionCount)',
-      );
-      _logger.fine(
-        'Current tracked connections: '
-        '${_appConnectionDoneSubscriptions.keys.toList()}',
-      );
-
-      // Instead of destroying the isolate immediately, check if there are still
-      // clients that can receive hot reload requests
-      if (_activeConnectionCount <= 0) {
-        // Double-check by asking the sendClientRequest callback how many
-        // clients are available
-        final actualClientCount = sendClientRequest(PingRequest());
-        _logger.fine(
-          'Actual client count from sendClientRequest: $actualClientCount',
-        );
-
-        if (actualClientCount == 0) {
-          _logger.fine(
-            'No clients available for hot reload, scheduling isolate '
-            'destruction',
-          );
-          // Add a delay before destroying the isolate to handle page refresh
-          // race condition
-          Timer(_isolateDestructionGracePeriod, () {
-            // Double-check client count again before destroying
-            final finalClientCount = sendClientRequest(PingRequest());
-            if (finalClientCount == 0) {
-              _logger.fine(
-                'Final check confirmed no clients, destroying isolate',
-              );
-              destroyIsolate();
-            } else {
-              _logger.fine(
-                'Final check found $finalClientCount clients, keeping isolate '
-                'alive',
-              );
-              _activeConnectionCount = finalClientCount;
-            }
-          });
-        } else {
-          _logger.fine(
-            'Still have $actualClientCount clients available, keeping isolate '
-            'alive',
-          );
-          // Update our internal counter to match reality
-          _activeConnectionCount = actualClientCount;
-        }
-      } else {
-        _logger.fine(
-          'Still have $_activeConnectionCount active connections, keeping '
-          'isolate alive',
-        );
-      }
-    } else {
-      _logger.warning(
-        'Attempted to close connection that was not tracked: $connectionId',
-      );
-    }
-  }
-
-  /// Destroys the isolate and cleans up state.
-  @override
-  void destroyIsolate() {
-    _logger.fine('Destroying isolate');
-
-    if (!isIsolateRunning) {
-      _logger.fine('Isolate already destroyed, ignoring');
-      return;
-    }
-
-    // Cancel all connection subscriptions
-    for (final subscription in _appConnectionDoneSubscriptions.values) {
-      subscription.cancel();
-    }
-    _appConnectionDoneSubscriptions.clear();
-    _activeConnectionCount = 0;
-
-    final isolateRef = inspector.isolateRef;
-    // Send exit event
-    streamNotify(
-      vm_service.EventStreams.kIsolate,
-      vm_service.Event(
-        kind: vm_service.EventKind.kIsolateExit,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        isolate: isolateRef,
-      ),
-    );
-
-    vm.isolates?.removeWhere((ref) => ref.id == isolateRef.id);
-
-    // Reset state
-    inspector = null;
-
-    if (initializedCompleter.isCompleted) {
-      initializedCompleter = Completer<void>();
-    }
-  }
-
-  @override
-  Future<Success> setIsolatePauseMode(
-    String isolateId, {
-    String? exceptionPauseMode,
-    bool? shouldPauseOnExit,
-  }) async {
-    // Not supported in WebSocket mode - return success for compatibility
-    return Success();
-  }
-
-  @override
-  Future<vm_service.ReloadReport> reloadSources(
-    String isolateId, {
-    bool? force,
-    bool? pause,
-    String? rootLibUri,
-    String? packagesUri,
-  }) async {
-    _logger.info('Attempting a hot reload');
-    try {
-      await _performWebSocketHotReload();
-      _logger.info('Hot reload completed successfully');
-      return _ReloadReportWithMetadata(success: true);
-    } on NoClientsAvailableException catch (e) {
-      // Throw RPC error with kIsolateCannotReload code when no browser clients
-      // are connected.
-      throw vm_service.RPCError(
-        'reloadSources',
-        vm_service.RPCErrorKind.kIsolateCannotReload.code,
-        'Hot reload failed: ${e.message}',
-      );
-    } catch (e) {
-      _logger.warning('Hot reload failed: $e');
-      return _ReloadReportWithMetadata(success: false, notices: [e.toString()]);
-    }
-  }
-
-  /// Handles hot restart requests.
-  Future<Map<String, Object?>> hotRestart() async {
-    _logger.info('Attempting a hot restart');
-
-    try {
-      await _performWebSocketHotRestart();
-      _logger.info('Hot restart completed successfully');
-      return {'result': vm_service.Success().toJson()};
-    } on NoClientsAvailableException catch (e) {
-      // Throw RPC error with kIsolateCannotReload code when no browser clients
-      // are connected.
-      throw vm_service.RPCError(
-        'hotRestart',
-        vm_service.RPCErrorKind.kIsolateCannotReload.code,
-        'Hot restart failed: ${e.message}',
-      );
-    } catch (e) {
-      _logger.warning('Hot restart failed: $e');
-      return {
-        'error': {
-          'code': vm_service.RPCErrorKind.kInternalError.code,
-          'message': 'Hot restart failed: $e',
-        },
-      };
-    }
-  }
-
-  /// Completes hot reload with response from client.
-  @override
-  void completeHotReload(HotReloadResponse response) {
-    final tracker = _pendingHotReloads[response.id];
-
-    if (tracker == null) {
-      _logger.warning(
-        'Received hot reload response but no pending tracker found (id: '
-        '${response.id})',
-      );
-      return;
-    }
-
-    tracker.addResponse(response);
-
-    if (tracker.gotAllResponses) {
-      _pendingHotReloads.remove(response.id);
-      tracker.dispose();
-
-      if (tracker.allSuccessful) {
-        tracker.completer.complete(response);
-      } else {
-        final failedResponses = tracker.responses.where((r) => !r.success);
-        final errorMessages = failedResponses
-            .map((r) => r.errorMessage ?? 'Unknown error')
-            .join('; ');
-        tracker.completer.completeError(
-          'Hot reload failed in some clients: $errorMessages',
-        );
-      }
-    }
-  }
-
-  /// Completes hot restart with response from client.
-  @override
-  void completeHotRestart(HotRestartResponse response) {
-    final tracker = _pendingHotRestarts[response.id];
-
-    if (tracker == null) {
-      _logger.warning(
-        'Received hot restart response but no pending tracker found (id: '
-        '${response.id})',
-      );
-      return;
-    }
-
-    tracker.addResponse(response);
-
-    if (tracker.gotAllResponses) {
-      _pendingHotRestarts.remove(response.id);
-      tracker.dispose();
-
-      if (tracker.allSuccessful) {
-        tracker.completer.complete(response);
-      } else {
-        final failedResponses = tracker.responses.where((r) => !r.success);
-        final errorMessages = failedResponses
-            .map((r) => r.errorMessage ?? 'Unknown error')
-            .join('; ');
-        tracker.completer.completeError(
-          'Hot restart failed in some clients: $errorMessages',
-        );
-      }
-    }
-  }
-
-  /// Performs WebSocket-based hot reload.
-  Future<void> _performWebSocketHotReload({String? requestId}) async {
-    final id = requestId ?? createId();
-
-    // Check if there's already a pending hot reload with this ID
-    if (_pendingHotReloads.containsKey(id)) {
-      throw StateError('Hot reload already pending for ID: $id');
-    }
-
-    const timeout = Duration(seconds: 10);
-    _logger.info('Sending HotReloadRequest with ID ($id) to client');
-
-    // Send the request and get the number of connected clients
-    final clientCount = await Future.microtask(() {
-      return sendClientRequest(HotReloadRequest(id: id));
-    });
-
-    if (clientCount == 0) {
-      _logger.warning(kNoClientsAvailable);
-      throw NoClientsAvailableException._(kNoClientsAvailable);
-    }
-
-    // Create tracker for this hot reload request
-    final completer = Completer<HotReloadResponse>();
-    final timeoutTimer = Timer(timeout, () {
-      final tracker = _pendingHotReloads.remove(id);
-      if (tracker != null) {
-        tracker.dispose();
-        if (!completer.isCompleted) {
-          completer.completeError(
-            TimeoutException(
-              'Hot reload timed out - received ${tracker.responses.length}/$clientCount responses',
-              timeout,
-            ),
-          );
-        }
-      }
-    });
-
-    final tracker = _HotReloadTracker(
-      requestId: id,
-      completer: completer,
-      expectedResponses: clientCount,
-      timeoutTimer: timeoutTimer,
-    );
-
-    _pendingHotReloads[id] = tracker;
-
-    try {
-      final response = await completer.future;
-      if (!response.success) {
-        throw Exception(response.errorMessage ?? 'Client reported failure');
-      }
-    } catch (e) {
-      // Clean up tracker if still present
-      final remainingTracker = _pendingHotReloads.remove(id);
-      remainingTracker?.dispose();
-      rethrow;
-    }
-  }
-
-  /// Performs WebSocket-based hot restart.
-  Future<void> _performWebSocketHotRestart({String? requestId}) async {
-    final id = requestId ?? createId();
-
-    // Check if there's already a pending hot restart with this ID
-    if (_pendingHotRestarts.containsKey(id)) {
-      throw StateError('Hot restart already pending for ID: $id');
-    }
-
-    const timeout = Duration(seconds: 15);
-    _logger.info('Sending HotRestartRequest with ID ($id) to client');
-
-    // Send the request and get the number of connected clients
-    final clientCount = await Future.microtask(() {
-      return sendClientRequest(HotRestartRequest(id: id));
-    });
-
-    if (clientCount == 0) {
-      _logger.warning(kNoClientsAvailable);
-      throw NoClientsAvailableException._(kNoClientsAvailable);
-    }
-
-    // Create tracker for this hot restart request
-    final completer = Completer<HotRestartResponse>();
-    final timeoutTimer = Timer(timeout, () {
-      final tracker = _pendingHotRestarts.remove(id);
-      if (tracker != null) {
-        tracker.dispose();
-        if (!completer.isCompleted) {
-          completer.completeError(
-            TimeoutException(
-              'Hot restart timed out - received ${tracker.responses.length}/$clientCount responses',
-              timeout,
-            ),
-          );
-        }
-      }
-    });
-
-    final tracker = _HotRestartTracker(
-      requestId: id,
-      completer: completer,
-      expectedResponses: clientCount,
-      timeoutTimer: timeoutTimer,
-    );
-
-    _pendingHotRestarts[id] = tracker;
-
-    try {
-      final response = await completer.future;
-      if (!response.success) {
-        throw Exception(response.errorMessage ?? 'Client reported failure');
-      }
-    } catch (e) {
-      // Clean up tracker if still present
-      final remainingTracker = _pendingHotRestarts.remove(id);
-      remainingTracker?.dispose();
-      rethrow;
-    }
-  }
-
-  @override
-  Future<Response> callServiceExtension(
-    String method, {
-    String? isolateId,
-    Map? args,
-  }) => wrapInErrorHandlerAsync(
-    'callServiceExtension',
-    () => _callServiceExtension(method, args: args),
-  );
-
-  /// Calls a service extension on the client.
-  Future<Response> _callServiceExtension(String method, {Map? args}) async {
-    final requestId = createId();
-
-    // Check if there's already a pending service extension with this ID
-    if (_pendingServiceExtensionTrackers.containsKey(requestId)) {
-      throw StateError(
-        'Service extension call already pending for ID: $requestId',
-      );
-    }
-
-    args ??= <String, String>{};
-    final request = ServiceExtensionRequest.fromArgs(
-      id: requestId,
-      method: method,
-      // Arguments must be converted to their string representation, otherwise
-      // we'll encounter a TypeError when trying to cast args to a
-      // Map<String, String> in the service extension handler.
-      args: args.map<String, String>(
-        (k, v) => MapEntry(
-          k is String ? k : jsonEncode(k),
-          v is String ? v : jsonEncode(v),
-        ),
-      ),
-    );
-
-    // Send the request and get the number of connected clients
-    final clientCount = sendClientRequest(request);
-
-    if (clientCount == 0) {
-      throw StateError('No clients available for service extension');
-    }
-
-    // Create tracker for this service extension request
-    const timeout = Duration(seconds: 10);
-    final completer = Completer<ServiceExtensionResponse>();
-    final timeoutTimer = Timer(timeout, () {
-      final tracker = _pendingServiceExtensionTrackers.remove(requestId);
-      if (tracker != null) {
-        tracker.dispose();
-        if (!completer.isCompleted) {
-          completer.completeError(
-            TimeoutException(
-              'Service extension $method timed out - received ${tracker.responses.length}/$clientCount responses',
-              timeout,
-            ),
-          );
-        }
-      }
-    });
-
-    final tracker = _ServiceExtensionTracker(
-      requestId: requestId,
-      completer: completer,
-      expectedResponses: clientCount,
-      timeoutTimer: timeoutTimer,
-    );
-
-    _pendingServiceExtensionTrackers[requestId] = tracker;
-
-    try {
-      final response = await completer.future;
-
-      if (response.errorMessage != null) {
-        throw RPCError(
-          method,
-          response.errorCode ?? RPCErrorKind.kServerError.code,
-          response.errorMessage!,
-        );
-      }
-      return Response()..json = response.result;
-    } catch (e) {
-      // Clean up tracker if still present
-      final remainingTracker = _pendingServiceExtensionTrackers.remove(
-        requestId,
-      );
-      remainingTracker?.dispose();
-      rethrow;
-    }
-  }
-
-  /// Completes service extension with response.
-  @override
-  void completeServiceExtension(ServiceExtensionResponse response) {
-    final id = response.id;
-
-    final tracker = _pendingServiceExtensionTrackers[id];
-
-    if (tracker == null) {
-      _logger.warning(
-        'No pending tracker found for service extension (id: $id)',
-      );
-      return;
-    }
-
-    tracker.addResponse(response);
-
-    if (tracker.gotAllResponses) {
-      _pendingServiceExtensionTrackers.remove(id);
-      tracker.dispose();
-
-      if (tracker.allSuccessful) {
-        tracker.completer.complete(response);
-      } else {
-        final failedResponses = tracker.responses.where((r) => !r.success);
-        final errorMessages = failedResponses
-            .map((r) => r.errorMessage ?? 'Unknown error')
-            .join('; ');
-        tracker.completer.completeError(
-          'Service extension failed in some clients: $errorMessages',
-        );
-      }
-    }
-  }
-
-  @override
-  Future<Success> setFlag(String name, String value) =>
-      wrapInErrorHandlerAsync('setFlag', () => _setFlag(name, value));
-
-  Future<Success> _setFlag(String name, String value) async {
-    if (!currentVmServiceFlags.containsKey(name)) {
-      return rpcNotSupportedFuture('setFlag');
-    }
-
-    assert(value == 'true' || value == 'false');
-    final oldValue = currentVmServiceFlags[name];
-    currentVmServiceFlags[name] = value == 'true';
-
-    // Handle pause_isolates_on_start flag changes
-    if (name == _pauseIsolatesOnStartFlag &&
-        value == 'true' &&
-        oldValue == false) {
-      // Send pause event for existing isolate if not already paused
-      if (isIsolateRunning && inspector.isolate.pauseEvent == null) {
-        final pauseEvent = vm_service.Event(
-          kind: vm_service.EventKind.kPauseStart,
-          timestamp: DateTime.now().millisecondsSinceEpoch,
-          isolate: inspector.isolateRef,
-        );
-        inspector.isolate.pauseEvent = pauseEvent;
-        streamNotify(vm_service.EventStreams.kDebug, pauseEvent);
-      }
-    }
-
-    return Success();
-  }
-
-  /// Pauses execution of the isolate.
-  @override
-  Future<Success> pause(String isolateId) =>
-      // Can't pause with the web socket implementation, so do nothing.
-      Future.value(Success());
-
-  /// Resumes execution of the isolate.
-  @override
-  Future<Success> resume(String isolateId, {String? step, int? frameIndex}) =>
-      wrapInErrorHandlerAsync('resume', () => _resume(isolateId));
-
-  Future<Success> _resume(String isolateId) async {
-    if (hasPendingRestart && !resumeAfterRestartEventsController.isClosed) {
-      resumeAfterRestartEventsController.add(isolateId);
-    } else if (!appConnection.hasStarted) {
-      appConnection.runMain();
-    }
-
-    // Clear pause state and send resume event to notify debugging tools
-    if (inspector.isolate.pauseEvent != null) {
-      inspector.isolate.pauseEvent = null;
-      final resumeEvent = vm_service.Event(
-        kind: vm_service.EventKind.kResume,
-        timestamp: DateTime.now().millisecondsSinceEpoch,
-        isolate: inspector.isolateRef,
-      );
-      streamNotify(vm_service.EventStreams.kDebug, resumeEvent);
-    }
-
-    return Success();
-  }
-
-  @override
-  Future<FlagList> getFlagList() =>
-      wrapInErrorHandlerAsync('getFlagList', _getFlagList);
-
-  Future<FlagList> _getFlagList() async {
-    // Return basic flag list for WebSocket mode
-    return FlagList(
-      flags: [
-        Flag(
-          name: _pauseIsolatesOnStartFlag,
-          comment: 'If enabled, isolates are paused on start',
-          valueAsString: pauseIsolatesOnStart.toString(),
-        ),
-      ],
-    );
-  }
-
-  @override
-  Future<vm_service.Stack> getStack(
-    String isolateId, {
-    String? idZoneId,
-    int? limit,
-  }) => wrapInErrorHandlerAsync('getStack', () => _getStack(isolateId));
-
-  Future<vm_service.Stack> _getStack(String isolateId) async {
-    if (!isIsolateRunning) {
-      throw vm_service.RPCError(
-        'getStack',
-        vm_service.RPCErrorKind.kInvalidParams.code,
-        'No running isolate found for id: $isolateId',
-      );
-    }
-    if (inspector.isolateRef.id != isolateId) {
-      throw vm_service.RPCError(
-        'getStack',
-        vm_service.RPCErrorKind.kInvalidParams.code,
-        'Isolate with id $isolateId not found.',
-      );
-    }
-
-    // Return empty stack since we're in WebSocket mode without Chrome debugging
-    return vm_service.Stack(
-      frames: [],
-      asyncCausalFrames: [],
-      awaiterFrames: [],
-    );
-  }
-}
-
-/// Extended ReloadReport that includes additional metadata in JSON output.
-class _ReloadReportWithMetadata extends vm_service.ReloadReport {
-  final List<String>? notices;
-  _ReloadReportWithMetadata({super.success, this.notices});
-
-  @override
-  Map<String, dynamic> toJson() {
-    final jsonified = <String, Object?>{
-      'type': 'ReloadReport',
-      'success': success ?? false,
-    };
-    if (notices != null) {
-      jsonified['notices'] = notices!.map((e) => {'message': e}).toList();
-    }
-    return jsonified;
-  }
-}
diff --git a/dwds/lib/src/sockets.dart b/dwds/lib/src/sockets.dart
deleted file mode 100644
index c93e9b7..0000000
--- a/dwds/lib/src/sockets.dart
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2021 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:typed_data';
-
-import 'package:logging/logging.dart';
-import 'package:sse/client/sse_client.dart';
-import 'package:stream_channel/stream_channel.dart';
-import 'package:web_socket/web_socket.dart';
-
-abstract class SocketClient {
-  StreamSink<dynamic> get sink;
-  Stream<String> get stream;
-  void close();
-}
-
-class SseSocketClient extends SocketClient {
-  final SseClient _client;
-  SseSocketClient(this._client);
-
-  @override
-  StreamSink<dynamic> get sink => _client.sink;
-
-  @override
-  Stream<String> get stream => _client.stream;
-
-  @override
-  void close() => _client.close();
-}
-
-class WebSocketClient extends SocketClient {
-  final StreamChannelMixin<dynamic> _channel;
-
-  WebSocketClient(this._channel);
-
-  @override
-  StreamSink<dynamic> get sink => _channel.sink;
-  @override
-  Stream<String> get stream => _channel.stream.map((dynamic o) => o.toString());
-
-  @override
-  void close() => _channel.sink.close();
-}
-
-typedef ReconnectCallback = FutureOr<void> Function(StreamSink);
-
-/// A [WebSocket] wrapper that can automatically re-establish a connection
-/// when a connection is lost (e.g., upon entering "sleep" mode, flaky network
-/// connections, etc.).
-class PersistentWebSocket with StreamChannelMixin<dynamic> {
-  PersistentWebSocket._(
-    this.uri,
-    this._ws, {
-    required this.exponentialBackoffDelayMs,
-    required this.maxRetryAttempts,
-    required this.debugName,
-    this.onReconnect,
-    this.logger,
-  });
-
-  /// Creates a [PersistentWebSocket] instance connected to [uri].
-  ///
-  /// [debugName] is a string included in logs written by this class to provide
-  /// additional information about the purpose of this connection.
-  ///
-  /// [maxRetryAttempts] sets the maximum number of retry attempts that can be
-  /// made before giving up.
-  ///
-  /// [exponentialBackoffDelayMs] is the length of the initial delay before
-  /// attempting to retry the connection in milliseconds. This delay doubles
-  /// after each unsuccessful retry attempt.
-  ///
-  /// If [logger] is provided, messages will be logged when attempting to
-  /// re-establish a connection.
-  ///
-  /// No retries are attempted when making the initial web socket connection,
-  /// so callers must be prepared to handle both `SocketException`s and
-  /// [WebSocketException] thrown if the connection to [uri] fails.
-  static Future<PersistentWebSocket> connect(
-    Uri uri, {
-    String debugName = kDefaultDebugName,
-    int maxRetryAttempts = kDefaultMaxRetryAttempts,
-    int exponentialBackoffDelayMs = kDefaultBackoffDelayMs,
-    ReconnectCallback? onReconnect,
-    Logger? logger,
-  }) {
-    return WebSocket.connect(uri).then((socket) {
-      return PersistentWebSocket._(
-        uri,
-        socket,
-        exponentialBackoffDelayMs: exponentialBackoffDelayMs,
-        maxRetryAttempts: maxRetryAttempts,
-        logger: logger,
-        onReconnect: onReconnect,
-        debugName: debugName,
-      );
-    });
-  }
-
-  final Logger? logger;
-
-  static const kDefaultDebugName = 'Unknown';
-
-  /// The debug name associated with this connection.
-  ///
-  /// Useful when trying to identify the context of a given connection. If
-  /// [logger] is set, this name will be output as part of messages output
-  /// while attempting to re-establish connections.
-  final String debugName;
-
-  static const kDefaultMaxRetryAttempts = 3;
-
-  /// The number of retry attempts to make before giving up.
-  final int maxRetryAttempts;
-
-  static const kDefaultBackoffDelayMs = 100;
-
-  /// The amount of time to wait before attempting to retry the connection.
-  ///
-  /// The retry delay is calculated using exponential backoff, where each
-  /// successive delay before a retry attempt is twice as long as the last
-  /// delay.
-  final int exponentialBackoffDelayMs;
-
-  /// Completes when the web socket connection is disposed of.
-  Future<void> get done => _doneCompleter.future;
-  final _doneCompleter = Completer<void>();
-
-  /// The URI used to establish the web socket connection.
-  final Uri uri;
-
-  ReconnectCallback? onReconnect;
-
-  WebSocket _ws;
-
-  late final _incomingStreamController = StreamController<dynamic>()
-    ..onListen = _listenWithRetry;
-  final _outgoingStreamController = StreamController<dynamic>();
-
-  /// Used to indicate that the web socket was closed after [close] was
-  /// invoked.
-  var _closedManually = false;
-
-  void _writeToWebSocket(dynamic data) {
-    try {
-      if (data is String) {
-        _ws.sendText(data);
-      } else if (data is Uint8List) {
-        _ws.sendBytes(data);
-      } else {
-        throw UnsupportedError('Unexpected data type: ${data.runtimeType}');
-      }
-    } on WebSocketConnectionClosed {
-      // The underlying connection was closed (e.g., by the server).
-      // Suppress surfacing an unhandled error by catching here.
-      // [onReconnect] is responsible for recovering after reconnect.
-      logger?.fine('$uri ($debugName): connection closed.');
-    }
-  }
-
-  /// Close the web socket connection.
-  Future<void> close() async {
-    if (_closedManually) {
-      return;
-    }
-    _closedManually = true;
-    await _incomingStreamController.close();
-    await _outgoingStreamController.close();
-    await _ws.close();
-  }
-
-  Future<void> _listenWithRetry() async {
-    var retry = false;
-    var retryCount = 0;
-
-    _outgoingStreamController.stream.listen(_writeToWebSocket);
-
-    Future<void> attemptRetry(String message) async {
-      await Future<void>.delayed(Duration(milliseconds: 100 << retryCount));
-      retryCount++;
-      retry = !_closedManually;
-      if (!_closedManually) {
-        logger?.info('$message. Retrying ($retryCount / $maxRetryAttempts)');
-      }
-    }
-
-    do {
-      final wsOnDoneCompleter = Completer<void>();
-
-      // Check if the connection has been closed during an asynchronous gap.
-      if (_closedManually) {
-        break;
-      }
-      final retried = retry;
-      if (retry) {
-        try {
-          _ws = await WebSocket.connect(uri);
-          // Reset the retry counter on a successful reconnection.
-          retryCount = 0;
-        } on Exception {
-          await attemptRetry(
-            'Failed to establish connection to $uri ($debugName).',
-          );
-          continue;
-        }
-        retry = false;
-      }
-
-      // If the last web socket connection closed unexpected, try to
-      // re-establish the connection.
-      late StreamSubscription<WebSocketEvent> eventsSub;
-      eventsSub = _ws.events.listen((e) async {
-        switch (e) {
-          case TextDataReceived(:final text):
-            _incomingStreamController.sink.add(text);
-          case BinaryDataReceived(:final data):
-            _incomingStreamController.sink.add(data);
-          case CloseReceived(:final code):
-            if (code == 1006) {
-              await attemptRetry('Lost connection to $uri ($debugName).');
-              await eventsSub.cancel();
-            }
-            wsOnDoneCompleter.complete();
-        }
-      });
-
-      if (retried) {
-        await onReconnect?.call(sink);
-      }
-
-      // Wait for the web socket's onDone handler to run before attempting to
-      // retry. Waiting on _ws.done can result in a race condition.
-      await wsOnDoneCompleter.future;
-    } while (retry && retryCount < maxRetryAttempts);
-
-    _doneCompleter.complete();
-    if (!_incomingStreamController.isClosed) {
-      await _incomingStreamController.sink.close();
-    }
-  }
-
-  @override
-  StreamSink<dynamic> get sink => _outgoingStreamController.sink;
-
-  @override
-  Stream<String> get stream => _incomingStreamController.stream.cast<String>();
-}
diff --git a/dwds/lib/src/utilities/conversions.dart b/dwds/lib/src/utilities/conversions.dart
deleted file mode 100644
index f965c00..0000000
--- a/dwds/lib/src/utilities/conversions.dart
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// Functions for converting between the different object references we use.
-library;
-
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Convert [argument] to a form usable in WIP evaluation calls.
-///
-/// The [argument] should be either a RemoteObject or a simple object that can
-/// be passed through the protocol directly.
-///
-/// Note that this doesn't agree with the Chrome Protocol type CallArgument -
-/// it's just a Map corresponding to a RemoteObject. But this seems to work
-/// consistently where the callArgument format doesn't, at least if we're
-/// using the `arguments` pseudo-variable in JS instead of passing directly
-/// as real arguments.
-Map<String, Object?> callArgumentFor(Object argument) {
-  if (argument is RemoteObject) {
-    return _isPrimitive(argument)
-        ? _callArgumentForPrimitive(argument.value)
-        : _callArgumentForRemote(argument);
-  } else {
-    return _callArgumentForPrimitive(argument);
-  }
-}
-
-/// True if [remote] represents a primitive
-bool _isPrimitive(RemoteObject remote) {
-  final id = remote.objectId;
-  return id == null || isStringId(id) || id.startsWith('objects/');
-}
-
-/// A List of Chrome RemoteObjects from Dart object Ids [dartIds].
-///
-/// See [remoteObjectFor] for the accepted ID format.
-List<RemoteObject> remoteObjectsFor(Iterable<String> dartIds) {
-  return dartIds.map(remoteObjectFor).toList();
-}
-
-/// A Chrome RemoteObject from a Dart object Id [dartId].
-///
-/// We expect [dartId] to be one of the following forms.
-///   * Chrome objectId - e.g. '{"injectedScriptId":1,"id":1}'
-///   * Our fabricated string Id - e.g. '#StringInstanceRef#actualString'
-///   * Dart fabricated IDs - e.g.  objects/int-8765
-///
-/// Note that this does NOT accept a Dart library URI, which can be used as an
-/// InstanceRef identifier in the protocol. Libraries aren't first class, and
-/// must be handled separately.
-RemoteObject remoteObjectFor(String dartId) {
-  final data = <String, Object?>{};
-  data['objectId'] = dartId;
-  if (isStringId(dartId)) {
-    data['type'] = 'string';
-    data['value'] = _stringFromDartId(dartId);
-  } else if (isDoubleId(dartId)) {
-    data['type'] = 'number';
-    data['value'] = _doubleFromDartId(dartId);
-  } else if (isIntId(dartId)) {
-    data['type'] = 'number';
-    data['value'] = _intFromDartId(dartId);
-  } else if (isBoolId(dartId)) {
-    data['type'] = 'boolean';
-    data['value'] = _boolFromDartId(dartId);
-  } else if (dartId == _nullId) {
-    data['type'] = 'undefined';
-    data['value'] = null;
-  } else {
-    data['type'] = 'object';
-  }
-  return RemoteObject(data);
-}
-
-/// A Dart object Id appropriate for [argument].
-///
-/// This will work for simple values, RemoteObject, and Maps representations of
-/// RemoteObjects.
-String dartIdFor(Object? argument) {
-  if (argument == null) {
-    return _nullId;
-  }
-  if (argument is double) {
-    return '$_prefixForDoubleIds$argument';
-  }
-  if (argument is int) {
-    return '$_prefixForIntIds$argument';
-  }
-  if (argument is bool) {
-    return '$_prefixForBoolIds$argument';
-  }
-  if (argument is String) {
-    return '$_prefixForStringIds$argument';
-  }
-  if (argument is RemoteObject) {
-    if (argument.objectId == null) {
-      throw ArgumentError.value(argument, 'objectId', 'No objectId found');
-    }
-    return argument.objectId!;
-  }
-  if (argument is Map<String, dynamic>) {
-    final id = argument['objectId'] as String?;
-    if (id == null) {
-      throw ArgumentError.value(argument, 'objectId', 'No objectId found');
-    }
-    return id;
-  }
-  throw ArgumentError.value(argument, 'objectId', 'No objectId found');
-}
-
-/// Converts a Dart object Id for a String to the underlying string.
-///
-/// If the ID is not for a String, throws ArgumentError. If you don't know what
-/// the ID represents, use a more general API like [remoteObjectFor] and if it
-/// is a primitive, you can get the value from the resulting [RemoteObject].
-String stringFromDartId(String dartId) {
-  if (!isStringId(dartId)) {
-    throw ArgumentError.value(
-      dartId,
-      'dart object ID',
-      'Expected a valid ID for a String',
-    );
-  }
-  return _stringFromDartId(dartId);
-}
-
-/// Is [dartId] an Id for a String.
-bool isStringId(String dartId) => dartId.startsWith(_prefixForStringIds);
-
-/// Is [dartId] an Id for a boolean.
-bool isBoolId(String dartId) => dartId.startsWith(_prefixForBoolIds);
-
-/// Is [dartId] an Id for a int.
-bool isIntId(String dartId) => dartId.startsWith(_prefixForIntIds);
-
-/// Is [dartId] an Id for a double.
-bool isDoubleId(String dartId) => dartId.startsWith(_prefixForDoubleIds);
-
-/// Is [dartId] an Id for a Dart library.
-bool isLibraryId(String dartId) => _uriPrefixes.any(dartId.startsWith);
-
-/// A Map representing a RemoteObject for a primitive object.
-Map<String, Object?> _callArgumentForPrimitive(Object? primitive) {
-  return {'type': _jsTypeOf(primitive), 'value': primitive};
-}
-
-/// A Map representing a RemoteObject from an actual RemoteObject.
-Map<String, Object?> _callArgumentForRemote(RemoteObject remote) {
-  return {'type': 'object', 'objectId': remote.objectId};
-}
-
-/// The JS type name to use in a RemoteObject reference to [object].
-String _jsTypeOf(Object? object) {
-  if (object == null) return 'undefined';
-  if (object is String) return 'string';
-  if (object is num) return 'num';
-  if (object is bool) return 'bool';
-  return 'object';
-}
-
-/// Prefixes we use to identify if a Dart ID is a library URI.
-const _uriPrefixes = ['dart:', 'package:', 'org-dartlang-app:'];
-
-/// Convert [dartIdForString] to its corresponding String.
-String _stringFromDartId(String dartIdForString) =>
-    dartIdForString.substring(_prefixForStringIds.length);
-
-/// Convert [dartIdForInt] to its corresponding int.
-int? _intFromDartId(String dartIdForInt) =>
-    int.tryParse(dartIdForInt.substring(_prefixForIntIds.length));
-
-/// Convert [dartIdForDouble] to its corresponding double.
-double? _doubleFromDartId(String dartIdForDouble) =>
-    double.tryParse(dartIdForDouble.substring(_prefixForDoubleIds.length));
-
-/// Convert [dartIdForBool] to its corresponding boolean.
-bool _boolFromDartId(String dartIdForBool) =>
-    dartIdForBool.substring(_prefixForBoolIds.length) == 'true';
-
-/// Chrome doesn't give us an objectId for a String. So we use the string
-/// as its own ID, with a prefix.
-///
-/// This should not be confused with any
-/// other object Ids, as those will be Chrome objectIds, which are
-/// opaque, but are JSON serialized objects of the form
-/// "{\"injectedScriptId\":1,\"id\":1}".
-const _prefixForStringIds = '#StringInstanceRef#';
-
-/// The prefix the Dart VM uses for ints, followed by a string representation of
-/// the number.
-const _prefixForIntIds = 'objects/int-';
-
-/// The prefix we use for doubles, followed by a string representation of
-/// the number.
-const _prefixForDoubleIds = 'objects/double-';
-
-/// The prefix the Dart VM uses for booleans, followed by 'true' or 'false'.
-const _prefixForBoolIds = 'objects/bool-';
-
-/// The object id the Dart VM uses for null.
-const _nullId = 'objects/null';
diff --git a/dwds/lib/src/utilities/dart_uri.dart b/dwds/lib/src/utilities/dart_uri.dart
deleted file mode 100644
index 3c0b6f9..0000000
--- a/dwds/lib/src/utilities/dart_uri.dart
+++ /dev/null
@@ -1,284 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:logging/logging.dart';
-import 'package:package_config/package_config.dart';
-import 'package:path/path.dart' as p;
-
-/// The URI for a particular Dart file, able to canonicalize from various
-/// different representations.
-class DartUri {
-  DartUri._(this.serverPath);
-
-  /// Accepts various forms of URI and can convert between forms.
-  ///
-  /// The accepted forms are:
-  ///
-  ///  - package:packageName/pathUnderLib/file.dart
-  ///  - org-dartlang-app:///prefix/path/file.dart, where prefix is ignored.
-  ///    e.g. org-dartlang-app:example/hello_world/main.dart,
-  ///  - /packages/packageName/foo.dart, the web server form of a package URI,
-  ///    e.g. /packages/path/src/utils.dart
-  ///  - /path/foo.dart or path/foo.dart, e.g. /hello_world/web/main.dart, where
-  ///    path is a web server path and so relative to the directory being
-  ///    served, not to the package.
-  ///
-  /// The optional [root] is the directory the app is served from.
-  factory DartUri(String uri, [String? root]) {
-    // TODO(annagrin): Support creating DartUris from `dart:` uris.
-    // Issue: https://github.com/dart-lang/webdev/issues/1584
-    if (uri.startsWith('org-dartlang-app:') || uri.startsWith('google3:')) {
-      return DartUri._fromDartLangUri(uri);
-    }
-    if (uri.startsWith('package:')) {
-      return DartUri._fromPackageUri(uri, root: root);
-    }
-    if (uri.startsWith('file:')) {
-      return DartUri._fromFileUri(uri, root: root);
-    }
-    if (uri.startsWith('packages/') || uri.startsWith('/packages/')) {
-      return DartUri._fromRelativePath(uri, root: root);
-    }
-    if (uri.startsWith('/')) {
-      return DartUri._fromRelativePath(uri);
-    }
-    if (uri.startsWith('http:') || uri.startsWith('https:')) {
-      return DartUri(Uri.parse(uri).path);
-    }
-
-    throw FormatException('Unsupported URI form: $uri');
-  }
-
-  @override
-  String toString() => 'DartUri: $serverPath';
-
-  /// Construct from a package: URI
-  factory DartUri._fromDartLangUri(String uri) {
-    var serverPath = globalToolConfiguration.loadStrategy.serverPathForAppUri(
-      uri,
-    );
-    if (serverPath == null) {
-      _logger.severe('Cannot find server path for $uri');
-      serverPath = uri;
-    }
-    return DartUri._(serverPath);
-  }
-
-  /// Construct from a package: URI
-  factory DartUri._fromPackageUri(String uri, {String? root}) {
-    var serverPath = globalToolConfiguration.loadStrategy.serverPathForAppUri(
-      uri,
-    );
-    if (serverPath == null) {
-      _logger.severe('Cannot find server path for $uri');
-      serverPath = uri;
-    }
-    return DartUri._fromRelativePath(serverPath, root: root);
-  }
-
-  /// Construct from a file: URI
-  factory DartUri._fromFileUri(String uri, {String? root}) {
-    final libraryName = _resolvedUriToUri[uri];
-    if (libraryName != null) return DartUri(libraryName, root);
-    // This is not one of our recorded libraries.
-    throw ArgumentError.value(uri, 'uri', 'Unknown library');
-  }
-
-  /// Construct from a path, relative to the directory being served.
-  factory DartUri._fromRelativePath(String uri, {String? root}) {
-    uri = uri[0] == '.' ? uri.substring(1) : uri;
-    uri = uri[0] == '/' ? uri.substring(1) : uri;
-
-    if (root != null) {
-      return DartUri._fromRelativePath(p.url.join(root, uri));
-    }
-    return DartUri._(uri);
-  }
-
-  /// The canonical web server path part of the URI.
-  ///
-  /// This is a relative path, which can be used to fetch the corresponding file
-  /// from the server. For example, 'hello_world/main.dart' or
-  /// 'packages/path/src/utils.dart'.
-  final String serverPath;
-
-  static final _logger = Logger('DartUri');
-
-  /// The way we resolve file: URLs into package: URLs
-  static PackageConfig? _packageConfig;
-
-  /// All of the known absolute library paths, indexed by their library URL.
-  ///
-  /// Examples:
-  ///
-  /// We are assuming that all library uris are coming from
-  /// https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md#getscripts)
-  /// and can be translated to their absolute paths and back.
-  ///
-  /// dart:html <->
-  ///   org-dartlang-sdk:///sdk/lib/html/html.dart
-  /// (not supported, issue: https://github.com/dart-lang/webdev/issues/1457)
-  ///
-  /// org-dartlang-app:///example/hello_world/main.dart <->
-  ///   file:///source/webdev/fixtures/_test/example/hello_world/main.dart,
-  ///
-  /// org-dartlang-app:///example/hello_world/part.dart <->
-  ///   file:///source/webdev/fixtures/_test/example/hello_world/part.dart,
-  ///
-  /// package:path/path.dart <->
-  ///   file:///.pub-cache/hosted/pub.dev/path-1.8.0/lib/path.dart,
-  ///
-  /// package:path/src/path_set.dart <->
-  ///   file:///.pub-cache/hosted/pub.dev/path-1.8.0/lib/src/path_set.dart,
-  static final Map<String, String> _uriToResolvedUri = {};
-
-  /// All of the known libraries, indexed by their absolute file URL.
-  static final Map<String, String> _resolvedUriToUri = {};
-
-  /// Returns a resolved path for a g3-relative URI.
-  ///
-  /// This map is empty if not a google3 app.
-  static final Map<String, String> _g3RelativeUriToResolvedUri = {};
-
-  /// Returns package, app, or dart uri for a resolved path.
-  static String? toPackageUri(String uri) {
-    final packageUri = _resolvedUriToUri[uri];
-    if (packageUri != null) return packageUri;
-
-    // If this is an internal app, then the given uri might
-    // be relative or absolute google3 uri.
-    if (globalToolConfiguration.appMetadata.isInternalBuild) {
-      final resolvedUri = _g3RelativeUriToResolvedUri[uri];
-      final g3PackageUri = _resolvedUriToUri[resolvedUri];
-      if (g3PackageUri != null) {
-        return g3PackageUri;
-      }
-
-      // If the input is an absolute URI (like file:/// or google3:///),
-      // return it as is, as DWDS can use it directly.
-      final parsedUri = Uri.tryParse(uri);
-      if (parsedUri != null && parsedUri.hasAbsolutePath) {
-        return uri;
-      }
-    }
-
-    return null;
-  }
-
-  /// Returns resolved path for a package, app, or dart uri.
-  static String? toResolvedUri(String uri) => _uriToResolvedUri[uri];
-
-  static String _currentDirectory = p.current;
-
-  /// The directory in which we're running.
-  ///
-  /// We store this here because for tests we may want to act as if we're
-  /// running in the directory of a target package, even if the current
-  /// directory of the tests is actually the main dwds directory.
-  static String get currentDirectory => _currentDirectory;
-
-  static set currentDirectory(String newDir) {
-    _currentDirectory = newDir;
-    _currentDirectoryUri = p.toUri(newDir).toString();
-  }
-
-  static String _currentDirectoryUri = p.toUri(currentDirectory).toString();
-
-  /// The current directory as a file: Uri, saved in a field to avoid
-  /// re-computing.
-  static String get currentDirectoryUri => _currentDirectoryUri;
-
-  /// Record library and script uris to enable resolving library and script
-  /// paths.
-  static Future<void> initialize() async {
-    clear();
-    await _loadPackageConfig(
-      p.toUri(globalToolConfiguration.loadStrategy.packageConfigPath),
-    );
-  }
-
-  /// Clear the uri resolution tables.
-  static void clear() {
-    _packageConfig = null;
-    _resolvedUriToUri.clear();
-    _uriToResolvedUri.clear();
-    _g3RelativeUriToResolvedUri.clear();
-  }
-
-  /// Record all of the libraries, indexed by their absolute file: URI.
-  static void recordAbsoluteUris(Iterable<String> libraryUris) {
-    for (final uri in libraryUris) {
-      _recordAbsoluteUri(uri);
-      if (globalToolConfiguration.appMetadata.isInternalBuild) {
-        _recordG3RelativeUri(uri);
-      }
-    }
-  }
-
-  static void _recordG3RelativeUri(String libraryUri) {
-    final absoluteUri = _uriToResolvedUri[libraryUri];
-    if (absoluteUri == null) return;
-
-    final g3RelativeUri = globalToolConfiguration.loadStrategy.g3RelativePath(
-      absoluteUri,
-    );
-    if (g3RelativeUri != null) {
-      _g3RelativeUriToResolvedUri[g3RelativeUri] = absoluteUri;
-    }
-  }
-
-  /// Load the .dart_tool/package_config.json file associated with the running
-  /// application so we can resolve file URLs into package: URLs appropriately.
-  static Future<void> _loadPackageConfig(Uri uri) async {
-    _packageConfig = await loadPackageConfigUri(
-      uri,
-      loader: globalToolConfiguration.loadStrategy.packageConfigLoader,
-      onError: (e) {
-        _logger.warning('Cannot read packages spec: $uri', e);
-      },
-    );
-  }
-
-  /// Record the library represented by package: or org-dartlang-app: uris
-  /// indexed by absolute file: URI.
-  static void _recordAbsoluteUri(String libraryUri) {
-    final uri = Uri.parse(libraryUri);
-    if (uri.scheme.isEmpty && !uri.path.endsWith('.dart')) {
-      // ignore non-dart files
-      return;
-    }
-
-    String? libraryPath;
-    switch (uri.scheme) {
-      case 'dart':
-        // TODO(annagrin): Support resolving `dart:` uris.
-        // Issue: https://github.com/dart-lang/webdev/issues/1584
-        return;
-      case 'org-dartlang-app':
-      case 'google3':
-        // Both currentDirectoryUri and the libraryUri path should have '/'
-        // separators, so we can join them as url paths to get the absolute file
-        // url.
-        final libraryRoot = globalToolConfiguration.loadStrategy.libraryRoot;
-        libraryPath = p.url.join(
-          libraryRoot ?? currentDirectoryUri,
-          uri.path.substring(1),
-        );
-        break;
-      case 'package':
-        libraryPath = _packageConfig?.resolve(uri)?.toString();
-        break;
-      default:
-        throw ArgumentError.value(libraryUri, 'URI scheme not allowed');
-    }
-
-    if (libraryPath != null) {
-      _uriToResolvedUri[libraryUri] = libraryPath;
-      _resolvedUriToUri[libraryPath] = libraryUri;
-    } else {
-      _logger.fine('Unresolved uri: $uri');
-    }
-  }
-}
diff --git a/dwds/lib/src/utilities/ddc_names.dart b/dwds/lib/src/utilities/ddc_names.dart
deleted file mode 100644
index d9ba2c2..0000000
--- a/dwds/lib/src/utilities/ddc_names.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:path/path.dart' as p;
-
-/// Transforms a path to a valid JS identifier.
-///
-/// This logic must be synchronized with [pathToJSIdentifier] in DDC at:
-/// pkg/dev_compiler/lib/src/compiler/module_builder.dart
-///
-/// For backwards compatibility, if this pattern is changed,
-/// dev_compiler_bootstrap.dart must be updated to accept both old and new
-/// patterns.
-String pathToJSIdentifier(String path) {
-  path = p.normalize(path);
-  if (path.startsWith('/') || path.startsWith('\\')) {
-    path = path.substring(1, path.length);
-  }
-  return toJSIdentifier(
-    path
-        .replaceAll('\\', '__')
-        .replaceAll('/', '__')
-        .replaceAll('..', '__')
-        .replaceAll('-', '_'),
-  );
-}
-
-/// Escape [name] to make it into a valid identifier.
-String toJSIdentifier(String name) {
-  if (name.isEmpty) return r'$';
-
-  // Escape any invalid characters
-  StringBuffer? buffer;
-  for (var i = 0; i < name.length; i++) {
-    final ch = name[i];
-    final needsEscape = ch == r'$' || _invalidCharInIdentifier.hasMatch(ch);
-    if (needsEscape && buffer == null) {
-      buffer = StringBuffer(name.substring(0, i));
-    }
-    if (buffer != null) {
-      buffer.write(needsEscape ? '\$${ch.codeUnits.join("")}' : ch);
-    }
-  }
-
-  final result = buffer != null ? '$buffer' : name;
-  // Ensure the identifier first character is not numeric and that the whole
-  // identifier is not a keyword.
-  if (result.startsWith(RegExp('[0-9]')) || invalidVariableName(result)) {
-    return '\$$result';
-  }
-  return result;
-}
-
-/// Returns true for invalid JS variable names, such as keywords.
-/// Also handles invalid variable names in strict mode, like "arguments".
-bool invalidVariableName(String keyword, {bool strictMode = true}) {
-  switch (keyword) {
-    // http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words
-    case 'await':
-    case 'break':
-    case 'case':
-    case 'catch':
-    case 'class':
-    case 'const':
-    case 'continue':
-    case 'debugger':
-    case 'default':
-    case 'delete':
-    case 'do':
-    case 'else':
-    case 'enum':
-    case 'export':
-    case 'extends':
-    case 'finally':
-    case 'for':
-    case 'function':
-    case 'if':
-    case 'import':
-    case 'in':
-    case 'instanceof':
-    case 'let':
-    case 'new':
-    case 'return':
-    case 'super':
-    case 'switch':
-    case 'this':
-    case 'throw':
-    case 'try':
-    case 'typeof':
-    case 'var':
-    case 'void':
-    case 'while':
-    case 'with':
-      return true;
-    case 'arguments':
-    case 'eval':
-    // http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words
-    // http://www.ecma-international.org/ecma-262/6.0/#sec-identifiers-static-semantics-early-errors
-    case 'implements':
-    case 'interface':
-    case 'package':
-    case 'private':
-    case 'protected':
-    case 'public':
-    case 'static':
-    case 'yield':
-      return strictMode;
-  }
-  return false;
-}
-
-// Invalid characters for identifiers, which would need to be escaped.
-final _invalidCharInIdentifier = RegExp(r'[^A-Za-z_$0-9]');
diff --git a/dwds/lib/src/utilities/domain.dart b/dwds/lib/src/utilities/domain.dart
deleted file mode 100644
index df8d528..0000000
--- a/dwds/lib/src/utilities/domain.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:vm_service/vm_service.dart';
-
-Never throwInvalidParam(String method, String message) {
-  throw RPCError(method, RPCErrorKind.kInvalidParams.code, message);
-}
diff --git a/dwds/lib/src/utilities/fix_protocol.dart b/dwds/lib/src/utilities/fix_protocol.dart
deleted file mode 100644
index 80922bf..0000000
--- a/dwds/lib/src/utilities/fix_protocol.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2026, 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.
-
-/// Returns [url] modified if necessary so that, if the current page is served
-/// over `https`, then the URL is converted to `https` (or `wss`).
-String fixProtocol(String url, {required String windowLocationProtocol}) {
-  var uri = Uri.parse(url);
-  if (windowLocationProtocol == 'https:' &&
-      // Chrome allows mixed content on localhost. It is not safe to assume the
-      // server is also listening on https.
-      uri.host != 'localhost') {
-    if (uri.scheme == 'http') {
-      uri = uri.replace(scheme: 'https');
-    } else if (uri.scheme == 'ws') {
-      uri = uri.replace(scheme: 'wss');
-    }
-  }
-  return uri.toString();
-}
diff --git a/dwds/lib/src/utilities/objects.dart b/dwds/lib/src/utilities/objects.dart
deleted file mode 100644
index 86680ae..0000000
--- a/dwds/lib/src/utilities/objects.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// A library for WebKit mirror objects and support code.
-///
-/// These probably should get migrated into
-/// `package:webkit_inspection_protocol` over time.
-library;
-
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-/// Represents a property of an object.
-class Property {
-  final Map<String, dynamic>? _map;
-
-  RemoteObject? _remoteObjectValue;
-
-  Property(this._map);
-
-  Map<String, dynamic>? get map => _map;
-
-  /// The remote object value in unwrapped form.
-  ///
-  /// Useful for getting access to properties of particular types of
-  /// RemoteObject.
-  Object? get rawValue => _map == null ? null : _map['value'];
-
-  /// Remote object value in case of primitive values or JSON values (if it was
-  /// requested). (optional)
-  RemoteObject? get value {
-    if (_remoteObjectValue != null) return _remoteObjectValue!;
-    if (_map == null) return null;
-    if (rawValue == null) return null;
-    final val = _map['value'];
-    if (val is RemoteObject) {
-      _remoteObjectValue = val;
-    } else {
-      _remoteObjectValue = RemoteObject(val as Map<String, dynamic>);
-    }
-    return _remoteObjectValue;
-  }
-
-  /// The name of the property
-  String? get name {
-    if (_map == null) return null;
-    if (rawName == null) return null;
-    const prefix = 'Symbol(';
-    var nonSymbol = (rawName!.startsWith(prefix))
-        ? rawName!.substring(prefix.length, rawName!.length - 1)
-        : rawName!;
-    // Adjust names for late fields:
-    // '_#MyTestClass#myselfField' -> 'myselfField'
-    // TODO(annagrin): Use debug symbols to map from dart to JS symbols.
-    // https://github.com/dart-lang/sdk/issues/40273
-    nonSymbol = nonSymbol.split('#').last;
-    return nonSymbol.split('.').last;
-  }
-
-  /// The raw name of the property in JS.
-  ///
-  /// Will be of the form 'Symbol(_actualName)' for private fields.
-  String? get rawName {
-    if (_map == null) return null;
-    return _map['name'] as String;
-  }
-
-  @override
-  String toString() => '$name: $value';
-}
diff --git a/dwds/lib/src/utilities/sdk_configuration.dart b/dwds/lib/src/utilities/sdk_configuration.dart
deleted file mode 100644
index ead1769..0000000
--- a/dwds/lib/src/utilities/sdk_configuration.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// 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:io';
-
-import 'package:file/file.dart';
-import 'package:file/local.dart';
-import 'package:path/path.dart' as p;
-
-class InvalidSdkConfigurationException implements Exception {
-  final String? message;
-
-  InvalidSdkConfigurationException([this.message]);
-
-  @override
-  String toString() {
-    final message = this.message;
-    if (message == null) return 'Invalid SDK configuration';
-    return 'Invalid SDK configuration: $message';
-  }
-}
-
-/// SDK configuration provider interface.
-///
-/// Supports lazily populated configurations by allowing to create
-/// configuration asynchronously.
-abstract class SdkConfigurationProvider {
-  const SdkConfigurationProvider();
-
-  Future<SdkConfiguration> get configuration;
-}
-
-/// Dart SDK layout.
-///
-/// Contains definition of the default SDK layout.
-/// We keep all the path constants in one place for ease of update.
-class SdkLayout {
-  static final defaultSdkDirectory = p.dirname(
-    p.dirname(Platform.resolvedExecutable),
-  );
-  static final SdkLayout defaultSdkLayout = SdkLayout.createDefault(
-    defaultSdkDirectory,
-  );
-
-  final String sdkDirectory;
-  final String summaryPath;
-  final String dartdevcSnapshotPath;
-
-  SdkLayout.createDefault(String sdkDirectory)
-    : this(
-        sdkDirectory: sdkDirectory,
-        summaryPath: p.join(
-          sdkDirectory,
-          'lib',
-          '_internal',
-          'ddc_outline.dill',
-        ),
-        dartdevcSnapshotPath: p.join(
-          sdkDirectory,
-          'bin',
-          'snapshots',
-          'dartdevc.dart.snapshot',
-        ),
-      );
-
-  const SdkLayout({
-    required this.sdkDirectory,
-    required this.summaryPath,
-    required this.dartdevcSnapshotPath,
-  });
-}
-
-/// Dart SDK configuration.
-///
-/// Provides helpers to convert paths to uris that work on all platforms.
-///
-class SdkConfiguration {
-  static final defaultSdkLayout = SdkLayout.defaultSdkLayout;
-  static final defaultConfiguration = SdkConfiguration.fromSdkLayout(
-    SdkLayout.defaultSdkLayout,
-  );
-
-  final String? sdkDirectory;
-  final String? sdkSummaryPath;
-  final String? compilerWorkerPath;
-
-  const SdkConfiguration({
-    this.sdkDirectory,
-    this.sdkSummaryPath,
-    this.compilerWorkerPath,
-  });
-
-  const SdkConfiguration.empty() : this();
-
-  SdkConfiguration.fromSdkLayout(SdkLayout sdkLayout)
-    : this(
-        sdkDirectory: sdkLayout.sdkDirectory,
-        sdkSummaryPath: sdkLayout.summaryPath,
-        compilerWorkerPath: sdkLayout.dartdevcSnapshotPath,
-      );
-
-  static Uri? _toUri(String? path) => path == null ? null : p.toUri(path);
-  static Uri? _toAbsoluteUri(String? path) =>
-      path == null ? null : p.toUri(p.absolute(path));
-
-  Uri? get sdkDirectoryUri => _toUri(sdkDirectory);
-  Uri? get sdkSummaryUri => _toUri(sdkSummaryPath);
-
-  /// Note: has to be ///file: Uri to run in an isolate.
-  Uri? get compilerWorkerUri => _toAbsoluteUri(compilerWorkerPath);
-
-  /// Throws [InvalidSdkConfigurationException] if configuration does not
-  /// exist on disk.
-  void validate({FileSystem fileSystem = const LocalFileSystem()}) {
-    validateSdkDir(fileSystem: fileSystem);
-    validateSummaries(fileSystem: fileSystem);
-    validateCompilerWorker(fileSystem: fileSystem);
-  }
-
-  /// Throws [InvalidSdkConfigurationException] if SDK root does not
-  /// exist on the disk.
-  void validateSdkDir({FileSystem fileSystem = const LocalFileSystem()}) {
-    if (sdkDirectory == null ||
-        !fileSystem.directory(sdkDirectory).existsSync()) {
-      throw InvalidSdkConfigurationException(
-        'Sdk directory $sdkDirectory does not exist',
-      );
-    }
-  }
-
-  void validateSummaries({FileSystem fileSystem = const LocalFileSystem()}) {
-    if (sdkSummaryPath == null ||
-        !fileSystem.file(sdkSummaryPath).existsSync()) {
-      throw InvalidSdkConfigurationException(
-        'Sdk summary $sdkSummaryPath does not exist',
-      );
-    }
-  }
-
-  void validateCompilerWorker({
-    FileSystem fileSystem = const LocalFileSystem(),
-  }) {
-    if (compilerWorkerPath == null ||
-        !fileSystem.file(compilerWorkerPath).existsSync()) {
-      throw InvalidSdkConfigurationException(
-        'Compiler worker $compilerWorkerPath does not exist',
-      );
-    }
-  }
-}
-
-class DefaultSdkConfigurationProvider extends SdkConfigurationProvider {
-  const DefaultSdkConfigurationProvider();
-
-  @override
-  Future<SdkConfiguration> get configuration async =>
-      SdkConfiguration.defaultConfiguration;
-}
diff --git a/dwds/lib/src/utilities/server.dart b/dwds/lib/src/utilities/server.dart
deleted file mode 100644
index 776f34d..0000000
--- a/dwds/lib/src/utilities/server.dart
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/src/services/chrome/chrome_debug_exception.dart';
-import 'package:http_multi_server/http_multi_server.dart';
-import 'package:shelf/shelf.dart';
-import 'package:shelf/shelf_io.dart';
-import 'package:stack_trace/stack_trace.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
-    as wip;
-
-/// Returns a port that is probably, but not definitely, not in use.
-///
-/// This has a built-in race condition: another process may bind this port at
-/// any time after this call has returned.
-Future<int> findUnusedPort() async {
-  int port;
-  ServerSocket socket;
-  try {
-    socket = await ServerSocket.bind(
-      InternetAddress.loopbackIPv6,
-      0,
-      v6Only: true,
-    );
-  } on SocketException {
-    socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
-  }
-  port = socket.port;
-  await socket.close();
-  return port;
-}
-
-/// Finds unused port and binds a new http server to it.
-///
-/// Retries a few times to recover from errors due to
-/// another thread or process opening the same port.
-/// Starts by trying to bind to [port] if specified.
-Future<HttpServer> startHttpServer(String hostname, {int? port}) async {
-  HttpServer? httpServer;
-  final retries = 5;
-  var i = 0;
-  var foundPort = port ?? await findUnusedPort();
-  while (i < retries) {
-    i++;
-    try {
-      httpServer = await HttpMultiServer.bind(hostname, foundPort);
-    } on SocketException {
-      if (i == retries) rethrow;
-    }
-    if (httpServer != null || i == retries) return httpServer!;
-    foundPort = await findUnusedPort();
-    await Future<void>.delayed(const Duration(milliseconds: 100));
-  }
-  return httpServer!;
-}
-
-/// Handles [requests] using [handler].
-///
-/// Captures all sync and async stack error traces and passes
-/// them to the [onError] handler.
-void serveHttpRequests(
-  Stream<HttpRequest> requests,
-  Handler handler,
-  void Function(Object, StackTrace) onError,
-) {
-  return Chain.capture(() {
-    serveRequests(requests, handler);
-  }, onError: onError);
-}
-
-/// Throws an [wip.ExceptionDetails] object if `exceptionDetails` is present on
-/// the result.
-void handleErrorIfPresent(wip.WipResponse? response, {String? evalContents}) {
-  final result = response?.result;
-  if (result == null) return;
-  if (result.containsKey('exceptionDetails')) {
-    throw ChromeDebugException(
-      result['exceptionDetails'] as Map<String, dynamic>,
-      evalContents: evalContents,
-    );
-  }
-}
-
-/// Returns result contained in the response.
-/// Throws an [wip.ExceptionDetails] object if `exceptionDetails` is present on
-/// the result or the result is null.
-Map<String, dynamic> getResultOrHandleError(
-  wip.WipResponse? response, {
-  String? evalContents,
-}) {
-  handleErrorIfPresent(response, evalContents: evalContents);
-  final result = response?.result?['result'];
-  if (result == null) {
-    throw ChromeDebugException({
-      'text': 'null result from Chrome Devtools',
-    }, evalContents: evalContents);
-  }
-  return result as Map<String, dynamic>;
-}
diff --git a/dwds/lib/src/utilities/shared.dart b/dwds/lib/src/utilities/shared.dart
deleted file mode 100644
index ba86664..0000000
--- a/dwds/lib/src/utilities/shared.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:logging/logging.dart';
-import 'package:vm_service/vm_service.dart';
-
-VMRef toVMRef(VM vm) => VMRef(name: vm.name);
-
-int _nextId = 0;
-String createId() {
-  _nextId++;
-  return '$_nextId';
-}
-
-final _logger = Logger('Utilities');
-
-void safeUnawaited(
-  Future<void> future, {
-  void Function(Object, StackTrace)? onError,
-}) {
-  onError ??= (Object error, StackTrace stackTrace) =>
-      _logger.warning('Error in unawaited Future:', error, stackTrace);
-  unawaited(future.catchError(onError));
-}
-
-/// Throws an [RPCError] if the [asyncCallback] has an exception.
-///
-/// Only throws a new exception if the original exception type was not
-/// [RPCError] or [SentinelException] (the two supported exception types of
-/// package:vm_service).
-Future<T> wrapInErrorHandlerAsync<T>(
-  String command,
-  Future<T> Function() asyncCallback,
-) {
-  return asyncCallback().catchError((Object error) {
-    return Future<T>.error(
-      RPCError(
-        command,
-        RPCErrorKind.kInternalError.code,
-        'Unexpected DWDS error for $command: $error',
-      ),
-    );
-  }, test: (e) => e is! RPCError && e is! SentinelException);
-}
diff --git a/dwds/lib/src/utilities/synchronized.dart b/dwds/lib/src/utilities/synchronized.dart
deleted file mode 100644
index e318817..0000000
--- a/dwds/lib/src/utilities/synchronized.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:pool/pool.dart';
-
-class AtomicQueue {
-  final _pool = Pool(1);
-
-  AtomicQueue();
-
-  // Executes tasks sequentially.
-  Future<T> run<T>(FutureOr<T> Function() task) => _pool.withResource(task);
-}
diff --git a/dwds/lib/src/utilities/uuid.dart b/dwds/lib/src/utilities/uuid.dart
deleted file mode 100644
index eddc45b..0000000
--- a/dwds/lib/src/utilities/uuid.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2026, 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:math';
-import 'dart:typed_data';
-
-/// A UUID generator.
-///
-/// This is a lightweight replacement for package:uuid, specifically for
-/// generating version 4 (random) UUIDs using a cryptographically secure random
-/// number generator.
-///
-/// See https://datatracker.ietf.org/doc/html/rfc4122#section-4.4
-/// See also https://github.com/daegalus/dart-uuid/blob/main/lib/v4.dart
-class Uuid {
-  static final Random _random = Random.secure();
-
-  const Uuid();
-
-  /// Generates a Version 4 (random) UUID.
-  ///
-  /// The UUID is formatted as a string:
-  /// xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
-  /// where x is a random hex digit and y is a random hex digit from 8, 9, a,
-  /// or b.
-  String v4() {
-    final bytes = Uint8List(16);
-    for (var i = 0; i < 16; i++) {
-      bytes[i] = _random.nextInt(256);
-    }
-
-    // Set the version number (4) to 0100
-    bytes[6] = (bytes[6] & 0x0f) | 0x40;
-
-    // Set the variant (10xx) to 1000
-    bytes[8] = (bytes[8] & 0x3f) | 0x80;
-
-    final buf = StringBuffer();
-    for (var i = 0; i < 16; i++) {
-      if (i == 4 || i == 6 || i == 8 || i == 10) {
-        buf.write('-');
-      }
-      buf.write(_hex[bytes[i]]);
-    }
-    return buf.toString();
-  }
-
-  /// A pre-computed list of hex strings for all possible byte values (0-255).
-  ///
-  /// For example, `_hex[255]` is 'ff'.
-  static final _hex = List.generate(
-    256,
-    (i) => i.toRadixString(16).padLeft(2, '0'),
-  );
-}
diff --git a/dwds/lib/src/version.dart b/dwds/lib/src/version.dart
deleted file mode 100644
index aeec9f1..0000000
--- a/dwds/lib/src/version.dart
+++ /dev/null
@@ -1,2 +0,0 @@
-// Generated code. Do not modify.
-const packageVersion = '27.2.0-wip';
diff --git a/dwds/lib/utilities.dart b/dwds/lib/utilities.dart
deleted file mode 100644
index 02e84d8..0000000
--- a/dwds/lib/utilities.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2023, 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.
-
-export 'src/utilities/ddc_names.dart';
diff --git a/dwds/pubspec.yaml b/dwds/pubspec.yaml
deleted file mode 100644
index 04453bf..0000000
--- a/dwds/pubspec.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-name: dwds
-# Every time this changes you need to run `dart run tool/build.dart`.
-version: 27.2.0-wip
-
-description: >-
-  A service that proxies between the Chrome debug protocol and the Dart VM
-  service protocol.
-repository: https://github.com/dart-lang/webdev/tree/main/dwds
-environment:
-  sdk: ^3.14.0-286.0.dev
-
-dependencies:
-  async: ^2.9.0
-  collection: ^1.15.0
-  crypto: ^3.0.2
-  dds: ^5.3.0
-  file: ">=6.1.4 <8.0.0"
-  http: ^1.0.0
-  http_multi_server: ^3.2.0
-  logging: ^1.0.2
-  meta: ^1.9.1
-  package_config: '>=2.0.2 <4.0.0'
-  path: ^1.8.1
-  pool: ^1.5.0
-  pub_semver: ^2.1.1
-  shelf: ^1.3.0
-  shelf_proxy: ^1.0.4
-  shelf_web_socket: ">=2.0.0 <4.0.0"
-  source_maps: ^0.10.10
-  sse: ^4.2.0
-  stack_trace: ^1.10.0
-  stream_channel: ^2.1.2
-  vm_service: ">=14.2.4 <16.0.0"
-  vm_service_interface: ^2.0.1
-  web_socket: ^1.0.1
-  web_socket_channel: ">=2.2.0 <4.0.0"
-  webkit_inspection_protocol: ^1.0.1
-
-dev_dependencies:
-  args: ^2.7.0
-  build_daemon: ^4.1.4
-  dart_flutter_team_lints: ^3.5.2
-  dwds_test_common:
-    path: ../dwds_test_common
-  graphs: ^2.1.0
-  io: ^1.0.5
-  mime: ^2.0.0
-  test: ^1.21.6
-  web: ^1.1.0
-  webdriver: ^3.0.0
-  yaml: ^3.1.3
diff --git a/dwds/test/build/build_script_test.dart b/dwds/test/build/build_script_test.dart
deleted file mode 100644
index ced1916..0000000
--- a/dwds/test/build/build_script_test.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2026, 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:convert';
-import 'dart:io';
-
-import 'package:crypto/crypto.dart';
-import 'package:dwds/src/handlers/injected_client_js.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import 'test_path_utils.dart';
-
-void main() {
-  group('Committed file integrity tests', () {
-    test('injected_client_js.dart is in sync with web/client.dart', () async {
-      final clientDartString = File(await dwdsPath('web/client.dart'))
-          .readAsStringSync()
-          .replaceAll('\r\n', '\n');
-      final expectedHash = sha256
-          .convert(utf8.encode(clientDartString))
-          .toString();
-
-      expect(
-        clientDartHash,
-        equals(expectedHash),
-        reason:
-            'The hash of web/client.dart does not match clientDartHash '
-            'in injected_client_js.dart. '
-            'Please run `dart run tool/build.dart` to regenerate the asset.',
-      );
-    });
-
-    test('injected_client_js.dart has normalized line endings', () {
-      expect(injectedClientJs.contains('\r'), isFalse);
-    });
-  });
-
-  group('Build script tests', () {
-    setUpAll(() async {
-      // Use Platform.executable to ensure the same Dart SDK is used. Only
-      // resolve the absolute path if it's a local/relative path. Global
-      // system commands (no path separators) are passed as-is.
-      final executable = Platform.executable;
-      final resolvedExecutable = executable.contains(p.separator)
-          ? File(executable).absolute.path
-          : executable;
-      final result = await Process.run(resolvedExecutable, [
-        'run',
-        'tool/build.dart',
-      ], workingDirectory: await dwdsPackageRoot);
-
-      expect(
-        result.exitCode,
-        0,
-        reason: 'Build script failed: ${result.stdout}\n${result.stderr}',
-      );
-    });
-
-    test('generates client.js', () async {
-      final clientJsFile = File(
-        await dwdsPath(p.join('lib', 'src', 'injected', 'client.js')),
-      );
-      expect(clientJsFile.existsSync(), isTrue);
-      expect(clientJsFile.lengthSync(), greaterThan(0));
-    });
-
-    test('generates version.dart', () async {
-      final versionFile = File(
-        await dwdsPath(p.join('lib', 'src', 'version.dart')),
-      );
-      expect(versionFile.existsSync(), isTrue);
-      expect(
-        versionFile.readAsStringSync(),
-        contains('const packageVersion ='),
-      );
-    });
-
-    test('generates injected_client_js.dart', () async {
-      final injectedFile = File(
-        await dwdsPath(
-          p.join('lib', 'src', 'handlers', 'injected_client_js.dart'),
-        ),
-      );
-      expect(injectedFile.existsSync(), isTrue);
-      expect(injectedFile.lengthSync(), greaterThan(0));
-    });
-
-    test('injected_client_js.dart matches client.js content', () async {
-      final clientJsFile = File(
-        await dwdsPath(p.join('lib', 'src', 'injected', 'client.js')),
-      );
-      final actualClientJs = clientJsFile.readAsStringSync().replaceAll(
-        '\r\n',
-        '\n',
-      );
-
-      final injectedFile = File(
-        await dwdsPath(
-          p.join('lib', 'src', 'handlers', 'injected_client_js.dart'),
-        ),
-      );
-      final injectedContent = injectedFile.readAsStringSync();
-
-      final lines = actualClientJs.split('\n');
-      final expectedSafeDartString = [
-        for (var i = 0; i < lines.length; i++)
-          jsonEncode(i == lines.length - 1 ? lines[i] : '${lines[i]}\n')
-              .replaceAll(r'$', r'\$'),
-      ].join('\n');
-
-      expect(
-        injectedContent,
-        contains('const injectedClientJs = $expectedSafeDartString;'),
-      );
-    });
-  });
-}
diff --git a/dwds/test/build/ensure_version_test.dart b/dwds/test/build/ensure_version_test.dart
deleted file mode 100644
index 1266c6d..0000000
--- a/dwds/test/build/ensure_version_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-library;
-
-import 'dart:io';
-
-import 'package:dwds/src/version.dart';
-import 'package:pub_semver/pub_semver.dart';
-import 'package:test/test.dart';
-import 'package:yaml/yaml.dart';
-
-import 'test_path_utils.dart';
-
-void main() {
-  test('dwds lib/src/version.dart matches the pubspec version', () async {
-    final pubspecPath = await dwdsPath('pubspec.yaml');
-    final pubspec = loadYaml(File(pubspecPath).readAsStringSync()) as Map;
-    expect(
-      Version.parse(packageVersion),
-      Version.parse(pubspec['version'] as String),
-      reason: 'Please run `dart run tool/build.dart` to update the version.',
-    );
-  });
-}
diff --git a/dwds/test/build/test_path_utils.dart b/dwds/test/build/test_path_utils.dart
deleted file mode 100644
index 5dfb648..0000000
--- a/dwds/test/build/test_path_utils.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:isolate';
-
-import 'package:path/path.dart' as p;
-
-/// Returns the path to the `dwds` package root directory.
-Future<String> get dwdsPackageRoot async {
-  final uri = await Isolate.resolvePackageUri(
-    Uri.parse('package:dwds/dwds.dart'),
-  );
-  if (uri == null) {
-    throw StateError('Could not resolve package:dwds');
-  }
-  // uri is file:///.../pkg/dwds/lib/dwds.dart
-  // We need to go up 2 levels to get to pkg/dwds
-  return p.dirname(p.dirname(uri.toFilePath()));
-}
-
-/// Returns the absolute path to a file or directory relative to the `dwds`
-/// package root.
-Future<String> dwdsPath(String pathFromDwds) async {
-  return p.normalize(p.join(await dwdsPackageRoot, pathFromDwds));
-}
diff --git a/dwds/test/frontend_server_common/CHANGELOG-legacy.md b/dwds/test/frontend_server_common/CHANGELOG-legacy.md
deleted file mode 100644
index b05b83a..0000000
--- a/dwds/test/frontend_server_common/CHANGELOG-legacy.md
+++ /dev/null
@@ -1,26 +0,0 @@
-## 0.2.3-wip
-
-- Update Dart SDK constraint to `^3.10.0`.
-- Add bootstrapping code for DDC library bundle format.
-- Added scriptUri to compileExpression*Request
-- Adding `createReloadedSourceEntry` for sharing reloaded_sources.json entry logic.
-
-## 0.2.2
-
-- Start the frontend server from the AOT snapshot shipped in the Dart SDK.
-
-## 0.2.1
-
-- Doe not pass `-debugger-module-names` flag to the frontend server.
-
-## 0.2.0
-
-- Migrate to null safety
-
-## 0.1.1
-
-- Remove dead code
-
-## 0.1.0
-
-- Initial version
diff --git a/dwds/test/frontend_server_common/README.md b/dwds/test/frontend_server_common/README.md
deleted file mode 100644
index 61862a5..0000000
--- a/dwds/test/frontend_server_common/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Dart Web Developer Service
-
-__*Note: Under heavy development.*__
-
-This code is an edited copy of flutter code used for setting up frontend server
-and components that are needed to communicate to Chrome and dwds:
-
-- frontend server client
-- web runner
-- dev fs
-- asset server
-
-This eventually will transform into common code that both flutter and dwds use
-for better integration.
diff --git a/dwds/test/frontend_server_common/asset_server.dart b/dwds/test/frontend_server_common/asset_server.dart
deleted file mode 100644
index ef39ff0..0000000
--- a/dwds/test/frontend_server_common/asset_server.dart
+++ /dev/null
@@ -1,363 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Note: this is a copy from flutter tools, updated to work with dwds tests
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-import 'dart:typed_data';
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/config.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:file/file.dart';
-import 'package:logging/logging.dart';
-import 'package:mime/mime.dart' as mime;
-import 'package:shelf/shelf.dart' as shelf;
-
-class TestAssetServer implements AssetReader {
-  late final String _basePath;
-  final String index;
-
-  final _logger = Logger('TestAssetServer');
-
-  // Fallback to "application/octet-stream" on null which
-  // makes no claims as to the structure of the data.
-  static const String _defaultMimeType = 'application/octet-stream';
-  final Uri _projectDirectory;
-  final FileSystem _fileSystem;
-  final HttpServer _httpServer;
-  final Map<String, Uint8List> _files = {};
-  final Map<String, Uint8List> _sourceMaps = {};
-  final Map<String, Uint8List> _metadata = {};
-  late String _mergedMetadata;
-  final PackageUriMapper _packageUriMapper;
-  final InternetAddress internetAddress;
-  final TestSdkLayout _sdkLayout;
-
-  TestAssetServer(
-    this.index,
-    this._httpServer,
-    this._packageUriMapper,
-    this.internetAddress,
-    this._projectDirectory,
-    this._fileSystem,
-    this._sdkLayout,
-  ) {
-    _basePath = _parseBasePathFromIndexHtml(index);
-  }
-
-  @override
-  String get basePath => _basePath;
-
-  bool hasFile(String path) => _files.containsKey(path);
-  Uint8List getFile(String path) => _files[path]!;
-
-  bool hasSourceMap(String path) => _sourceMaps.containsKey(path);
-  Uint8List getSourceMap(String path) => _sourceMaps[path]!;
-
-  bool hasMetadata(String path) => _metadata.containsKey(path);
-  Uint8List getMetadata(String path) => _metadata[path]!;
-
-  /// Start the web asset server on a [hostname] and [port].
-  ///
-  /// Unhandled exceptions will throw a exception with the error and stack
-  /// trace.
-  static Future<TestAssetServer> start(
-    String sdkDirectory,
-    Uri projectDirectory,
-    FileSystem fileSystem,
-    String index,
-    String hostname,
-    int port,
-    UrlEncoder? urlTunneler,
-    PackageUriMapper packageUriMapper,
-  ) async {
-    final address = (await InternetAddress.lookup(hostname)).first;
-    final httpServer = await HttpServer.bind(address, port);
-    final sdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-    final server = TestAssetServer(
-      index,
-      httpServer,
-      packageUriMapper,
-      address,
-      projectDirectory,
-      fileSystem,
-      sdkLayout,
-    );
-    return server;
-  }
-
-  // handle requests for JavaScript source, dart sources maps, or asset files.
-  Future<shelf.Response> handleRequest(shelf.Request request) async {
-    if (request.method != 'GET') {
-      // Assets are served via GET only.
-      return shelf.Response.notFound('');
-    }
-    final requestPath = _stripBasePath(request.url.path, basePath);
-    if (requestPath == null) {
-      return shelf.Response.notFound('');
-    }
-
-    final headers = <String, String>{};
-
-    if (request.url.path.endsWith('.html')) {
-      final indexFile = _fileSystem.file(_projectDirectory.resolve(index));
-      if (indexFile.existsSync()) {
-        headers[HttpHeaders.contentTypeHeader] = 'text/html';
-        headers[HttpHeaders.contentLengthHeader] = indexFile
-            .lengthSync()
-            .toString();
-        return shelf.Response.ok(indexFile.openRead(), headers: headers);
-      }
-      return shelf.Response.notFound('');
-    }
-
-    // If this is a JavaScript file, it must be in the in-memory cache.
-    // Attempt to look up the file by URI.
-    if (hasFile(requestPath)) {
-      final List<int> bytes = getFile(requestPath);
-      headers[HttpHeaders.contentLengthHeader] = bytes.length.toString();
-      headers[HttpHeaders.contentTypeHeader] = 'application/javascript';
-      return shelf.Response.ok(bytes, headers: headers);
-    }
-    // If this is a sourcemap file, then it might be in the in-memory cache.
-    // Attempt to lookup the file by URI.
-    if (hasSourceMap(requestPath)) {
-      final List<int> bytes = getSourceMap(requestPath);
-      headers[HttpHeaders.contentLengthHeader] = bytes.length.toString();
-      headers[HttpHeaders.contentTypeHeader] = 'application/json';
-      return shelf.Response.ok(bytes, headers: headers);
-    }
-    // If this is a metadata file, then it might be in the in-memory cache.
-    // Attempt to lookup the file by URI.
-    if (hasMetadata(requestPath)) {
-      final List<int> bytes = getMetadata(requestPath);
-      headers[HttpHeaders.contentLengthHeader] = bytes.length.toString();
-      headers[HttpHeaders.contentTypeHeader] = 'application/json';
-      return shelf.Response.ok(bytes, headers: headers);
-    }
-
-    final file = _resolveDartFile(requestPath);
-    if (!file.existsSync()) {
-      return shelf.Response.notFound('');
-    }
-
-    final length = file.lengthSync();
-    // Attempt to determine the file's mime type. if this is not provided some
-    // browsers will refuse to render images/show video et cetera. If the tool
-    // cannot determine a mime type, fall back to application/octet-stream.
-    String? mimeType;
-    if (length >= 12) {
-      mimeType = mime.lookupMimeType(
-        file.path,
-        headerBytes: await file.openRead(0, 12).first,
-      );
-    }
-    mimeType ??= _defaultMimeType;
-    headers[HttpHeaders.contentLengthHeader] = length.toString();
-    headers[HttpHeaders.contentTypeHeader] = mimeType;
-    return shelf.Response.ok(file.openRead(), headers: headers);
-  }
-
-  /// Tear down the http server running.
-  @override
-  Future<void> close() {
-    return _httpServer.close();
-  }
-
-  /// Write a single file into the in-memory cache.
-  void writeFile(String filePath, String contents) {
-    _files[filePath] = Uint8List.fromList(utf8.encode(contents));
-  }
-
-  /// Update the in-memory asset server with the provided source and manifest
-  /// files.
-  ///
-  /// Returns a list of updated modules.
-  List<String> write(
-    File codeFile,
-    File manifestFile,
-    File sourcemapFile,
-    File metadataFile,
-  ) {
-    final modules = <String>[];
-    final codeBytes = codeFile.readAsBytesSync();
-    final sourcemapBytes = sourcemapFile.readAsBytesSync();
-    final metadataBytes = metadataFile.readAsBytesSync();
-    final manifest = _castStringKeyedMap(
-      json.decode(manifestFile.readAsStringSync()),
-    );
-    for (final filePath in manifest.keys) {
-      final offsets = _castStringKeyedMap(manifest[filePath]);
-      final codeOffsets = (offsets['code'] as List<dynamic>).cast<int>();
-      final sourcemapOffsets = (offsets['sourcemap'] as List<dynamic>)
-          .cast<int>();
-      final metadataOffsets = (offsets['metadata'] as List<dynamic>)
-          .cast<int>();
-      if (codeOffsets.length != 2 ||
-          sourcemapOffsets.length != 2 ||
-          metadataOffsets.length != 2) {
-        _logger.severe('Invalid manifest byte offsets: $offsets');
-        continue;
-      }
-
-      final codeStart = codeOffsets[0];
-      final codeEnd = codeOffsets[1];
-      if (codeStart < 0 || codeEnd > codeBytes.lengthInBytes) {
-        _logger.severe('Invalid byte index: [$codeStart, $codeEnd]');
-        continue;
-      }
-      final byteView = Uint8List.view(
-        codeBytes.buffer,
-        codeStart,
-        codeEnd - codeStart,
-      );
-
-      final fileName = filePath.startsWith('/')
-          ? filePath.substring(1)
-          : filePath;
-      _files[fileName] = byteView;
-
-      final sourcemapStart = sourcemapOffsets[0];
-      final sourcemapEnd = sourcemapOffsets[1];
-      if (sourcemapStart < 0 || sourcemapEnd > sourcemapBytes.lengthInBytes) {
-        _logger.severe('Invalid byte index: [$sourcemapStart, $sourcemapEnd]');
-        continue;
-      }
-      final sourcemapView = Uint8List.view(
-        sourcemapBytes.buffer,
-        sourcemapStart,
-        sourcemapEnd - sourcemapStart,
-      );
-      _sourceMaps['$fileName.map'] = sourcemapView;
-
-      final metadataStart = metadataOffsets[0];
-      final metadataEnd = metadataOffsets[1];
-      if (metadataStart < 0 || metadataEnd > metadataBytes.lengthInBytes) {
-        _logger.severe('Invalid byte index: [$metadataStart, $metadataEnd]');
-        continue;
-      }
-      final metadataView = Uint8List.view(
-        metadataBytes.buffer,
-        metadataStart,
-        metadataEnd - metadataStart,
-      );
-      _metadata['$fileName.metadata'] = metadataView;
-
-      modules.add(fileName);
-    }
-
-    _mergedMetadata = _metadata.values
-        .map((Uint8List encoded) => utf8.decode(encoded))
-        .join('\n');
-
-    return modules;
-  }
-
-  // Attempt to resolve `path` to a dart file.
-  File _resolveDartFile(String path) {
-    // If this is a dart file, it must be on the local file system and is
-    // likely coming from a source map request. The tool doesn't currently
-    // consider the case of Dart files as assets.
-    final dartFile = _fileSystem.file(_projectDirectory.resolve(path));
-    if (dartFile.existsSync()) {
-      return dartFile;
-    }
-
-    final segments = path.split('/');
-
-    // The file might have been a package file which is signaled by a
-    // `/packages/<package>/<path>` request.
-    if (segments.first == 'packages') {
-      var resolved = _packageUriMapper.serverPathToResolvedUri(path);
-      if (resolved != null) {
-        resolved = _projectDirectory.resolveUri(resolved);
-      }
-      final packageFile = _fileSystem.file(resolved);
-      if (packageFile.existsSync()) {
-        return packageFile;
-      }
-      _logger.severe('Package file not found: $path ($packageFile)');
-    }
-
-    // Otherwise it must be a Dart SDK source.
-    final dartSdkParent = _fileSystem.directory(_sdkLayout.sdkDirectory).parent;
-    final dartSdkFile = _fileSystem.file(
-      _fileSystem.path.joinAll(<String>[dartSdkParent.path, ...segments]),
-    );
-    return dartSdkFile;
-  }
-
-  @override
-  Future<String?> dartSourceContents(String serverPath) async {
-    final stripped = _stripBasePath(serverPath, basePath);
-    if (stripped != null) {
-      final result = _resolveDartFile(stripped);
-      if (result.existsSync()) {
-        return result.readAsString();
-      }
-    }
-    _logger.severe('Source not found: $serverPath');
-    return null;
-  }
-
-  @override
-  Future<String?> sourceMapContents(String serverPath) async {
-    final stripped = _stripBasePath(serverPath, basePath);
-    if (stripped != null) {
-      if (hasSourceMap(stripped)) {
-        return utf8.decode(getSourceMap(stripped));
-      }
-    }
-    _logger.severe('Source map not found: $serverPath');
-    return null;
-  }
-
-  @override
-  Future<String?> metadataContents(String serverPath) async {
-    final stripped = _stripBasePath(serverPath, basePath);
-    if (stripped != null) {
-      if (stripped.endsWith('.ddc_merged_metadata')) {
-        return _mergedMetadata;
-      }
-      if (hasMetadata(stripped)) {
-        return utf8.decode(getMetadata(stripped));
-      }
-    }
-    _logger.severe('Metadata not found: $serverPath');
-    return null;
-  }
-
-  String _parseBasePathFromIndexHtml(String index) {
-    final file = _fileSystem.file(_projectDirectory.resolve(index));
-    if (!file.existsSync()) {
-      throw StateError('Index file $index is not found');
-    }
-    final contents = file.readAsStringSync();
-    final matches = RegExp(r'<base href="/([^>]*)/">').allMatches(contents);
-    if (matches.isEmpty) return '';
-    return matches.first.group(1) ?? '';
-  }
-
-  String? _stripBasePath(String path, String basePath) {
-    path = stripLeadingSlashes(path);
-    if (path.startsWith(basePath)) {
-      path = path.substring(basePath.length);
-    } else {
-      // The given path isn't under base path, return null to indicate that.
-      _logger.severe('Path is not under $basePath: $path');
-      return null;
-    }
-    return stripLeadingSlashes(path);
-  }
-}
-
-/// Given a data structure which is a Map of String to dynamic values, return
-/// the same structure (`Map<String, dynamic>`) with the correct runtime types.
-Map<String, dynamic> _castStringKeyedMap(dynamic untyped) {
-  final map = untyped as Map<dynamic, dynamic>;
-  return map.cast<String, dynamic>();
-}
diff --git a/dwds/test/frontend_server_common/bootstrap.dart b/dwds/test/frontend_server_common/bootstrap.dart
deleted file mode 100644
index 8efe76e..0000000
--- a/dwds/test/frontend_server_common/bootstrap.dart
+++ /dev/null
@@ -1,573 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:io' show Platform;
-
-// Note: this is a copy from flutter tools, updated to work with dwds tests
-
-/// JavaScript snippet to determine the base URL of the current path.
-const String _baseUrlScript = '''
-var baseUrl = (function () {
-  // Attempt to detect --precompiled mode for tests, and set the base url
-  // appropriately, otherwise set it to '/'.
-  var pathParts = location.pathname.split("/");
-  if (pathParts[0] == "") {
-    pathParts.shift();
-  }
-  if (pathParts.length > 1 && pathParts[1] == "test") {
-    return "/" + pathParts.slice(0, 2).join("/") + "/";
-  }
-  // Attempt to detect base url using <base href> html tag
-  // base href should start and end with "/"
-  if (typeof document !== 'undefined') {
-    var el = document.getElementsByTagName('base');
-    if (el && el[0] && el[0].getAttribute("href") && el[0].getAttribute
-    ("href").startsWith("/") && el[0].getAttribute("href").endsWith("/")){
-      return el[0].getAttribute("href");
-    }
-  }
-  // return default value
-  return "/";
-}());
-var _trimmedBaseUrl = baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl;
-var _currentDirectory = window.location.origin + _trimmedBaseUrl;
-''';
-
-/// Used to load prerequisite scripts such as ddc_module_loader.js
-const String _simpleLoaderScript = r'''
-window.$dartCreateScript = (function() {
-  // Find the nonce value. (Note, this is only computed once.)
-  var scripts = Array.from(document.getElementsByTagName("script"));
-  var nonce;
-  scripts.some(
-      script => (nonce = script.nonce || script.getAttribute("nonce")));
-  // If present, return a closure that automatically appends the nonce.
-  if (nonce) {
-    return function() {
-      var script = document.createElement("script");
-      script.nonce = nonce;
-      return script;
-    };
-  } else {
-    return function() {
-      return document.createElement("script");
-    };
-  }
-})();
-
-// Loads a module [relativeUrl] relative to [root].
-//
-// If not specified, [root] defaults to the directory serving the main app.
-var forceLoadModule = function (relativeUrl, root) {
-  var actualRoot = root ?? _currentDirectory;
-  var trimmedRoot = actualRoot.endsWith('/') ? actualRoot.substring(0, actualRoot.length - 1) : actualRoot;
-  return new Promise(function(resolve, reject) {
-    var script = self.$dartCreateScript();
-    let policy = {
-      createScriptURL: function(src) {return src;}
-    };
-    if (self.trustedTypes && self.trustedTypes.createPolicy) {
-      policy = self.trustedTypes.createPolicy('dartDdcModuleUrl', policy);
-    }
-    script.onload = resolve;
-    script.onerror = reject;
-    script.src = policy.createScriptURL(trimmedRoot + "/" + relativeUrl);
-    document.head.appendChild(script);
-  });
-};
-''';
-
-/// The JavaScript bootstrap script to support in-browser hot restart.
-///
-/// The [requireUrl] loads our cached RequireJS script file. The [mapperUrl]
-/// loads the special Dart stack trace mapper. The [entrypoint] is the
-/// actual main.dart file.
-///
-/// This file is served when the browser requests "main.dart.js" in debug mode,
-/// and is responsible for bootstrapping the RequireJS modules and attaching
-/// the hot reload hooks.
-String generateBootstrapScript({
-  required String requireUrl,
-  required String mapperUrl,
-  required String entrypoint,
-}) {
-  return '''
-"use strict";
-
-// Attach source mapping.
-var mapperEl = document.createElement("script");
-mapperEl.defer = true;
-mapperEl.async = false;
-mapperEl.src = "$mapperUrl";
-document.head.appendChild(mapperEl);
-
-// Attach require JS.
-var requireEl = document.createElement("script");
-requireEl.defer = true;
-requireEl.async = false;
-requireEl.src = "$requireUrl";
-// This attribute tells require JS what to load as main (defined below).
-requireEl.setAttribute("data-main", "main_module.bootstrap");
-document.head.appendChild(requireEl);
-''';
-}
-
-/// Generate a synthetic main module which captures the application's main
-/// method.
-///
-/// RE: Object.keys usage in app.main:
-/// This attaches the main entrypoint and hot reload functionality to the
-/// window. The app module will have a single property which contains the
-/// actual application code. The property name is based off of the entrypoint
-/// that is generated, for example the file `foo/bar/baz.dart` will generate a
-/// property named approximately `foo__bar__baz`. Rather than attempt to guess,
-/// we assume the first property of this object is the module.
-String generateMainModule({required String entrypoint}) {
-  return '''/* ENTRYPOINT_EXTENTION_MARKER */
-
-// Create the main module loaded below.
-define("main_module.bootstrap", ["$entrypoint", "dart_sdk"], function(app, dart_sdk) {
-  dart_sdk._isolate_helper.startRootIsolate(() => {}, []);
-  dart_sdk._debugger.registerDevtoolsFormatter();
-  let voidToNull = () => (voidToNull = dart_sdk.dart.constFn(dart_sdk.dart.fnType(dart_sdk.core.Null, [dart_sdk.dart.void])))();
-
-  // See the generateMainModule doc comment.
-  var child = {};
-  child.main = app[Object.keys(app)[0]].main;
-
-  /* MAIN_EXTENSION_MARKER */
-  child.main();
-});
-''';
-}
-
-String generateDDCBootstrapScript({
-  required String ddcModuleLoaderUrl,
-  required String mapperUrl,
-  required String entrypoint,
-  required String bootstrapUrl,
-}) {
-  return '''
-$_baseUrlScript
-$_simpleLoaderScript
-
-(function() {
-  let appName = "$entrypoint";
-
-  // A uuid that identifies a subapp.
-  let uuid = "00000000-0000-0000-0000-000000000000";
-
-  window.postMessage(
-      {type: "DDC_STATE_CHANGE", state: "initial_load", targetUuid: uuid}, "*");
-
-  // Load pre-requisite DDC scripts. We intentionally use invalid names to avoid namespace clashes.
-  let prerequisiteScripts = [
-    {
-      "src": "$ddcModuleLoaderUrl",
-      "id": "dart_library \x00"
-    },
-    {
-      "src": "$mapperUrl",
-      "id": "dart_stack_trace_mapper \x00"
-    }
-  ];
-
-  // Load ddc_module_loader.js to access DDC's module loader API.
-  let prerequisiteLoads = [];
-  for (let i = 0; i < prerequisiteScripts.length; i++) {
-    prerequisiteLoads.push(forceLoadModule(prerequisiteScripts[i].src));
-  }
-  Promise.all(prerequisiteLoads).then((_) => afterPrerequisiteLogic());
-
-  // Save the current script so we can access it in a closure.
-  var _currentScript = document.currentScript;
-
-  var afterPrerequisiteLogic = function() {
-    window.\$dartLoader.rootDirectories.push(_currentDirectory);
-    let scripts = [
-      {
-        "src": "dart_sdk.js",
-        "id": "dart_sdk"
-      },
-      {
-        "src": "$bootstrapUrl",
-        "id": "data-main"
-      }
-    ];
-    let loadConfig = new window.\$dartLoader.LoadConfiguration();
-    loadConfig.root = _currentDirectory;
-    loadConfig.bootstrapScript = scripts[scripts.length - 1];
-
-    if (window.\$dartJITModules) {
-      loadConfig.loadScriptFn = function(loader) {
-        // Loads just the entrypoint module and required SDK modules.
-        let moduleSet = new Set();
-        // This cache is populated by ddc_module_loader.js
-        let libraryCache = JSON.parse(window.localStorage.getItem(`dartLibraryCache:\${appName}`));
-        if (libraryCache) {
-          // TODO(b/165021238) - when should this be invalidated?
-          moduleSet = new Set(libraryCache["modules"])
-        }
-        loader.addScriptsToQueue(scripts, function(script) {
-            // Preemptively load the ddc module loader and previously executed modules.
-            return moduleSet.size == 0
-                  || script.id.includes("dart_library")
-                  // We preemptively load the stack_trace_mapper module so that we can
-                  // translate JS errors to Dart.
-                  || script.id.includes("stack_trace_mapper")
-                  || moduleSet.has(script.id);
-        });
-        loader.loadEnqueuedModules();
-      }
-      loadConfig.ddcEventForLoadStart = /* LOAD_ENTRYPOINT_MODULES_START */ 4;
-      loadConfig.ddcEventForLoadedOk = /* LOAD_ENTRYPOINT_MODULES_END_OK */ 5;
-      loadConfig.ddcEventForLoadedError = /* LOAD_ENTRYPOINT_MODULES_END_ERROR */ 6;
-    } else {
-      loadConfig.loadScriptFn = function(loader) {
-        loader.addScriptsToQueue(scripts, null);
-        loader.loadEnqueuedModules();
-      }
-      loadConfig.ddcEventForLoadStart = /* LOAD_ALL_MODULES_START */ 1;
-      loadConfig.ddcEventForLoadedOk = /* LOAD_ALL_MODULES_END_OK */ 2;
-      loadConfig.ddcEventForLoadedError = /* LOAD_ALL_MODULES_END_ERROR */ 3;
-    }
-
-    let loader = new window.\$dartLoader.DDCLoader(loadConfig);
-
-    // Record prerequisite scripts' fully resolved URLs.
-    prerequisiteScripts.forEach(script => loader.registerScript(script));
-
-    // Note: these variables should only be used in non-multi-app scenarios since
-    // they can be arbitrarily overridden based on multi-app load order.
-    window.\$dartLoader.loadConfig = loadConfig;
-    window.\$dartLoader.loader = loader;
-    loader.nextAttempt();
-
-    let currentUri = _currentScript.src;
-    let fetchEtagsUri;
-    if (currentUri.indexOf("?") == -1) {
-      fetchEtagsUri = currentUri + "?fetch-etags=true";
-    } else {
-      fetchEtagsUri = currentUri + "&fetch-etags=true";
-    }
-
-    if (!window.\$dartAppNameToMetadata) {
-      window.\$dartAppNameToMetadata = new Map();
-    }
-    window.\$dartAppNameToMetadata.set(appName, {
-        currentDirectory: _currentDirectory,
-        currentUri: currentUri,
-        fetchEtagsUri: fetchEtagsUri,
-    });
-
-    if (!window.\$dartReloadModifiedModules) {
-      window.\$dartReloadModifiedModules = (function(appName, callback) {
-        function cb() {
-          window.postMessage(
-              {
-                type: "DDC_STATE_CHANGE",
-                state: "restart_end",
-                targetUuid: uuid,
-              },
-              "*");
-          callback();
-        }
-        window.postMessage(
-            {
-              type: "DDC_STATE_CHANGE",
-              state: "restart_begin",
-              targetUuid: uuid,
-            },
-            "*");
-        var xhttp = new XMLHttpRequest();
-        xhttp.withCredentials = true;
-        xhttp.onreadystatechange = function() {
-          // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
-          if (this.readyState == 4 && this.status == 200 || this.status == 304) {
-            var scripts = JSON.parse(this.responseText);
-            var numToLoad = 0;
-            var numLoaded = 0;
-            for (var i = 0; i < scripts.length; i++) {
-              var script = scripts[i];
-              if (script.id == null) continue;
-              var src =
-                  window.\$dartAppNameToMetadata.get(appName).currentDirectory +
-                  script.src.toString();
-              var oldSrc = window.\$dartLoader.moduleIdToUrl.get(script.id);
-              // Only compare the search parameters which contain the cache
-              // busting portion of the uri. The path might be different if the
-              // script is loaded from a different application on the page.
-              if (new URL(oldSrc).search == new URL(src).search) continue;
-
-              // We might actually load from a different uri, delete the old one
-              // just to be sure.
-              window.\$dartLoader.urlToModuleId.delete(oldSrc);
-
-              window.\$dartLoader.moduleIdToUrl.set(script.id, src);
-              window.\$dartLoader.urlToModuleId.set(src, script.id);
-
-              if (window.\$dartJITModules) {
-              // Simply invalidate the import and the corresponding module will
-              // be lazily loaded.
-              dart_library.invalidateImport(script.id);
-              continue;
-              } else {
-                numToLoad++;
-              }
-
-              var el = document.getElementById(script.id);
-              if (el) el.remove();
-              el = window.\$dartCreateScript();
-              el.src = policy.createScriptURL(src);
-              el.async = false;
-              el.defer = true;
-              el.id = script.id;
-              el.onload = function() {
-                numLoaded++;
-                if (numToLoad == numLoaded) cb();
-              };
-              document.head.appendChild(el);
-            }
-            // Call `cb` right away if we found no updated scripts.
-            if (numToLoad == 0) cb();
-          }
-        };
-        xhttp.open("GET",
-          window.\$dartAppNameToMetadata.get(appName).fetchEtagsUri, true);
-        let sdk = dart_library.import("dart_sdk", appName);
-        let developer = sdk.developer;
-        if (developer._extensions.containsKey("ext.flutter.disassemble")) {
-          developer.invokeExtension("ext.flutter.disassemble", "{}").then(() => {
-            // TODO(b/204210914): we should really be clearing all statics for all
-            // apps, but for now we just do it for flutter apps which we recognize
-            // based on this extension.
-            sdk.dart.hotRestart();
-            xhttp.send();
-          });
-        } else {
-          xhttp.send();
-        }
-      });
-    }
-  }
-})();
-''';
-}
-
-String generateDDCMainModule({
-  required String entrypoint,
-  String? exportedMain,
-}) {
-  final exportedMainName = exportedMain ?? entrypoint.split('.')[0];
-  return '''/* ENTRYPOINT_EXTENTION_MARKER */
-
-(function() {
-  let appName = "$entrypoint";
-
-  // A uuid that identifies a subapp.
-  let uuid = "00000000-0000-0000-0000-000000000000";
-
-  let dart_sdk = dart_library.import('dart_sdk', appName);
-
-  dart_sdk._debugger.registerDevtoolsFormatter();
-  dart_sdk._isolate_helper.startRootIsolate(() => {}, []);
-
-  let child = {};
-  child.main = function() {
-    dart_library.start(appName, uuid, "$entrypoint", "$exportedMainName");
-  }
-
-  /* MAIN_EXTENSION_MARKER */
-  child.main();
-})();
-''';
-}
-
-String generateDDCLibraryBundleBootstrapScript({
-  required String ddcModuleLoaderUrl,
-  required String mapperUrl,
-  required String entrypoint,
-  required String bootstrapUrl,
-}) {
-  return '''
-$_baseUrlScript
-$_simpleLoaderScript
-
-(function() {
-  let appName = "org-dartlang-app:/$entrypoint";
-
-  // Load pre-requisite DDC scripts. We intentionally use invalid names to avoid
-  // namespace clashes.
-  let prerequisiteScripts = [
-    {
-      "src": "$ddcModuleLoaderUrl",
-      "id": "ddc_module_loader \x00"
-    },
-    {
-      "src": "$mapperUrl",
-      "id": "dart_stack_trace_mapper \x00"
-    }
-  ];
-
-  // Load ddc_module_loader.js to access DDC's module loader API.
-  let prerequisiteLoads = [];
-  for (let i = 0; i < prerequisiteScripts.length; i++) {
-    prerequisiteLoads.push(forceLoadModule(prerequisiteScripts[i].src));
-  }
-  Promise.all(prerequisiteLoads).then((_) => afterPrerequisiteLogic());
-
-  // Save the current script so we can access it in a closure.
-  var _currentScript = document.currentScript;
-
-  // Create a policy if needed to load the files during a hot restart.
-  let policy = {
-    createScriptURL: function(src) {return src;}
-  };
-  if (self.trustedTypes && self.trustedTypes.createPolicy) {
-    policy = self.trustedTypes.createPolicy('dartDdcModuleUrl', policy);
-  }
-
-  var afterPrerequisiteLogic = function() {
-    window.\$dartLoader.rootDirectories.push(_currentDirectory);
-    let scripts = [
-      {
-        "src": "dart_sdk.js",
-        "id": "dart_sdk"
-      },
-      {
-        "src": "$bootstrapUrl",
-        "id": "data-main"
-      }
-    ];
-
-    let loadConfig = new window.\$dartLoader.LoadConfiguration();
-    loadConfig.root = _currentDirectory;
-
-    // TODO(srujzs): Verify this is sufficient for Windows.
-    loadConfig.isWindows = ${Platform.isWindows};
-    loadConfig.bootstrapScript = scripts[scripts.length - 1];
-
-    loadConfig.loadScriptFn = function(loader) {
-      loader.addScriptsToQueue(scripts, null);
-      loader.loadEnqueuedModules();
-    }
-    loadConfig.ddcEventForLoadStart = /* LOAD_ALL_MODULES_START */ 1;
-    loadConfig.ddcEventForLoadedOk = /* LOAD_ALL_MODULES_END_OK */ 2;
-    loadConfig.ddcEventForLoadedError = /* LOAD_ALL_MODULES_END_ERROR */ 3;
-
-    let loader = new window.\$dartLoader.DDCLoader(loadConfig);
-
-    // Record prerequisite scripts' fully resolved URLs.
-    prerequisiteScripts.forEach(script => loader.registerScript(script));
-
-    // Note: these variables should only be used in non-multi-app scenarios
-    // since they can be arbitrarily overridden based on multi-app load order.
-    window.\$dartLoader.loadConfig = loadConfig;
-    window.\$dartLoader.loader = loader;
-
-    // Begin loading libraries
-    loader.nextAttempt();
-
-    // Set up stack trace mapper.
-    if (window.\$dartStackTraceUtility &&
-        !window.\$dartStackTraceUtility.ready) {
-      window.\$dartStackTraceUtility.ready = true;
-      window.\$dartStackTraceUtility.setSourceMapProvider(function(url) {
-        var baseUrl = window.location.protocol + '//' + window.location.host;
-        url = url.replace(baseUrl + '/', '');
-        if (url == 'dart_sdk.js') {
-          return dartDevEmbedder.debugger.getSourceMap('dart_sdk');
-        }
-        url = url.replace(".lib.js", "").replace(".ddc.js", "");
-        return dartDevEmbedder.debugger.getSourceMap(url);
-      });
-    }
-
-    if (!window.\$dartReloadModifiedModules) {
-      window.\$dartReloadModifiedModules = (function(filesToReload, appName) {
-        return new Promise(function(resolve) {
-          function callback() {
-            resolve(filesToReload);
-          }
-          let numToLoad = 0;
-          let numLoaded = 0;
-          for (let i = 0; i < filesToReload.length; i++) {
-            const file = filesToReload[i];
-            const module = file.module;
-            if (module == null) continue;
-            const src = file.src;
-            const oldSrc = window.\$dartLoader.moduleIdToUrl.get(module);
-
-            // We might actually load from a different uri, delete the old one
-            // just to be sure.
-            window.\$dartLoader.urlToModuleId.delete(oldSrc);
-
-            window.\$dartLoader.moduleIdToUrl.set(module, src);
-            window.\$dartLoader.urlToModuleId.set(src, module);
-
-            numToLoad++;
-
-            let el = document.getElementById(module);
-            if (el) el.remove();
-            el = window.\$dartCreateScript();
-            el.src = policy.createScriptURL(src);
-            el.async = false;
-            el.defer = true;
-            el.id = module;
-            el.onload = function() {
-              numLoaded++;
-              if (numToLoad == numLoaded) callback();
-            };
-            document.head.appendChild(el);
-          }
-          // Call `callback` right away if we found no updated scripts.
-          if (numToLoad == 0) callback();
-        });
-      });
-    }
-  };
-})();
-''';
-}
-
-const String _onLoadEndCallback = r'$onLoadEndCallback';
-
-String generateDDCLibraryBundleMainModule({
-  required String entrypoint,
-  required String onLoadEndBootstrap,
-}) {
-  // The typo below in "EXTENTION" is load-bearing, package:build depends on it.
-  return '''
-/* ENTRYPOINT_EXTENTION_MARKER */
-
-(function() {
-  let appName = "org-dartlang-app:///$entrypoint";
-
-  dartDevEmbedder.debugger.registerDevtoolsFormatter();
-
-  // Set up a final script that lets us know when all scripts have been loaded.
-  // Only then can we call the main method.
-  let onLoadEndSrc = '$onLoadEndBootstrap';
-  window.\$dartLoader.loadConfig.bootstrapScript = {
-    src: onLoadEndSrc,
-    id: onLoadEndSrc,
-  };
-  window.\$dartLoader.loadConfig.tryLoadBootstrapScript = true;
-  // Should be called by $onLoadEndBootstrap once all the scripts have been
-  // loaded.
-  window.$_onLoadEndCallback = function() {
-    let child = {};
-    child.main = function() {
-      dartDevEmbedder.runMain(appName, {});
-    }
-    /* MAIN_EXTENSION_MARKER */
-    child.main();
-  }
-})();
-''';
-}
-
-String generateDDCLibraryBundleOnLoadEndBootstrap() {
-  return '''window.$_onLoadEndCallback();''';
-}
diff --git a/dwds/test/frontend_server_common/devfs.dart b/dwds/test/frontend_server_common/devfs.dart
deleted file mode 100644
index 1f7c018..0000000
--- a/dwds/test/frontend_server_common/devfs.dart
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Note: this is a copy from flutter tools, updated to work with dwds tests
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/config.dart';
-import 'package:dwds/expression_compiler.dart';
-// ignore: implementation_imports
-import 'package:dwds/src/debugging/metadata/module_metadata.dart';
-import 'package:dwds/utilities.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:file/file.dart';
-import 'package:path/path.dart' as p;
-
-import 'asset_server.dart';
-import 'bootstrap.dart';
-import 'frontend_server_client.dart';
-
-class WebDevFS {
-  WebDevFS({
-    required this.fileSystem,
-    required this.hostname,
-    required this.port,
-    required this.projectDirectory,
-    required this.packageUriMapper,
-    required this.index,
-    this.urlTunneler,
-    required this.sdkLayout,
-    required this.compilerOptions,
-  });
-
-  final FileSystem fileSystem;
-  late final TestAssetServer assetServer;
-  final String hostname;
-  final int port;
-  final Uri projectDirectory;
-  final PackageUriMapper packageUriMapper;
-  final String index;
-  final UrlEncoder? urlTunneler;
-  List<Uri> sources = <Uri>[];
-  DateTime? lastCompiled;
-
-  final TestSdkLayout sdkLayout;
-  final CompilerOptions compilerOptions;
-
-  Future<Uri> create() async {
-    assetServer = await TestAssetServer.start(
-      sdkLayout.sdkDirectory,
-      projectDirectory,
-      fileSystem,
-      index,
-      hostname,
-      port,
-      urlTunneler,
-      packageUriMapper,
-    );
-    return Uri.parse('http://$hostname:$port');
-  }
-
-  Future<void> dispose() {
-    return assetServer.close();
-  }
-
-  Future<UpdateFSReport> update({
-    required Uri mainUri,
-    required String dillOutputPath,
-    required ResidentCompiler generator,
-    required List<Uri> invalidatedFiles,
-    required bool initialCompile,
-    required bool fullRestart,
-    // The uri of the `HttpServer` that handles file requests.
-    // TODO(srujzs): This should be the same as the uri of the AssetServer to
-    // align with Flutter tools, but currently is not. Delete when that's fixed.
-    required Uri? fileServerUri,
-  }) async {
-    final mainPath = mainUri.toFilePath();
-    final outputDirectory = fileSystem.directory(
-      fileSystem.file(projectDirectory.resolve(mainPath)).parent.path,
-    );
-    final entryPoint = mainUri.toString();
-
-    var prefix = '';
-    // If base path is not overwritten, use main's subdirectory
-    // to store all files, so the paths match the requests.
-    if (assetServer.basePath.isEmpty) {
-      final directory = p.dirname(entryPoint);
-      prefix = '$directory/';
-    }
-
-    if (initialCompile) {
-      final ddcModuleLoader = '${prefix}ddc_module_loader.js';
-      final require = '${prefix}require.js';
-      final stackMapper = '${prefix}stack_trace_mapper.js';
-      final main = '${prefix}main.dart.js';
-      final bootstrap = '${prefix}main_module.bootstrap.js';
-
-      assetServer.writeFile(
-        entryPoint,
-        fileSystem.file(projectDirectory.resolve(mainPath)).readAsStringSync(),
-      );
-      assetServer.writeFile(stackMapper, stackTraceMapper.readAsStringSync());
-
-      switch (ddcModuleFormat) {
-        case ModuleFormat.amd:
-          assetServer.writeFile(require, requireJS.readAsStringSync());
-          assetServer.writeFile(
-            main,
-            generateBootstrapScript(
-              requireUrl: 'require.js',
-              mapperUrl: 'stack_trace_mapper.js',
-              entrypoint: entryPoint,
-            ),
-          );
-          assetServer.writeFile(
-            bootstrap,
-            generateMainModule(entrypoint: entryPoint),
-          );
-          break;
-        case ModuleFormat.ddc:
-          assetServer.writeFile(
-            ddcModuleLoader,
-            ddcModuleLoaderJS.readAsStringSync(),
-          );
-          String bootstrapper;
-          String mainModule;
-          if (compilerOptions.canaryFeatures) {
-            bootstrapper = generateDDCLibraryBundleBootstrapScript(
-              ddcModuleLoaderUrl: ddcModuleLoader,
-              mapperUrl: stackMapper,
-              entrypoint: entryPoint,
-              bootstrapUrl: bootstrap,
-            );
-            const onLoadEndBootstrap = 'on_load_end_bootstrap.js';
-            assetServer.writeFile(
-              onLoadEndBootstrap,
-              generateDDCLibraryBundleOnLoadEndBootstrap(),
-            );
-            mainModule = generateDDCLibraryBundleMainModule(
-              entrypoint: entryPoint,
-              onLoadEndBootstrap: onLoadEndBootstrap,
-            );
-          } else {
-            bootstrapper = generateDDCBootstrapScript(
-              ddcModuleLoaderUrl: ddcModuleLoader,
-              mapperUrl: stackMapper,
-              entrypoint: entryPoint,
-              bootstrapUrl: bootstrap,
-            );
-
-            // DDC uses a simple heuristic to determine exported identifier
-            // names. The module name (entrypoint name here) has its extension
-            // removed, and special path elements like '/', '\', and '..' are
-            // replaced with
-            // '__'.
-            final exportedMainName = pathToJSIdentifier(
-              entryPoint.split('.')[0],
-            );
-            mainModule = generateDDCMainModule(
-              entrypoint: entryPoint,
-              exportedMain: exportedMainName,
-            );
-          }
-          assetServer.writeFile(main, bootstrapper);
-          assetServer.writeFile(bootstrap, mainModule);
-          break;
-        default:
-          throw Exception('Unsupported DDC module format $ddcModuleFormat.');
-      }
-
-      assetServer.writeFile('main_module.digests', '{}');
-      // Write an empty array of scripts to reload to handle the case where
-      // a test triggers a hot restart before any other action.
-      assetServer.writeFile('reloaded_sources.json', '[]');
-
-      final sdk = dartSdk;
-      final sdkSourceMap = dartSdkSourcemap;
-      assetServer.writeFile('dart_sdk.js', sdk.readAsStringSync());
-      assetServer.writeFile('dart_sdk.js.map', sdkSourceMap.readAsStringSync());
-      generator.reset();
-    }
-
-    final compilerOutput = await generator.recompile(
-      Uri.parse('org-dartlang-app:///$mainUri'),
-      invalidatedFiles,
-      outputPath: p.join(dillOutputPath, 'app.dill'),
-      packageConfig: packageUriMapper.packageConfig,
-      recompileRestart: fullRestart,
-    );
-    if (compilerOutput == null || compilerOutput.errorCount > 0) {
-      return UpdateFSReport(success: false);
-    }
-    sources = compilerOutput.sources;
-    lastCompiled = DateTime.now();
-
-    File codeFile;
-    File manifestFile;
-    File sourcemapFile;
-    File metadataFile;
-    List<String> modules;
-    try {
-      codeFile = outputDirectory.childFile(
-        '${compilerOutput.outputFilename}.sources',
-      );
-      manifestFile = outputDirectory.childFile(
-        '${compilerOutput.outputFilename}.json',
-      );
-      sourcemapFile = outputDirectory.childFile(
-        '${compilerOutput.outputFilename}.map',
-      );
-      metadataFile = outputDirectory.childFile(
-        '${compilerOutput.outputFilename}.metadata',
-      );
-      modules = assetServer.write(
-        codeFile,
-        manifestFile,
-        sourcemapFile,
-        metadataFile,
-      );
-    } on FileSystemException catch (err) {
-      throw Exception('Failed to load recompiled sources:\n$err');
-    }
-    if (ddcModuleFormat == ModuleFormat.ddc &&
-        compilerOptions.canaryFeatures &&
-        !initialCompile) {
-      writeReloadedSources(modules, fileServerUri!);
-    }
-    return UpdateFSReport(
-      success: true,
-      syncedBytes: codeFile.lengthSync(),
-      invalidatedSourcesCount: invalidatedFiles.length,
-    )..invalidatedModules = modules;
-  }
-
-  static const String reloadedSourcesFileName = 'reloaded_sources.json';
-
-  /// Given a list of [modules] that need to be reloaded during a hot restart or
-  /// hot reload, writes a file that contains a list of objects each with three
-  /// fields:
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  ///
-  /// For example:
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// The path of the output file should stay consistent across the lifetime of
-  /// the app.
-  void writeReloadedSources(List<String> modules, Uri fileServerUri) {
-    final moduleToLibrary = <Map<String, Object>>[];
-    for (final module in modules) {
-      final metadata = ModuleMetadata.fromJson(
-        json.decode(
-          utf8.decode(assetServer.getMetadata('$module.metadata').toList()),
-        ) as Map<String, dynamic>,
-      );
-      final libraries = metadata.libraries.keys.toList();
-      moduleToLibrary.add(
-        createReloadedSourceEntry(
-          src: '$fileServerUri/$module',
-          module: metadata.name,
-          libraries: libraries,
-        ),
-      );
-    }
-    assetServer.writeFile(
-      reloadedSourcesFileName,
-      json.encode(moduleToLibrary),
-    );
-  }
-
-  static Map<String, Object> createReloadedSourceEntry({
-    required String src,
-    required String module,
-    required List<String> libraries,
-  }) => {'src': src, 'module': module, 'libraries': libraries};
-
-  File get ddcModuleLoaderJS =>
-      fileSystem.file(sdkLayout.ddcModuleLoaderJsPath);
-  File get requireJS => fileSystem.file(sdkLayout.requireJsPath);
-  File get dartSdk => fileSystem.file(switch (ddcModuleFormat) {
-    ModuleFormat.amd => sdkLayout.amdJsPath,
-    ModuleFormat.ddc => sdkLayout.ddcJsPath,
-    _ => throw Exception('Unsupported DDC module format $ddcModuleFormat.'),
-  });
-  File get dartSdkSourcemap => fileSystem.file(switch (ddcModuleFormat) {
-    ModuleFormat.amd => sdkLayout.amdJsMapPath,
-    ModuleFormat.ddc => sdkLayout.ddcJsMapPath,
-    _ => throw Exception('Unsupported DDC module format $ddcModuleFormat.'),
-  });
-  File get stackTraceMapper => fileSystem.file(sdkLayout.stackTraceMapperPath);
-  ModuleFormat get ddcModuleFormat => compilerOptions.moduleFormat;
-}
-
-class UpdateFSReport {
-  final bool _success;
-  final int _invalidatedSourcesCount;
-  final int _syncedBytes;
-
-  UpdateFSReport({
-    this._success = false,
-    this._invalidatedSourcesCount = 0,
-    this._syncedBytes = 0,
-  });
-
-  bool get success => _success;
-  int get invalidatedSourcesCount => _invalidatedSourcesCount;
-  int get syncedBytes => _syncedBytes;
-
-  /// JavaScript modules produced by the incremental compiler in `dartdevc`
-  /// mode.
-  ///
-  /// Only used for JavaScript compilation.
-  List<String>? invalidatedModules;
-}
-
-/// The result of an invalidation check from [ProjectFileInvalidator].
-class InvalidationResult {
-  const InvalidationResult({this.uris});
-
-  final List<Uri>? uris;
-}
-
-/// The [ProjectFileInvalidator] track the dependencies for a running
-/// application to determine when they are dirty.
-class ProjectFileInvalidator {
-  ProjectFileInvalidator({required this._fileSystem});
-
-  final FileSystem _fileSystem;
-
-  static const String _pubCachePathLinuxAndMac = '.pub-cache';
-  static const String _pubCachePathWindows = 'Pub/Cache';
-
-  Future<InvalidationResult> findInvalidated({
-    required DateTime? lastCompiled,
-    required List<Uri> urisToMonitor,
-    required String packagesPath,
-  }) async {
-    if (lastCompiled == null) {
-      // Initial load.
-      assert(urisToMonitor.isEmpty);
-      return const InvalidationResult(uris: <Uri>[]);
-    }
-
-    final urisToScan = <Uri>[
-      // Don't watch pub cache directories to speed things up a little.
-      for (final Uri uri in urisToMonitor)
-        if (_isNotInPubCache(uri)) uri,
-    ];
-    final invalidatedFiles = <Uri>[];
-    for (final uri in urisToScan) {
-      // Calling fs.statSync() is more performant than fs.file().statSync(),
-      // but uri.toFilePath() does not work with MultiRootFileSystem.
-      final updatedAt = uri.hasScheme && uri.scheme != 'file'
-          ? _fileSystem.file(uri).statSync().modified
-          : _fileSystem
-                .statSync(uri.toFilePath(windows: Platform.isWindows))
-                .modified;
-      if (updatedAt.isAfter(lastCompiled)) {
-        invalidatedFiles.add(uri);
-      }
-    }
-    // We need to check the .dart_tool/package_config.json file too since it is
-    // not used in compilation.
-    final packageFile = _fileSystem.file(packagesPath);
-    final packageUri = packageFile.uri;
-    final updatedAt = packageFile.statSync().modified;
-    if (updatedAt.isAfter(lastCompiled)) {
-      invalidatedFiles.add(packageUri);
-    }
-
-    return InvalidationResult(uris: invalidatedFiles);
-  }
-
-  bool _isNotInPubCache(Uri uri) {
-    return !(Platform.isWindows && uri.path.contains(_pubCachePathWindows)) &&
-        !uri.path.contains(_pubCachePathLinuxAndMac);
-  }
-}
diff --git a/dwds/test/frontend_server_common/frontend_server_client.dart b/dwds/test/frontend_server_common/frontend_server_client.dart
deleted file mode 100644
index b2b13c6..0000000
--- a/dwds/test/frontend_server_common/frontend_server_client.dart
+++ /dev/null
@@ -1,728 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Note: this is a copy from flutter tools, updated to work with dwds tests
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:logging/logging.dart';
-import 'package:package_config/package_config.dart';
-
-import 'utilities.dart';
-import 'uuid.dart';
-
-Logger _logger = Logger('FrontendServerClient');
-Logger _serverLogger = Logger('FrontendServer');
-
-void defaultConsumer(String message, {StackTrace? stackTrace}) =>
-    stackTrace == null
-    ? _serverLogger.info(message)
-    : _serverLogger.severe(message, null, stackTrace);
-
-typedef CompilerMessageConsumer = void Function(
-  String message, {
-  StackTrace stackTrace,
-});
-
-class CompilerOutput {
-  const CompilerOutput(this.outputFilename, this.errorCount, this.sources);
-
-  final String outputFilename;
-  final int errorCount;
-  final List<Uri> sources;
-}
-
-enum StdoutState { collectDiagnostic, collectDependencies }
-
-/// Handles stdin/stdout communication with the frontend server.
-class StdoutHandler {
-  StdoutHandler({required this.consumer}) {
-    reset();
-  }
-
-  final CompilerMessageConsumer consumer;
-  late Completer<CompilerOutput?> compilerOutput;
-
-  final List<Uri> _sources = <Uri>[];
-
-  bool _compilerMessageReceived = false;
-  String? _boundaryKey;
-  StdoutState _state = StdoutState.collectDiagnostic;
-  late bool _suppressCompilerMessages;
-  late bool _expectSources;
-  bool _badState = false;
-
-  void handler(String message) {
-    if (message.startsWith('Observatory listening')) {
-      stderr.writeln(message);
-      return;
-    }
-    if (message.startsWith('Observatory server failed')) {
-      throw Exception(message);
-    }
-    if (_badState) {
-      return;
-    }
-    final kResultPrefix = 'result ';
-    if (_boundaryKey == null && message.startsWith(kResultPrefix)) {
-      _boundaryKey = message.substring(kResultPrefix.length);
-      return;
-    }
-    // Invalid state, see commented issue below for more information.
-    // NB: both the completeError and _badState flags are required to avoid
-    // filling the console with exceptions.
-    if (_boundaryKey == null) {
-      // Throwing a synchronous exception via throwToolExit will fail to cancel
-      // the stream. Instead use completeError so that the error is returned
-      // from the awaited future that the compiler consumers are expecting.
-      compilerOutput.completeError(
-        'Frontend server tests encountered an internal problem. '
-        'This can be caused by printing to stdout into the stream that is '
-        'used for communication between frontend server (in sdk) or '
-        'frontend server client (in dwds tests).'
-        '\n\n'
-        'Additional debugging information:\n'
-        '  StdoutState: $_state\n'
-        '  compilerMessageReceived: $_compilerMessageReceived\n'
-        '  message: $message\n'
-        '  _expectSources: $_expectSources\n'
-        '  sources: $_sources\n',
-      );
-      // There are several event turns before the tool actually exits from a
-      // tool exception. Normally, the stream should be cancelled to prevent
-      // more events from entering the bad state, but because the error
-      // is coming from handler itself, there is no clean way to pipe this
-      // through. Instead, we set a flag to prevent more messages from
-      // registering.
-      _badState = true;
-      return;
-    }
-    final boundaryKey = _boundaryKey!;
-    if (message.startsWith(boundaryKey)) {
-      if (_expectSources) {
-        if (_state == StdoutState.collectDiagnostic) {
-          _state = StdoutState.collectDependencies;
-          return;
-        }
-      }
-      if (message.length <= boundaryKey.length) {
-        compilerOutput.complete(null);
-        return;
-      }
-      final spaceDelimiter = message.lastIndexOf(' ');
-      compilerOutput.complete(
-        CompilerOutput(
-          message.substring(boundaryKey.length + 1, spaceDelimiter),
-          int.parse(message.substring(spaceDelimiter + 1).trim()),
-          _sources,
-        ),
-      );
-      return;
-    }
-    if (_state == StdoutState.collectDiagnostic) {
-      if (!_suppressCompilerMessages) {
-        if (_compilerMessageReceived == false) {
-          consumer('\nCompiler message:');
-          _compilerMessageReceived = true;
-        }
-        consumer(message);
-      }
-    } else {
-      assert(_state == StdoutState.collectDependencies);
-      switch (message[0]) {
-        case '+':
-          _sources.add(Uri.parse(message.substring(1)));
-          break;
-        case '-':
-          _sources.remove(Uri.parse(message.substring(1)));
-          break;
-        default:
-          _logger.warning('Unexpected prefix for $message uri - ignoring');
-      }
-    }
-  }
-
-  // This is needed to get ready to process next compilation result output,
-  // with its own boundary key and new completer.
-  void reset({
-    bool suppressCompilerMessages = false,
-    bool expectSources = true,
-  }) {
-    _boundaryKey = null;
-    _compilerMessageReceived = false;
-    compilerOutput = Completer<CompilerOutput?>();
-    _suppressCompilerMessages = suppressCompilerMessages;
-    _expectSources = expectSources;
-    _state = StdoutState.collectDiagnostic;
-  }
-}
-
-/// Class that allows to serialize compilation requests to the compiler.
-abstract class _CompilationRequest {
-  _CompilationRequest(this.completer);
-
-  Completer<CompilerOutput?> completer;
-
-  Future<CompilerOutput?> _run(ResidentCompiler compiler);
-
-  Future<void> run(ResidentCompiler compiler) async {
-    completer.complete(await _run(compiler));
-  }
-}
-
-class _RecompileRequest extends _CompilationRequest {
-  _RecompileRequest(
-    super.completer,
-    this.mainUri,
-    this.invalidatedFiles,
-    this.outputPath,
-    this.packageConfig, {
-    required this.recompileRestart,
-  });
-
-  Uri mainUri;
-  List<Uri> invalidatedFiles;
-  String outputPath;
-  PackageConfig packageConfig;
-  bool recompileRestart;
-
-  @override
-  Future<CompilerOutput?> _run(ResidentCompiler compiler) async =>
-      compiler._recompile(this);
-}
-
-class _CompileExpressionRequest extends _CompilationRequest {
-  _CompileExpressionRequest(
-    super.completer,
-    this.expression,
-    this.definitions,
-    this.typeDefinitions,
-    this.libraryUri,
-    this.scriptUri,
-    this.klass,
-    this.isStatic,
-  );
-
-  String expression;
-  List<String> definitions;
-  List<String> typeDefinitions;
-  String? libraryUri;
-  String? scriptUri;
-  String? klass;
-  bool? isStatic;
-
-  @override
-  Future<CompilerOutput?> _run(ResidentCompiler compiler) async =>
-      compiler._compileExpression(this);
-}
-
-class _CompileExpressionToJsRequest extends _CompilationRequest {
-  _CompileExpressionToJsRequest(
-    super.completer,
-    this.libraryUri,
-    this.scriptUri,
-    this.line,
-    this.column,
-    this.jsModules,
-    this.jsFrameValues,
-    this.moduleName,
-    this.expression,
-  );
-
-  String libraryUri;
-  String scriptUri;
-  int line;
-  int column;
-  Map<String, String> jsModules;
-  Map<String, String> jsFrameValues;
-  String moduleName;
-  String expression;
-
-  @override
-  Future<CompilerOutput?> _run(ResidentCompiler compiler) async =>
-      compiler._compileExpressionToJs(this);
-}
-
-class _RejectRequest extends _CompilationRequest {
-  _RejectRequest(super.completer);
-
-  @override
-  Future<CompilerOutput?> _run(ResidentCompiler compiler) async =>
-      compiler._reject();
-}
-
-/// Wrapper around incremental frontend server compiler, that communicates with
-/// server via stdin/stdout.
-///
-/// The wrapper is intended to stay resident in memory as user changes, reloads,
-/// restarts the Flutter app.
-class ResidentCompiler {
-  ResidentCompiler(
-    this.sdkRoot, {
-    required this.projectDirectory,
-    required this.packageConfigFile,
-    required this.useDebuggerModuleNames,
-    required this.fileSystemRoots,
-    required this.fileSystemScheme,
-    required this.platformDill,
-    required this.compilerOptions,
-    required this.sdkLayout,
-    this.verbose = false,
-    CompilerMessageConsumer compilerMessageConsumer = defaultConsumer,
-  }) : _stdoutHandler = StdoutHandler(consumer: compilerMessageConsumer);
-
-  final Uri projectDirectory;
-  final Uri packageConfigFile;
-  final bool useDebuggerModuleNames;
-  final List<Uri> fileSystemRoots;
-  final String fileSystemScheme;
-  final String platformDill;
-  final TestSdkLayout sdkLayout;
-  final CompilerOptions compilerOptions;
-  final bool verbose;
-
-  /// The path to the root of the Dart SDK used to compile.
-  final String sdkRoot;
-
-  Process? _server;
-  final StdoutHandler _stdoutHandler;
-  bool _compileRequestNeedsConfirmation = false;
-
-  final StreamController<_CompilationRequest> _controller =
-      StreamController<_CompilationRequest>();
-
-  /// If invoked for the first time, it compiles Dart script identified by
-  /// [mainUri], [invalidatedFiles] list is ignored.
-  /// On successive runs [invalidatedFiles] indicates which files need to be
-  /// recompiled. If [mainUri] is null, previously used [mainUri] entry
-  /// point that is used for recompilation.
-  /// Binary file name is returned if compilation was successful, otherwise
-  /// null is returned.
-  /// If [recompileRestart] is true, uses the `recompile-restart` instruction
-  /// instead of `recompile`.
-  Future<CompilerOutput?> recompile(
-    Uri mainUri,
-    List<Uri> invalidatedFiles, {
-    required String outputPath,
-    required PackageConfig packageConfig,
-    required bool recompileRestart,
-  }) async {
-    if (!_controller.hasListener) {
-      _controller.stream.listen(_handleCompilationRequest);
-    }
-
-    final completer = Completer<CompilerOutput?>();
-    _controller.add(
-      _RecompileRequest(
-        completer,
-        mainUri,
-        invalidatedFiles,
-        outputPath,
-        packageConfig,
-        recompileRestart: recompileRestart,
-      ),
-    );
-    return completer.future;
-  }
-
-  Future<CompilerOutput?> _recompile(_RecompileRequest request) async {
-    _stdoutHandler.reset();
-
-    final mainUri =
-        request.packageConfig.toPackageUri(request.mainUri)?.toString() ??
-        _toMultiRootPath(request.mainUri, fileSystemScheme, fileSystemRoots);
-
-    _compileRequestNeedsConfirmation = true;
-
-    if (_server == null) {
-      return _compile(mainUri, request.outputPath);
-    }
-    final server = _server!;
-
-    final inputKey = generateV4UUID();
-    final instruction = request.recompileRestart
-        ? 'recompile-restart'
-        : 'recompile';
-    server.stdin.writeln('$instruction $mainUri $inputKey');
-    _logger.info('<- $instruction $mainUri $inputKey');
-    for (final fileUri in request.invalidatedFiles) {
-      String message;
-      if (fileUri.scheme == 'package') {
-        message = fileUri.toString();
-      } else {
-        message =
-            request.packageConfig.toPackageUri(fileUri)?.toString() ??
-            _toMultiRootPath(fileUri, fileSystemScheme, fileSystemRoots);
-      }
-      server.stdin.writeln(message);
-      _logger.info(message);
-    }
-    server.stdin.writeln(inputKey);
-    _logger.info('<- $inputKey');
-
-    return _stdoutHandler.compilerOutput.future;
-  }
-
-  final List<_CompilationRequest> _compilationQueue = <_CompilationRequest>[];
-
-  Future<void> _handleCompilationRequest(_CompilationRequest request) async {
-    final isEmpty = _compilationQueue.isEmpty;
-    _compilationQueue.add(request);
-    // Only trigger processing if queue was empty - i.e. no other requests
-    // are currently being processed. This effectively enforces "one
-    // compilation request at a time".
-    if (isEmpty) {
-      while (_compilationQueue.isNotEmpty) {
-        final request = _compilationQueue.first;
-        await request.run(this);
-        _compilationQueue.removeAt(0);
-      }
-    }
-  }
-
-  Future<CompilerOutput?> _compile(
-    String scriptUri,
-    String outputFilePath,
-  ) async {
-    final frontendServer = sdkLayout.frontendServerSnapshotPath;
-    final args = <String>[
-      frontendServer,
-      '--sdk-root',
-      sdkRoot,
-      '--incremental',
-      '--target=dartdevc',
-      '-Ddart.developer.causal_async_stacks=true',
-      '--output-dill',
-      outputFilePath,
-      ...<String>['--packages', '$packageConfigFile'],
-      for (final root in fileSystemRoots) ...<String>[
-        '--filesystem-root',
-        '$root',
-      ],
-      ...<String>['--filesystem-scheme', fileSystemScheme],
-      ...<String>['--platform', platformDill],
-      if (useDebuggerModuleNames) '--debugger-module-names',
-      '--experimental-emit-debug-metadata',
-      for (final experiment in compilerOptions.experiments)
-        '--enable-experiment=$experiment',
-      if (compilerOptions.canaryFeatures) '--dartdevc-canary',
-      if (verbose) '--verbose',
-      if (compilerOptions.moduleFormat == ModuleFormat.ddc)
-        '--dartdevc-module-format=ddc',
-    ];
-    _logger.info(args.join(' '));
-    final workingDirectory = projectDirectory.toFilePath();
-    _server = await Process.start(
-      sdkLayout.dartAotRuntimePath,
-      args,
-      workingDirectory: workingDirectory,
-    );
-
-    final server = _server!;
-    server.stdout
-        .transform<String>(utf8.decoder)
-        .transform<String>(const LineSplitter())
-        .listen(
-          _stdoutHandler.handler,
-          onDone: () {
-            // when outputFilename future is not completed, but stdout is closed
-            // process has died unexpectedly.
-            if (!_stdoutHandler.compilerOutput.isCompleted) {
-              _stdoutHandler.compilerOutput.complete(null);
-              throw Exception('the Dart compiler exited unexpectedly.');
-            }
-          },
-        );
-
-    server.stderr
-        .transform<String>(utf8.decoder)
-        .transform<String>(const LineSplitter())
-        .listen(_logger.info);
-
-    unawaited(
-      server.exitCode.then((int code) {
-        if (code != 0) {
-          throw Exception('the Dart compiler exited unexpectedly.');
-        }
-      }),
-    );
-
-    server.stdin.writeln('compile $scriptUri');
-    _logger.info('<- compile $scriptUri');
-
-    return _stdoutHandler.compilerOutput.future;
-  }
-
-  /// Compile dart expression to kernel.
-  Future<CompilerOutput?> compileExpression(
-    String expression,
-    List<String> definitions,
-    List<String> typeDefinitions,
-    String libraryUri,
-    String scriptUri,
-    String klass,
-    bool isStatic,
-  ) {
-    if (!_controller.hasListener) {
-      _controller.stream.listen(_handleCompilationRequest);
-    }
-
-    final completer = Completer<CompilerOutput?>();
-    _controller.add(
-      _CompileExpressionRequest(
-        completer,
-        expression,
-        definitions,
-        typeDefinitions,
-        libraryUri,
-        scriptUri,
-        klass,
-        isStatic,
-      ),
-    );
-    return completer.future;
-  }
-
-  Future<CompilerOutput?> _compileExpression(
-    _CompileExpressionRequest request,
-  ) async {
-    _stdoutHandler.reset(suppressCompilerMessages: true, expectSources: false);
-
-    // 'compile-expression' should be invoked after compiler has been started,
-    // program was compiled.
-    if (_server == null) {
-      return null;
-    }
-    final server = _server!;
-
-    final inputKey = generateV4UUID();
-    server.stdin.writeln('compile-expression $inputKey');
-    server.stdin.writeln(request.expression);
-    request.definitions.forEach(server.stdin.writeln);
-    server.stdin.writeln(inputKey);
-    request.typeDefinitions.forEach(server.stdin.writeln);
-    server.stdin.writeln(inputKey);
-    server.stdin.writeln(request.libraryUri ?? '');
-    server.stdin.writeln(request.klass ?? '');
-    server.stdin.writeln(request.isStatic ?? false);
-
-    return _stdoutHandler.compilerOutput.future;
-  }
-
-  /// Compiles dart expression to JavaScript.
-  Future<CompilerOutput?> compileExpressionToJs(
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  ) {
-    if (!_controller.hasListener) {
-      _controller.stream.listen(_handleCompilationRequest);
-    }
-
-    final completer = Completer<CompilerOutput?>();
-    _controller.add(
-      _CompileExpressionToJsRequest(
-        completer,
-        libraryUri,
-        scriptUri,
-        line,
-        column,
-        jsModules,
-        jsFrameValues,
-        moduleName,
-        expression,
-      ),
-    );
-    return completer.future;
-  }
-
-  Future<CompilerOutput?> _compileExpressionToJs(
-    _CompileExpressionToJsRequest request,
-  ) async {
-    _stdoutHandler.reset(
-      suppressCompilerMessages: !verbose,
-      expectSources: false,
-    );
-
-    // Compiling an expression should happen after the compiler has been
-    // started and the program was compiled.
-    if (_server == null) {
-      return null;
-    }
-    final server = _server!;
-
-    server.stdin.writeln('JSON_INPUT');
-    server.stdin.writeln(
-      json.encode({
-        'type': 'COMPILE_EXPRESSION_JS',
-        'data': {
-          'expression': request.expression,
-          'libraryUri': request.libraryUri,
-          'scriptUri': request.scriptUri,
-          'line': request.line,
-          'column': request.column,
-          'jsModules': request.jsModules,
-          'jsFrameValues': request.jsFrameValues,
-          'moduleName': request.moduleName,
-        },
-      }),
-    );
-
-    return _stdoutHandler.compilerOutput.future;
-  }
-
-  /// Should be invoked when results of compilation are accepted by the client.
-  ///
-  /// Either [accept] or [reject] should be called after every [recompile] call.
-  void accept() {
-    if (_compileRequestNeedsConfirmation) {
-      _server!.stdin.writeln('accept');
-      _logger.info('<- accept');
-    }
-    _compileRequestNeedsConfirmation = false;
-  }
-
-  /// Should be invoked when results of compilation are rejected by the client.
-  ///
-  /// Either [accept] or [reject] should be called after every [recompile] call.
-  Future<CompilerOutput?> reject() {
-    if (!_controller.hasListener) {
-      _controller.stream.listen(_handleCompilationRequest);
-    }
-
-    final completer = Completer<CompilerOutput?>();
-    _controller.add(_RejectRequest(completer));
-    return completer.future;
-  }
-
-  Future<CompilerOutput?> _reject() {
-    if (!_compileRequestNeedsConfirmation) {
-      return Future<CompilerOutput?>.value(null);
-    }
-    _stdoutHandler.reset(expectSources: false);
-    _server!.stdin.writeln('reject');
-    _logger.info('<- reject');
-    _compileRequestNeedsConfirmation = false;
-    return _stdoutHandler.compilerOutput.future;
-  }
-
-  /// Should be invoked when frontend server compiler should forget what was
-  /// accepted previously so that next call to [recompile] produces complete
-  /// kernel file.
-  void reset() {
-    // TODO(annagrin): make sure this works when we support hot restart in
-    // tests using frontend server - for example, throw an error if the
-    // server is not available.
-    _server?.stdin.writeln('reset');
-    _logger.info('<- reset');
-  }
-
-  Future<int> quit() async {
-    _server?.stdin.writeln('quit');
-    _logger.info('<- quit');
-
-    if (_server == null) {
-      return 0;
-    }
-    return _server!.exitCode;
-  }
-
-  /// stop the service normally
-  Future<dynamic> shutdown() async {
-    // Server was never successfully created.
-    if (_server == null) {
-      return 0;
-    }
-    return quit();
-  }
-
-  /// kill the service
-  Future<dynamic> kill() async {
-    if (_server == null) {
-      return 0;
-    }
-
-    final server = _server!;
-    _logger.info('killing pid ${server.pid}');
-    server.kill();
-    return server.exitCode;
-  }
-}
-
-class TestExpressionCompiler implements ExpressionCompiler {
-  final ResidentCompiler _generator;
-  TestExpressionCompiler(this._generator);
-
-  @override
-  Future<ExpressionCompilationResult> compileExpressionToJs(
-    String isolateId,
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  ) async {
-    final compilerOutput = await _generator.compileExpressionToJs(
-      libraryUri,
-      scriptUri,
-      line,
-      column,
-      jsModules,
-      jsFrameValues,
-      moduleName,
-      expression,
-    );
-
-    if (compilerOutput != null) {
-      final content = utf8.decode(
-        localFileSystem.file(compilerOutput.outputFilename).readAsBytesSync(),
-      );
-      return ExpressionCompilationResult(
-        content,
-        compilerOutput.errorCount > 0,
-      );
-    }
-
-    throw Exception('Failed to compile $expression');
-  }
-
-  @override
-  Future<bool> updateDependencies(Map<String, ModuleInfo> modules) async =>
-      true;
-
-  @override
-  Future<void> initialize(CompilerOptions options) async {}
-}
-
-/// Convert a file URI into a multi-root scheme URI if provided, otherwise
-/// return unmodified.
-String _toMultiRootPath(
-  Uri fileUri,
-  String? scheme,
-  List<Uri> fileSystemRoots,
-) {
-  if (scheme == null || fileSystemRoots.isEmpty || fileUri.scheme != 'file') {
-    return fileUri.toString();
-  }
-  final filePath = fileUri.toFilePath(windows: Platform.isWindows);
-  for (final fileSystemRoot in fileSystemRoots) {
-    final rootPath = fileSystemRoot.toFilePath(windows: Platform.isWindows);
-    if (filePath.startsWith(rootPath)) {
-      return '$scheme:///${filePath.substring(rootPath.length)}';
-    }
-  }
-  return fileUri.toString();
-}
diff --git a/dwds/test/frontend_server_common/resident_runner.dart b/dwds/test/frontend_server_common/resident_runner.dart
deleted file mode 100644
index 905d7c6..0000000
--- a/dwds/test/frontend_server_common/resident_runner.dart
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Note: this is a copy from flutter tools, updated to work with dwds tests,
-// and some functionality removed (does not support hot reload yet)
-
-import 'dart:async';
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/config.dart';
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:file/file.dart';
-import 'package:logging/logging.dart';
-
-import 'devfs.dart';
-import 'frontend_server_client.dart';
-
-class ResidentWebRunner {
-  final _logger = Logger('ResidentWebRunner');
-
-  ResidentWebRunner({
-    required this.mainUri,
-    required this.urlTunneler,
-    required this.projectDirectory,
-    required this.packageConfigFile,
-    required this.packageUriMapper,
-    required this.fileSystemRoots,
-    required this.fileSystemScheme,
-    required this.outputPath,
-    required this.compilerOptions,
-    required this.sdkLayout,
-    bool verbose = false,
-  }) {
-    final platformDillUri = Uri.file(sdkLayout.summaryPath);
-
-    generator = ResidentCompiler(
-      sdkLayout.sdkDirectory,
-      projectDirectory: projectDirectory,
-      packageConfigFile: packageConfigFile,
-      useDebuggerModuleNames: packageUriMapper.useDebuggerModuleNames,
-      platformDill: '$platformDillUri',
-      fileSystemRoots: fileSystemRoots,
-      fileSystemScheme: fileSystemScheme,
-      compilerOptions: compilerOptions,
-      sdkLayout: sdkLayout,
-      verbose: verbose,
-    );
-    expressionCompiler = TestExpressionCompiler(generator);
-  }
-
-  final UrlEncoder? urlTunneler;
-  final Uri mainUri;
-  final Uri projectDirectory;
-  final Uri packageConfigFile;
-  final PackageUriMapper packageUriMapper;
-  final String outputPath;
-  final List<Uri> fileSystemRoots;
-  final String fileSystemScheme;
-  final CompilerOptions compilerOptions;
-  final TestSdkLayout sdkLayout;
-
-  late ResidentCompiler generator;
-  late ExpressionCompiler expressionCompiler;
-  ProjectFileInvalidator? _projectFileInvalidator;
-  WebDevFS? devFS;
-  Uri? uri;
-
-  Future<int> run(
-    FileSystem fileSystem, {
-    String? hostname,
-    required int port,
-    required String index,
-  }) async {
-    _projectFileInvalidator ??= ProjectFileInvalidator(fileSystem: fileSystem);
-    devFS ??= WebDevFS(
-      fileSystem: fileSystem,
-      hostname: hostname ?? 'localhost',
-      port: port,
-      projectDirectory: projectDirectory,
-      packageUriMapper: packageUriMapper,
-      index: index,
-      urlTunneler: urlTunneler,
-      sdkLayout: sdkLayout,
-      compilerOptions: compilerOptions,
-    );
-    uri ??= await devFS!.create();
-
-    final report = await _updateDevFS(
-      initialCompile: true,
-      fullRestart: false,
-      fileServerUri: null,
-    );
-    if (!report.success) {
-      _logger.severe('Failed to compile application.');
-      return 1;
-    }
-
-    generator.accept();
-    return 0;
-  }
-
-  Future<int> rerun({
-    required bool fullRestart,
-    // The uri of the `HttpServer` that handles file requests.
-    // TODO(srujzs): This should be the same as the uri of the AssetServer to
-    // align with Flutter tools, but currently is not. Delete when that's fixed.
-    required Uri fileServerUri,
-  }) async {
-    final report = await _updateDevFS(
-      initialCompile: false,
-      fullRestart: fullRestart,
-      fileServerUri: fileServerUri,
-    );
-    if (!report.success) {
-      _logger.severe('Failed to compile application.');
-      return 1;
-    }
-
-    generator.accept();
-    return 0;
-  }
-
-  Future<UpdateFSReport> _updateDevFS({
-    required bool initialCompile,
-    required bool fullRestart,
-    // The uri of the `TestServer` that handles file requests.
-    // TODO(srujzs): This should be the same as the uri of the AssetServer to
-    // align with Flutter tools, but currently is not. Delete when that's fixed.
-    required Uri? fileServerUri,
-  }) async {
-    final invalidationResult = await _projectFileInvalidator!.findInvalidated(
-      lastCompiled: devFS!.lastCompiled,
-      urisToMonitor: devFS!.sources,
-      packagesPath: packageConfigFile.toFilePath(),
-    );
-    final report = await devFS!.update(
-      mainUri: mainUri,
-      dillOutputPath: outputPath,
-      generator: generator,
-      invalidatedFiles: invalidationResult.uris!,
-      initialCompile: initialCompile,
-      fullRestart: fullRestart,
-      fileServerUri: fileServerUri,
-    );
-    return report;
-  }
-
-  Future<void> stop() async {
-    await generator.shutdown();
-    await devFS!.dispose();
-  }
-}
diff --git a/dwds/test/frontend_server_common/utilities.dart b/dwds/test/frontend_server_common/utilities.dart
deleted file mode 100644
index eddc3b4..0000000
--- a/dwds/test/frontend_server_common/utilities.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:file/file.dart' as fs;
-import 'package:file/local.dart';
-
-const fs.FileSystem localFileSystem = LocalFileSystem();
diff --git a/dwds/test/frontend_server_common/uuid.dart b/dwds/test/frontend_server_common/uuid.dart
deleted file mode 100644
index b375a98..0000000
--- a/dwds/test/frontend_server_common/uuid.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2024, 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:math' show Random;
-
-/// A UUID generator.
-///
-/// The generated values are 128 bit numbers encoded in a specific string
-/// format.
-///
-/// Generate a version 4 (random) uuid. This is a uuid scheme that only uses
-/// random numbers as the source of the generated uuid.
-String generateV4UUID() {
-  final special = 8 + _random.nextInt(4);
-
-  return '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}-'
-      '${_bitsDigits(16, 4)}-'
-      '4${_bitsDigits(12, 3)}-'
-      '${_printDigits(special, 1)}${_bitsDigits(12, 3)}-'
-      '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}';
-}
-
-final Random _random = Random();
-
-String _bitsDigits(int bitCount, int digitCount) =>
-    _printDigits(_generateBits(bitCount), digitCount);
-
-int _generateBits(int bitCount) => _random.nextInt(1 << bitCount);
-
-String _printDigits(int value, int count) =>
-    value.toRadixString(16).padLeft(count, '0');
diff --git a/dwds/test/integration/breakpoint_common.dart b/dwds/test/integration/breakpoint_common.dart
deleted file mode 100644
index 88dea2d..0000000
--- a/dwds/test/integration/breakpoint_common.dart
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testBreakpoint({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  bool verboseCompiler = false,
-}) {
-  final context = TestContext(TestProject.testPackage(), provider);
-
-  group('shared context', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          verboseCompiler: verboseCompiler,
-          canaryFeatures: provider.canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    group('breakpoint', () {
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late String mainScriptUri;
-      late Stream<Event> stream;
-      late VmServiceInterface service;
-
-      setUp(() async {
-        service = context.service;
-        setCurrentLogWriter(debug: provider.verbose);
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await service.getScripts(isolateId);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-        mainScriptUri = mainScript.uri!;
-      });
-
-      tearDown(() async {
-        // We must resume execution in case a test left the isolate paused, but
-        // error 106 is expected if the isolate is already running.
-        try {
-          await service.resume(isolateId);
-        } on RPCError catch (e) {
-          if (e.code != 106) rethrow;
-        }
-      });
-
-      test('set breakpoint', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-
-      test('set breakpoint again', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-
-      test('set existing breakpoint succeeds', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp1 = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-        final bp2 = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        expect(bp1, equals(bp2));
-        expect(bp1, isNotNull);
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        var currentIsolate = await service.getIsolate(isolateId);
-        expect(currentIsolate.breakpoints, containsAll([bp1]));
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp1.id!);
-
-        currentIsolate = await service.getIsolate(isolateId);
-        expect(currentIsolate.breakpoints, isEmpty);
-      });
-
-      test(
-        'set breakpoints at the same line simultaneously succeeds',
-        () async {
-          final line = await context.findBreakpointLine(
-            'printLocal',
-            isolateId,
-            mainScript,
-          );
-          final futures = [
-            service.addBreakpointWithScriptUri(isolateId, mainScriptUri, line),
-            service.addBreakpointWithScriptUri(isolateId, mainScriptUri, line),
-          ];
-
-          final breakpoints = await Future.wait(futures);
-          expect(breakpoints[0], equals(breakpoints[1]));
-          expect(breakpoints[0], isNotNull);
-
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-
-          var currentIsolate = await service.getIsolate(isolateId);
-          expect(currentIsolate.breakpoints, containsAll([breakpoints[0]]));
-
-          // Remove breakpoint so it doesn't impact other tests.
-          await service.removeBreakpoint(isolateId, breakpoints[0].id!);
-
-          currentIsolate = await service.getIsolate(isolateId);
-          expect(currentIsolate.breakpoints, isEmpty);
-        },
-      );
-
-      test('remove non-existing breakpoint fails', () async {
-        final line = await context.findBreakpointLine(
-          'printLocal',
-          isolateId,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        var currentIsolate = await service.getIsolate(isolateId);
-        expect(currentIsolate.breakpoints, containsAll([bp]));
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-        await expectLater(
-          service.removeBreakpoint(isolateId, bp.id!),
-          throwsRPCError,
-        );
-
-        currentIsolate = await service.getIsolate(isolateId);
-        expect(currentIsolate.breakpoints, isEmpty);
-      });
-
-      test('set breakpoint inside a JavaScript line succeeds', () async {
-        final line = await context.findBreakpointLine(
-          'printNestedObjectMultiLine',
-          isolateId,
-          mainScript,
-        );
-        final column = 0;
-        final bp = await service.addBreakpointWithScriptUri(
-          isolateId,
-          mainScriptUri,
-          line,
-          column: column,
-        );
-
-        await stream.firstWhere(
-          (Event event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        expect(bp, isNotNull);
-        expect(
-          bp.location,
-          isA<SourceLocation>()
-              .having((loc) => loc.script, 'script', equals(mainScript))
-              .having((loc) => loc.line, 'line', equals(line))
-              .having((loc) => loc.column, 'column', greaterThan(column)),
-        );
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolateId, bp.id!);
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart b/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart
deleted file mode 100644
index 71b4606..0000000
--- a/dwds/test/integration/breakpoint_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'breakpoint_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.ddc,
-    canaryFeatures: true,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testBreakpoint(
-      provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-
-  group('Frontend Server |', () {
-    testBreakpoint(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-}
diff --git a/dwds/test/integration/callstack_common.dart b/dwds/test/integration/callstack_common.dart
deleted file mode 100644
index e0782f6..0000000
--- a/dwds/test/integration/callstack_common.dart
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testCallStack({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  bool verboseCompiler = false,
-}) {
-  final project = TestProject.testPackage();
-  final context = TestContext(project, provider);
-
-  group('shared context |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: verboseCompiler,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    group('callStack |', () {
-      late VmServiceInterface service;
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late ScriptRef testLibraryScript;
-      late Stream<Event> stream;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await service.getScripts(isolateId);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        final testPackage = project.packageName;
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-        testLibraryScript = scripts.scripts!.firstWhere(
-          (each) =>
-              each.uri!.contains('package:$testPackage/test_library.dart'),
-        );
-      });
-
-      tearDown(() async {
-        try {
-          await service.resume(isolateId);
-        } catch (_) {}
-      });
-
-      Future<void> onBreakPoint(
-        BreakpointTestData breakpoint,
-        Future<void> Function() body,
-      ) async {
-        Breakpoint? bp;
-        try {
-          final bpId = breakpoint.bpId;
-          final script = breakpoint.script;
-          final line = await context.findBreakpointLine(
-            bpId,
-            isolateId,
-            script,
-          );
-          bp = await context.service.addBreakpointWithScriptUri(
-            isolateId,
-            script.uri!,
-            line,
-          );
-
-          expect(bp, isNotNull);
-          expect(bp.location, _matchBpLocation(script, line, 0));
-
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-
-          await body();
-        } finally {
-          // Remove breakpoint so it doesn't impact other tests or retries.
-          if (bp != null) {
-            await context.service.removeBreakpoint(isolateId, bp.id!);
-          }
-        }
-      }
-
-      Future<void> testCallStack(
-        List<BreakpointTestData> breakpoints, {
-        int frameIndex = 1,
-      }) async {
-        // Find lines the breakpoints are located on.
-        final lines = await Future.wait(
-          breakpoints.map(
-            (frame) =>
-                context.findBreakpointLine(frame.bpId, isolateId, frame.script),
-          ),
-        );
-
-        // Get current stack.
-        final stack = await service.getStack(isolateId);
-
-        // Verify the stack is correct.
-        expect(stack.frames!.length, greaterThanOrEqualTo(lines.length));
-        final expected = [
-          for (var i = 0; i < lines.length; i++)
-            _matchFrame(
-              breakpoints[i].script,
-              breakpoints[i].function,
-              lines[i],
-            ),
-        ];
-        expect(stack.frames, containsAll(expected));
-
-        // Verify that expression evaluation is not failing.
-        final instance = await service.evaluateInFrame(
-          isolateId,
-          frameIndex,
-          'true',
-        );
-        expect(instance, isA<InstanceRef>());
-      }
-
-      test('breakpoint succeeds with correct callstack', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData(
-            'printEnclosingObject',
-            'printEnclosingObject',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'printEnclosingFunctionMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () => testCallStack(breakpoints));
-      });
-
-      test('expression evaluation succeeds on parent frame', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData(
-            'testLibraryClassConstructor',
-            'new',
-            testLibraryScript,
-          ),
-          BreakpointTestData(
-            'createLibraryObject',
-            'printFieldFromLibraryClass',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintFieldFromLibraryClass',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(
-          breakpoints[0],
-          () => testCallStack(breakpoints, frameIndex: 2),
-        );
-      });
-
-      test('breakpoint inside a line gives correct callstack', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printNestedObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () => testCallStack(breakpoints));
-      });
-
-      test('breakpoint gives correct callstack after step out', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printEnclosingObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[0], () async {
-          await service.resume(isolateId, step: 'Out');
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseInterrupted,
-          );
-          return testCallStack([breakpoints[1], breakpoints[2]]);
-        });
-      });
-
-      test('breakpoint gives correct callstack after step in', () async {
-        // Expected breakpoints on the stack
-        final breakpoints = [
-          BreakpointTestData('newEnclosedClass', 'new', mainScript),
-          BreakpointTestData(
-            'printNestedObjectMultiLine',
-            'printNestedObjectsMultiLine',
-            mainScript,
-          ),
-          BreakpointTestData(
-            'callPrintEnclosingFunctionMultiLine',
-            '<closure>',
-            mainScript,
-          ),
-        ];
-        await onBreakPoint(breakpoints[1], () async {
-          await service.resume(isolateId, step: 'Into');
-          await stream.firstWhere(
-            (Event event) => event.kind == EventKind.kPauseInterrupted,
-          );
-          return testCallStack(breakpoints);
-        });
-      });
-
-      test(
-        'breakpoint gives correct callstack after step into chain calls',
-        () async {
-          // Expected breakpoints on the stack
-          final breakpoints = [
-            BreakpointTestData(
-              'createObjectWithMethod',
-              'createObject',
-              mainScript,
-            ),
-            BreakpointTestData(
-              // This is currently incorrect, should be printObjectMultiLine.
-              // See issue: https://github.com/dart-lang/sdk/issues/48874
-              'printMultiLine',
-              'printObjectMultiLine',
-              mainScript,
-            ),
-            BreakpointTestData(
-              'callPrintObjectMultiLine',
-              '<closure>',
-              mainScript,
-            ),
-          ];
-          final bp = BreakpointTestData(
-            'printMultiLine',
-            'printObjectMultiLine',
-            mainScript,
-          );
-          await onBreakPoint(bp, () async {
-            await service.resume(isolateId, step: 'Into');
-            await stream.firstWhere(
-              (Event event) => event.kind == EventKind.kPauseInterrupted,
-            );
-            return testCallStack(breakpoints);
-          });
-        },
-      );
-    });
-  });
-}
-
-Matcher _matchFrame(ScriptRef script, String function, int line) => isA<Frame>()
-    .having((frame) => frame.code!.name, 'function', function)
-    .having(
-      (frame) => frame.location,
-      'location',
-      _matchFrameLocation(script, line),
-    );
-
-Matcher _matchBpLocation(ScriptRef script, int line, int column) =>
-    isA<SourceLocation>()
-        .having((loc) => loc.script, 'script', equals(script))
-        .having((loc) => loc.line, 'line', equals(line))
-        .having((loc) => loc.column, 'column', greaterThanOrEqualTo(column));
-
-Matcher _matchFrameLocation(ScriptRef script, int line) => isA<SourceLocation>()
-    .having((loc) => loc.script, 'script', equals(script))
-    .having((loc) => loc.line, 'line', equals(line));
-
-class BreakpointTestData {
-  String bpId;
-  String function;
-  ScriptRef script;
-
-  BreakpointTestData(this.bpId, this.function, this.script);
-}
diff --git a/dwds/test/integration/chrome_proxy_service_ddc_library_bundle_test.dart b/dwds/test/integration/chrome_proxy_service_ddc_library_bundle_test.dart
deleted file mode 100644
index fa577f8..0000000
--- a/dwds/test/integration/chrome_proxy_service_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'common/chrome_proxy_service_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-  final moduleFormat = ModuleFormat.ddc;
-
-  group('canary: $canaryFeatures | Frontend Server |', () {
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-    final compilationMode = CompilationMode.frontendServer;
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: $canaryFeatures | Build Daemon |', () {
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-    final compilationMode = CompilationMode.buildDaemon;
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/circular_evaluate_amd_test.dart b/dwds/test/integration/circular_evaluate_amd_test.dart
deleted file mode 100644
index 44d0d55..0000000
--- a/dwds/test/integration/circular_evaluate_amd_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_circular_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-
-  group('Frontend Server |', () {
-    group('Context with circular dependencies |', () {
-      for (final indexBaseMode in IndexBaseMode.values) {
-        group(
-          'with ${indexBaseMode.name} |',
-          () {
-            testAll(
-              provider: provider,
-              compilationMode: CompilationMode.frontendServer,
-              indexBaseMode: indexBaseMode,
-              useDebuggerModuleNames: true,
-            );
-          },
-          skip:
-              // https://github.com/dart-lang/sdk/issues/49277
-              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-        );
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart
deleted file mode 100644
index a45d9fc..0000000
--- a/dwds/test/integration/circular_evaluate_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_circular_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.ddc,
-    canaryFeatures: true,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-
-  group('Frontend Server |', () {
-    group('Context with circular dependencies |', () {
-      for (final indexBaseMode in IndexBaseMode.values) {
-        group(
-          'with ${indexBaseMode.name} |',
-          () {
-            testAll(
-              provider: provider,
-              compilationMode: CompilationMode.frontendServer,
-              indexBaseMode: indexBaseMode,
-              useDebuggerModuleNames: true,
-            );
-          },
-          skip:
-              // https://github.com/dart-lang/sdk/issues/49277
-              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-        );
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/common/chrome_proxy_service_common.dart b/dwds/test/integration/common/chrome_proxy_service_common.dart
deleted file mode 100644
index 306fa02..0000000
--- a/dwds/test/integration/common/chrome_proxy_service_common.dart
+++ /dev/null
@@ -1,2642 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:http/http.dart' as http;
-import 'package:path/path.dart' as path;
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import '../fixtures/context.dart';
-import '../fixtures/project.dart';
-import '../fixtures/utilities.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required ModuleFormat moduleFormat,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final project = TestProject.test;
-  final context = TestContext(project, provider);
-
-  group('shared context', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          verboseCompiler: false,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: canaryFeatures,
-          compilationMode: compilationMode,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    group('breakpoints', () {
-      late VmServiceInterface service;
-      VM vm;
-      late Isolate isolate;
-
-      late ScriptList scripts;
-      late ScriptRef mainScript;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        scripts = await service.getScripts(isolate.id!);
-        mainScript = scripts.scripts!.firstWhere(
-          (ScriptRef each) => each.uri!.contains('main.dart'),
-        );
-      });
-
-      test('addBreakpoint', () async {
-        final line = await context.findBreakpointLine(
-          'printHelloWorld',
-          isolate.id!,
-          mainScript,
-        );
-        final firstBp = await service.addBreakpoint(
-          isolate.id!,
-          mainScript.id!,
-          line,
-        );
-        expect(firstBp, isNotNull);
-        expect(firstBp.id, isNotNull);
-
-        final secondBp = await service.addBreakpoint(
-          isolate.id!,
-          mainScript.id!,
-          line,
-        );
-        expect(secondBp, isNotNull);
-        expect(secondBp.id, isNotNull);
-
-        expect(firstBp.id, equals(secondBp.id));
-
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolate.id!, firstBp.id!);
-      });
-
-      test(
-        'addBreakpoint succeeds when sending the same breakpoint twice',
-        () async {
-          final line = await context.findBreakpointLine(
-            'printHelloWorld',
-            isolate.id!,
-            mainScript,
-          );
-          final firstBp = service.addBreakpoint(
-            isolate.id!,
-            mainScript.id!,
-            line,
-          );
-          final secondBp = service.addBreakpoint(
-            isolate.id!,
-            mainScript.id!,
-            line,
-          );
-
-          // Remove breakpoint so it doesn't impact other tests.
-          await service.removeBreakpoint(isolate.id!, (await firstBp).id!);
-          expect((await firstBp).id, equals((await secondBp).id));
-        },
-      );
-
-      test('addBreakpoint in nonsense location throws', () async {
-        expect(
-          service.addBreakpoint(isolate.id!, mainScript.id!, 200000),
-          throwsA(predicate((dynamic e) => e is RPCError && e.code == 102)),
-        );
-      });
-
-      test('addBreakpoint on a part file', () async {
-        final partScript = scripts.scripts!.firstWhere(
-          (script) => script.uri!.contains('part.dart'),
-        );
-        final bp = await service.addBreakpoint(isolate.id!, partScript.id!, 10);
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolate.id!, bp.id!);
-        expect(bp.id, isNotNull);
-      });
-
-      test('addBreakpointAtEntry', () async {
-        await expectLater(service.addBreakpointAtEntry('', ''), throwsRPCError);
-      });
-
-      test('addBreakpointWithScriptUri', () async {
-        final line = await context.findBreakpointLine(
-          'printHelloWorld',
-          isolate.id!,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolate.id!,
-          mainScript.uri!,
-          line,
-        );
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolate.id!, bp.id!);
-        expect(bp.id, isNotNull);
-      });
-
-      test('addBreakpointWithScriptUri absolute file URI', () async {
-        final test = context.project.absolutePackageDirectory;
-        final scriptPath = Uri.parse(mainScript.uri!).path.substring(1);
-        final fullPath = path.join(test, scriptPath);
-        final fileUri = Uri.file(fullPath);
-        final line = await context.findBreakpointLine(
-          'printHelloWorld',
-          isolate.id!,
-          mainScript,
-        );
-        final bp = await service.addBreakpointWithScriptUri(
-          isolate.id!,
-          '$fileUri',
-          line,
-        );
-        // Remove breakpoint so it doesn't impact other tests.
-        await service.removeBreakpoint(isolate.id!, bp.id!);
-        expect(bp.id, isNotNull);
-      });
-
-      test('removeBreakpoint null arguments', () async {
-        await expectLater(
-          service.removeBreakpoint('', ''),
-          throwsSentinelException,
-        );
-        await expectLater(
-          service.removeBreakpoint(isolate.id!, ''),
-          throwsRPCError,
-        );
-      });
-
-      test("removeBreakpoint that doesn't exist fails", () async {
-        await expectLater(
-          service.removeBreakpoint(isolate.id!, '1234'),
-          throwsRPCError,
-        );
-      });
-
-      test('add and remove breakpoint', () async {
-        final line = await context.findBreakpointLine(
-          'printHelloWorld',
-          isolate.id!,
-          mainScript,
-        );
-        final bp = await service.addBreakpoint(
-          isolate.id!,
-          mainScript.id!,
-          line,
-        );
-        expect(isolate.breakpoints, [bp]);
-        await service.removeBreakpoint(isolate.id!, bp.id!);
-        expect(isolate.breakpoints, isEmpty);
-      });
-    });
-
-    group('callServiceExtension', () {
-      late ChromeProxyService service;
-
-      setUp(() {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-      });
-
-      test(
-        'success',
-        () async {
-          final serviceMethod = 'ext.test.callServiceExtension';
-          await context.tabConnection.runtime.evaluate(
-            'registerExtension("$serviceMethod");',
-          );
-
-          // The non-string keys/values get auto json-encoded to match the vm
-          // behavior.
-          final args = {
-            'bool': true,
-            'list': [1, '2', 3],
-            'map': {'foo': 'bar'},
-            'num': 1.0,
-            'string': 'hello',
-            1: 2,
-            false: true,
-          };
-
-          final result = await service.callServiceExtension(
-            serviceMethod,
-            args: args,
-          );
-          expect(
-            result.json,
-            args.map(
-              (k, v) => MapEntry(
-                k is String ? k : jsonEncode(k),
-                v is String ? v : jsonEncode(v),
-              ),
-            ),
-          );
-        },
-        onPlatform: {
-          'windows': const Skip(
-            'https://github.com/dart-lang/webdev/issues/711',
-          ),
-        },
-      );
-
-      test(
-        'failure',
-        () async {
-          final serviceMethod = 'ext.test.callServiceExtensionWithError';
-          await context.tabConnection.runtime.evaluate(
-            'registerExtensionWithError("$serviceMethod");',
-          );
-
-          final errorDetails = {'intentional': 'error'};
-          expect(
-            service.callServiceExtension(
-              serviceMethod,
-              args: {'code': '-32001', 'details': jsonEncode(errorDetails)},
-            ),
-            throwsA(
-              predicate(
-                (dynamic error) =>
-                    error is RPCError &&
-                    error.code == -32001 &&
-                    error.details == jsonEncode(errorDetails),
-              ),
-            ),
-          );
-        },
-        onPlatform: {
-          'windows': const Skip(
-            'https://github.com/dart-lang/webdev/issues/711',
-          ),
-        },
-      );
-
-      test('not found', () async {
-        final serviceMethod = 'ext.test.missingServiceExtension';
-        expect(
-          service.callServiceExtension(serviceMethod),
-          throwsA(
-            predicate(
-              (dynamic error) =>
-                  error is RPCError &&
-                  error.code == RPCErrorKind.kMethodNotFound.code,
-            ),
-          ),
-        );
-      });
-    });
-
-    group('VMTimeline', () {
-      late VmServiceInterface service;
-
-      setUp(() {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-      });
-
-      test('clearVMTimeline', () async {
-        await expectLater(service.clearVMTimeline(), throwsRPCError);
-      });
-
-      test('getVMTimelineMicros', () async {
-        await expectLater(service.getVMTimelineMicros(), throwsRPCError);
-      });
-
-      test('getVMTimeline', () async {
-        await expectLater(service.getVMTimeline(), throwsRPCError);
-      });
-
-      test('getVMTimelineFlags', () async {
-        await expectLater(service.getVMTimelineFlags(), throwsRPCError);
-      });
-
-      test('setVMTimelineFlags', () async {
-        await expectLater(
-          service.setVMTimelineFlags(<String>[]),
-          throwsRPCError,
-        );
-      });
-    });
-
-    test('getMemoryUsage', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-
-      final memoryUsage = await service.getMemoryUsage(isolate.id!);
-
-      expect(memoryUsage.heapUsage, isNotNull);
-      expect(memoryUsage.heapUsage, greaterThan(0));
-      expect(memoryUsage.heapCapacity, greaterThan(0));
-      expect(memoryUsage.externalUsage, equals(0));
-    });
-
-    group('evaluate', () {
-      late VmServiceInterface service;
-      late Isolate isolate;
-      LibraryRef? bootstrap;
-
-      setUpAll(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        final vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        bootstrap = isolate.rootLib;
-      });
-
-      group('top level methods', () {
-        setUp(() {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('can return strings', () async {
-          expect(
-            await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              "helloString('world')",
-            ),
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.valueAsString,
-              'value',
-              'world',
-            ),
-          );
-        });
-
-        test('can return bools', () async {
-          expect(
-            await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'helloBool(true)',
-            ),
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.valueAsString,
-              'valueAsString',
-              'true',
-            ),
-          );
-          expect(
-            await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'helloBool(false)',
-            ),
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.valueAsString,
-              'valueAsString',
-              'false',
-            ),
-          );
-        });
-
-        test('can return nums', () async {
-          expect(
-            await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'helloNum(42.0)',
-            ),
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.valueAsString,
-              'valueAsString',
-              '42',
-            ),
-          );
-          expect(
-            await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'helloNum(42.2)',
-            ),
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.valueAsString,
-              'valueAsString',
-              '42.2',
-            ),
-          );
-        });
-
-        test('can return objects with ids', () async {
-          final object = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'createObject("cool")',
-          );
-          expect(
-            object,
-            const TypeMatcher<InstanceRef>().having(
-              (instance) => instance.id,
-              'id',
-              isNotNull,
-            ),
-          );
-          // TODO(jakemac): Add tests for the ClassRef once we create one,
-          // https://github.com/dart-lang/sdk/issues/36771.
-        });
-
-        group('with provided scope', () {
-          setUp(() {
-            setCurrentLogWriter(debug: provider.verbose);
-          });
-
-          Future<InstanceRef> createRemoteObject(String message) async {
-            return await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'createObject("$message")',
-            ) as InstanceRef;
-          }
-
-          test('single scope object', () async {
-            final instance = await createRemoteObject('A');
-            final result = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'messageFor(arg1)',
-              scope: {'arg1': instance.id!},
-            );
-            expect(
-              result,
-              const TypeMatcher<InstanceRef>().having(
-                (instance) => instance.valueAsString,
-                'valueAsString',
-                'A',
-              ),
-            );
-          });
-
-          test('multiple scope objects', () async {
-            final instance1 = await createRemoteObject('A');
-            final instance2 = await createRemoteObject('B');
-            final result = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'messagesCombined(arg1, arg2)',
-              scope: {'arg1': instance1.id!, 'arg2': instance2.id!},
-            );
-            expect(
-              result,
-              const TypeMatcher<InstanceRef>().having(
-                (instance) => instance.valueAsString,
-                'valueAsString',
-                'AB',
-              ),
-            );
-          });
-        });
-      });
-    });
-
-    test('evaluateInFrame', () async {
-      final service = context.service;
-      await expectLater(
-        service.evaluateInFrame('', 0, ''),
-        throwsSentinelException,
-      );
-    });
-
-    test('getAllocationProfile', () async {
-      final service = context.service;
-      await expectLater(service.getAllocationProfile(''), throwsRPCError);
-    });
-
-    test('getClassList', () async {
-      final service = context.service;
-      await expectLater(service.getClassList(''), throwsRPCError);
-    });
-
-    test('getFlagList', () async {
-      final service = context.service;
-      expect(await service.getFlagList(), isA<FlagList>());
-    });
-
-    test('getInstances', () async {
-      final service = context.service;
-      await expectLater(service.getInstances('', '', 0), throwsRPCError);
-    });
-
-    group('getIsolate', () {
-      late VmServiceInterface service;
-      setUp(() {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-      });
-
-      test('works for existing isolates', () async {
-        final vm = await service.getVM();
-        final result = await service.getIsolate(vm.isolates!.first.id!);
-        expect(result, const TypeMatcher<Isolate>());
-        final isolate = result;
-        expect(isolate.name, contains('main'));
-        // TODO: library names change with kernel dart-lang/sdk#36736
-        expect(isolate.rootLib!.uri, endsWith('.dart'));
-
-        expect(
-          isolate.libraries,
-          containsAll([
-            _libRef('package:path/path.dart'),
-            // TODO: library names change with kernel dart-lang/sdk#36736
-            _libRef(endsWith('main.dart')),
-          ]),
-        );
-        expect(isolate.extensionRPCs, contains('ext.hello_world.existing'));
-      });
-
-      test('throws for invalid ids', () async {
-        expect(service.getIsolate('bad'), throwsSentinelException);
-      });
-    });
-
-    group('getObject', () {
-      late ChromeProxyService service;
-      late Isolate isolate;
-      LibraryRef? bootstrap;
-
-      Library? rootLibrary;
-
-      setUpAll(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        final vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        bootstrap = isolate.rootLib;
-        rootLibrary =
-            await service.getObject(isolate.id!, bootstrap!.id!) as Library;
-      });
-
-      setUp(() {
-        setCurrentLogWriter(debug: provider.verbose);
-      });
-
-      test('root Library', () async {
-        expect(rootLibrary, isNotNull);
-        // TODO: library names change with kernel dart-lang/sdk#36736
-        expect(rootLibrary!.uri, endsWith('main.dart'));
-        expect(rootLibrary!.classes, hasLength(1));
-        final testClass = rootLibrary!.classes!.first;
-        expect(testClass.name, 'MyTestClass');
-      });
-
-      test('Library only contains included scripts', () async {
-        final library =
-            await service.getObject(isolate.id!, rootLibrary!.id!) as Library;
-        expect(library.scripts, hasLength(2));
-        expect(
-          library.scripts,
-          unorderedEquals([
-            predicate(
-              (ScriptRef s) =>
-                  s.uri == 'org-dartlang-app:///example/hello_world/main.dart',
-            ),
-            predicate(
-              (ScriptRef s) =>
-                  s.uri == 'org-dartlang-app:///example/hello_world/part.dart',
-            ),
-          ]),
-        );
-      });
-
-      test('Can get the same library in parallel', () async {
-        final futures = [
-          service.getObject(isolate.id!, rootLibrary!.id!),
-          service.getObject(isolate.id!, rootLibrary!.id!),
-        ];
-        final results = await Future.wait(futures);
-        final library1 = results[0] as Library;
-        final library2 = results[1] as Library;
-        expect(library1, equals(library2));
-      });
-
-      test('Classes', () async {
-        final testClass = await service.getObject(
-          isolate.id!,
-          rootLibrary!.classes!.first.id!,
-        ) as Class;
-        expect(
-          testClass.functions,
-          unorderedEquals([
-            predicate((FuncRef f) => f.name == 'staticHello' && f.isStatic!),
-            predicate((FuncRef f) => f.name == 'hello' && !f.isStatic!),
-            predicate((FuncRef f) => f.name == 'hashCode' && !f.isStatic!),
-            predicate((FuncRef f) => f.name == 'runtimeType' && !f.isStatic!),
-          ]),
-        );
-        expect(
-          testClass.fields,
-          unorderedEquals([
-            predicate(
-              (FieldRef f) =>
-                  f.name == 'message' &&
-                  f.declaredType != null &&
-                  !f.isStatic! &&
-                  !f.isConst! &&
-                  f.isFinal!,
-            ),
-            predicate(
-              (FieldRef f) =>
-                  f.name == 'notFinal' &&
-                  f.declaredType != null &&
-                  !f.isStatic! &&
-                  !f.isConst! &&
-                  !f.isFinal!,
-            ),
-            predicate(
-              (FieldRef f) =>
-                  f.name == 'staticMessage' &&
-                  f.declaredType != null &&
-                  f.isStatic! &&
-                  !f.isConst! &&
-                  !f.isFinal!,
-            ),
-          ]),
-        );
-      });
-
-      test('Runtime classes', () async {
-        final testClass = await service.getObject(
-          isolate.id!,
-          'classes|dart:_runtime|_Type',
-        ) as Class;
-        expect(testClass.name, '_Type');
-      });
-
-      test('String', () async {
-        final worldRef = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          "helloString('world')",
-        ) as InstanceRef;
-        final world =
-            await service.getObject(isolate.id!, worldRef.id!) as Instance;
-        expect(world.valueAsString, 'world');
-      });
-
-      test('Large strings not truncated', () async {
-        final largeString = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          "helloString('${'abcde' * 250}')",
-        ) as InstanceRef;
-        expect(largeString.valueAsStringIsTruncated, isNot(isTrue));
-        expect(largeString.valueAsString!.length, largeString.length);
-        expect(largeString.length, 5 * 250);
-      });
-
-      test('Lists', () async {
-        final list = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          'topLevelList',
-        ) as InstanceRef;
-        final inst = await service.getObject(isolate.id!, list.id!) as Instance;
-        expect(inst.length, 1001);
-        expect(inst.offset, null);
-        expect(inst.count, null);
-        expect(inst.elements!.length, 1001);
-        final fifth = inst.elements![4] as InstanceRef;
-        expect(fifth.valueAsString, '100');
-        final sixth = inst.elements![5] as InstanceRef;
-        expect(sixth.valueAsString, '5');
-      });
-
-      test('Maps', () async {
-        final map = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          'topLevelMap',
-        ) as InstanceRef;
-        final inst = await service.getObject(isolate.id!, map.id!) as Instance;
-        expect(inst.length, 1001);
-        expect(inst.offset, null);
-        expect(inst.count, null);
-        expect(inst.associations!.length, 1001);
-        final fifth = inst.associations![4];
-        expect((fifth.key as InstanceRef).valueAsString, '4');
-        expect((fifth.value as InstanceRef).valueAsString, '996');
-        final sixth = inst.associations![5];
-        expect((sixth.key as InstanceRef).valueAsString, '5');
-        expect((sixth.value as InstanceRef).valueAsString, '995');
-      });
-
-      test('bool', () async {
-        final ref = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloBool(true)',
-        ) as InstanceRef;
-        final obj = await service.getObject(isolate.id!, ref.id!) as Instance;
-        expect(obj.kind, InstanceKind.kBool);
-        expect(obj.classRef!.name, 'Bool');
-        expect(obj.valueAsString, 'true');
-      });
-
-      test('num', () async {
-        final ref = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloNum(42)',
-        ) as InstanceRef;
-        final obj = await service.getObject(isolate.id!, ref.id!) as Instance;
-        expect(obj.kind, InstanceKind.kDouble);
-        expect(obj.classRef!.name, 'Double');
-        expect(obj.valueAsString, '42');
-      });
-
-      test('Scripts', () async {
-        final scripts = await service.getScripts(isolate.id!);
-        assert(scripts.scripts!.isNotEmpty);
-        for (final scriptRef in scripts.scripts!) {
-          final script =
-              await service.getObject(isolate.id!, scriptRef.id!) as Script;
-          final serverPath = DartUri(script.uri!, '').serverPath;
-          final result = await http.get(
-            Uri.parse('http://localhost:${context.port}/$serverPath'),
-          );
-          expect(script.source, utf8.decode(result.bodyBytes));
-          expect(scriptRef.uri, endsWith('.dart'));
-          expect(script.tokenPosTable, isNotEmpty);
-        }
-      });
-
-      group('getObject called with offset/count parameters', () {
-        test('Lists with null offset and count are not truncated', () async {
-          final list = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelList',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            list.id!,
-            count: null,
-            offset: null,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, null);
-          expect(inst.count, null);
-          expect(inst.elements!.length, 1001);
-          final fifth = inst.elements![4] as InstanceRef;
-          expect(fifth.valueAsString, '100');
-          final sixth = inst.elements![5] as InstanceRef;
-          expect(sixth.valueAsString, '5');
-        });
-
-        test('Lists with null count are not truncated', () async {
-          final list = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelList',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            list.id!,
-            count: null,
-            offset: 0,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 0);
-          expect(inst.count, null);
-          expect(inst.elements!.length, 1001);
-          final fifth = inst.elements![4] as InstanceRef;
-          expect(fifth.valueAsString, '100');
-          final sixth = inst.elements![5] as InstanceRef;
-          expect(sixth.valueAsString, '5');
-        });
-
-        test('Lists with null count and offset greater than 0 are '
-            'truncated from offset to end of list', () async {
-          final list = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelList',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            list.id!,
-            count: null,
-            offset: 1000,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 1000);
-          expect(inst.count, null);
-          expect(inst.elements!.length, 1);
-          final only = inst.elements![0] as InstanceRef;
-          expect(only.valueAsString, '5');
-        });
-
-        test('Lists with offset/count are truncated', () async {
-          final list = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelList',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            list.id!,
-            count: 7,
-            offset: 4,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 4);
-          expect(inst.count, 7);
-          expect(inst.elements!.length, 7);
-          final fifth = inst.elements![0] as InstanceRef;
-          expect(fifth.valueAsString, '100');
-          final sixth = inst.elements![1] as InstanceRef;
-          expect(sixth.valueAsString, '5');
-        });
-
-        test(
-          'Lists are truncated to the end if offset/count runs off the end',
-          () async {
-            final list = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelList',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              list.id!,
-              count: 5,
-              offset: 1000,
-            ) as Instance;
-            expect(inst.length, 1001);
-            expect(inst.offset, 1000);
-            expect(inst.count, 1);
-            expect(inst.elements!.length, 1);
-            final only = inst.elements![0] as InstanceRef;
-            expect(only.valueAsString, '5');
-          },
-        );
-
-        test(
-          'Lists are truncated to empty if offset runs off the end',
-          () async {
-            final list = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelList',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              list.id!,
-              count: 5,
-              offset: 1002,
-            ) as Instance;
-            expect(inst.elements!.length, 0);
-            expect(inst.length, 1001);
-            expect(inst.offset, 1002);
-            expect(inst.count, 0);
-            expect(inst.elements!.length, 0);
-          },
-        );
-
-        test(
-          'Lists are truncated to empty with 0 count and null offset',
-          () async {
-            final list = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelList',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              list.id!,
-              count: 0,
-              offset: null,
-            ) as Instance;
-            expect(inst.elements!.length, 0);
-            expect(inst.length, 1001);
-            expect(inst.offset, null);
-            expect(inst.count, 0);
-            expect(inst.elements!.length, 0);
-          },
-        );
-
-        test('Maps with null offset/count are not truncated', () async {
-          final map = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelMap',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            map.id!,
-            count: null,
-            offset: null,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, null);
-          expect(inst.count, null);
-          expect(inst.associations!.length, 1001);
-          final fifth = inst.associations![4];
-          expect((fifth.key as InstanceRef).valueAsString, '4');
-          expect((fifth.value as InstanceRef).valueAsString, '996');
-          final sixth = inst.associations![5];
-          expect((sixth.key as InstanceRef).valueAsString, '5');
-          expect((sixth.value as InstanceRef).valueAsString, '995');
-        });
-
-        test('Maps with null count and offset greater than 0 are '
-            'truncated from offset to end of map', () async {
-          final map = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelMap',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            map.id!,
-            count: null,
-            offset: 1000,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 1000);
-          expect(inst.count, null);
-          expect(inst.associations!.length, 1);
-          final only = inst.associations![0];
-          expect((only.key as InstanceRef).valueAsString, '1000');
-          expect((only.value as InstanceRef).valueAsString, '0');
-        });
-
-        test('Maps with null count are not truncated', () async {
-          final map = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelMap',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            map.id!,
-            count: null,
-            offset: 0,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 0);
-          expect(inst.count, null);
-          expect(inst.associations!.length, 1001);
-          final fifth = inst.associations![4];
-          expect((fifth.key as InstanceRef).valueAsString, '4');
-          expect((fifth.value as InstanceRef).valueAsString, '996');
-          final sixth = inst.associations![5];
-          expect((sixth.key as InstanceRef).valueAsString, '5');
-          expect((sixth.value as InstanceRef).valueAsString, '995');
-        });
-
-        test('Maps with offset/count are truncated', () async {
-          final map = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'topLevelMap',
-          ) as InstanceRef;
-          final inst = await service.getObject(
-            isolate.id!,
-            map.id!,
-            count: 7,
-            offset: 4,
-          ) as Instance;
-          expect(inst.length, 1001);
-          expect(inst.offset, 4);
-          expect(inst.count, 7);
-          expect(inst.associations!.length, 7);
-          final fifth = inst.associations![0];
-          expect((fifth.key as InstanceRef).valueAsString, '4');
-          expect((fifth.value as InstanceRef).valueAsString, '996');
-          final sixth = inst.associations![1];
-          expect((sixth.key as InstanceRef).valueAsString, '5');
-          expect((sixth.value as InstanceRef).valueAsString, '995');
-        });
-
-        test(
-          'Maps are truncated to the end if offset/count runs off the end',
-          () async {
-            final map = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelMap',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              map.id!,
-              count: 5,
-              offset: 1000,
-            ) as Instance;
-            expect(inst.length, 1001);
-            expect(inst.offset, 1000);
-            expect(inst.count, 1);
-            expect(inst.associations!.length, 1);
-            final only = inst.associations![0];
-            expect((only.key as InstanceRef).valueAsString, '1000');
-            expect((only.value as InstanceRef).valueAsString, '0');
-          },
-        );
-
-        test(
-          'Maps are truncated to empty if offset runs off the end',
-          () async {
-            final map = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelMap',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              map.id!,
-              count: 5,
-              offset: 1002,
-            ) as Instance;
-            expect(inst.associations!.length, 0);
-            expect(inst.length, 1001);
-            expect(inst.offset, 1002);
-            expect(inst.count, 0);
-            expect(inst.associations!.length, 0);
-          },
-        );
-
-        test('Strings with offset/count are truncated', () async {
-          final worldRef = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            "helloString('world')",
-          ) as InstanceRef;
-          final world = await service.getObject(
-            isolate.id!,
-            worldRef.id!,
-            count: 2,
-            offset: 1,
-          ) as Instance;
-          expect(world.valueAsString, 'or');
-          expect(world.count, 2);
-          expect(world.length, 5);
-          expect(world.offset, 1);
-        });
-
-        test(
-          'Maps are truncated to empty if offset runs off the end',
-          () async {
-            final map = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelMap',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              map.id!,
-              count: 5,
-              offset: 1002,
-            ) as Instance;
-            expect(inst.associations!.length, 0);
-            expect(inst.length, 1001);
-            expect(inst.offset, 1002);
-            expect(inst.count, 0);
-            expect(inst.associations!.length, 0);
-          },
-        );
-
-        test(
-          'Maps are truncated to empty with 0 count and null offset',
-          () async {
-            final map = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              'topLevelMap',
-            ) as InstanceRef;
-            final inst = await service.getObject(
-              isolate.id!,
-              map.id!,
-              count: 0,
-              offset: null,
-            ) as Instance;
-            expect(inst.associations!.length, 0);
-            expect(inst.length, 1001);
-            expect(inst.offset, null);
-            expect(inst.count, 0);
-            expect(inst.associations!.length, 0);
-          },
-        );
-
-        test(
-          'Strings are truncated to the end if offset/count runs off the end',
-          () async {
-            final worldRef = await service.evaluate(
-              isolate.id!,
-              bootstrap!.id!,
-              "helloString('world')",
-            ) as InstanceRef;
-            final world = await service.getObject(
-              isolate.id!,
-              worldRef.id!,
-              count: 5,
-              offset: 3,
-            ) as Instance;
-            expect(world.valueAsString, 'ld');
-            expect(world.count, 2);
-            expect(world.length, 5);
-            expect(world.offset, 3);
-          },
-        );
-
-        test(
-          'offset/count parameters greater than zero are ignored for Classes',
-          () async {
-            final testClass = await service.getObject(
-              isolate.id!,
-              rootLibrary!.classes!.first.id!,
-              offset: 100,
-              count: 100,
-            ) as Class;
-            expect(
-              testClass.functions,
-              unorderedEquals([
-                predicate(
-                  (FuncRef f) => f.name == 'staticHello' && f.isStatic!,
-                ),
-                predicate((FuncRef f) => f.name == 'hello' && !f.isStatic!),
-                predicate((FuncRef f) => f.name == 'hashCode' && !f.isStatic!),
-                predicate(
-                  (FuncRef f) => f.name == 'runtimeType' && !f.isStatic!,
-                ),
-              ]),
-            );
-            expect(
-              testClass.fields,
-              unorderedEquals([
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'message' &&
-                      f.declaredType != null &&
-                      !f.isStatic! &&
-                      !f.isConst! &&
-                      f.isFinal!,
-                ),
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'notFinal' &&
-                      f.declaredType != null &&
-                      !f.isStatic! &&
-                      !f.isConst! &&
-                      !f.isFinal!,
-                ),
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'staticMessage' &&
-                      f.declaredType != null &&
-                      f.isStatic! &&
-                      !f.isConst! &&
-                      !f.isFinal!,
-                ),
-              ]),
-            );
-          },
-        );
-
-        test(
-          'offset/count parameters equal to zero are ignored for Classes',
-          () async {
-            final testClass = await service.getObject(
-              isolate.id!,
-              rootLibrary!.classes!.first.id!,
-              offset: 0,
-              count: 0,
-            ) as Class;
-            expect(
-              testClass.functions,
-              unorderedEquals([
-                predicate(
-                  (FuncRef f) => f.name == 'staticHello' && f.isStatic!,
-                ),
-                predicate((FuncRef f) => f.name == 'hello' && !f.isStatic!),
-                predicate((FuncRef f) => f.name == 'hashCode' && !f.isStatic!),
-                predicate(
-                  (FuncRef f) => f.name == 'runtimeType' && !f.isStatic!,
-                ),
-              ]),
-            );
-            expect(
-              testClass.fields,
-              unorderedEquals([
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'message' &&
-                      f.declaredType != null &&
-                      !f.isStatic! &&
-                      !f.isConst! &&
-                      f.isFinal!,
-                ),
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'notFinal' &&
-                      f.declaredType != null &&
-                      !f.isStatic! &&
-                      !f.isConst! &&
-                      !f.isFinal!,
-                ),
-                predicate(
-                  (FieldRef f) =>
-                      f.name == 'staticMessage' &&
-                      f.declaredType != null &&
-                      f.isStatic! &&
-                      !f.isConst! &&
-                      !f.isFinal!,
-                ),
-              ]),
-            );
-          },
-        );
-
-        test('offset/count parameters are ignored for bools', () async {
-          final ref = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'helloBool(true)',
-          ) as InstanceRef;
-          final obj = await service.getObject(
-            isolate.id!,
-            ref.id!,
-            offset: 100,
-            count: 100,
-          ) as Instance;
-          expect(obj.kind, InstanceKind.kBool);
-          expect(obj.classRef!.name, 'Bool');
-          expect(obj.valueAsString, 'true');
-        });
-
-        test('offset/count parameters are ignored for nums', () async {
-          final ref = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'helloNum(42)',
-          ) as InstanceRef;
-          final obj = await service.getObject(
-            isolate.id!,
-            ref.id!,
-            offset: 100,
-            count: 100,
-          ) as Instance;
-          expect(obj.kind, InstanceKind.kDouble);
-          expect(obj.classRef!.name, 'Double');
-          expect(obj.valueAsString, '42');
-        });
-
-        test('offset/count parameters are ignored for null', () async {
-          final ref = await service.evaluate(
-            isolate.id!,
-            bootstrap!.id!,
-            'helloNum(null)',
-          ) as InstanceRef;
-          final obj = await service.getObject(
-            isolate.id!,
-            ref.id!,
-            offset: 100,
-            count: 100,
-          ) as Instance;
-          expect(obj.kind, InstanceKind.kNull);
-          expect(obj.classRef!.name, 'Null');
-          expect(obj.valueAsString, 'null');
-        });
-      });
-    });
-
-    test('getScripts', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-      expect(scripts, isNotNull);
-      expect(scripts.scripts, isNotEmpty);
-
-      final scriptUris = scripts.scripts!.map((s) => s.uri);
-
-      // Contains main script only once.
-      expect(
-        scriptUris.where((uri) => uri!.contains('hello_world/main.dart')),
-        hasLength(1),
-      );
-
-      // Contains a known script.
-      expect(scriptUris, contains('package:path/path.dart'));
-
-      // Contains part files as well.
-      expect(scriptUris, contains(endsWith('part.dart')));
-      expect(
-        scriptUris,
-        contains('package:intl/src/date_format_internal.dart'),
-      );
-    });
-
-    group('getSourceReport', () {
-      late VmServiceInterface service;
-
-      setUp(() {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-      });
-
-      test('Coverage report', () async {
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-
-        await expectLater(
-          service.getSourceReport(isolateId, ['Coverage']),
-          throwsRPCError,
-        );
-      });
-
-      test('Coverage report', () async {
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-
-        await expectLater(
-          service.getSourceReport(
-            isolateId,
-            ['Coverage'],
-            libraryFilters: ['foo'],
-          ),
-          throwsRPCError,
-        );
-      });
-
-      test('report type not understood', () async {
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-
-        await expectLater(
-          service.getSourceReport(isolateId, ['FooBar']),
-          throwsRPCError,
-        );
-      });
-
-      test('PossibleBreakpoints report', () async {
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-        final scripts = await service.getScripts(isolateId);
-        final mainScript = scripts.scripts!.firstWhere(
-          (script) => script.uri!.contains('main.dart'),
-        );
-
-        final sourceReport = await service.getSourceReport(isolateId, [
-          'PossibleBreakpoints',
-        ], scriptId: mainScript.id);
-
-        expect(sourceReport.scripts, isNotEmpty);
-        expect(sourceReport.ranges, isNotEmpty);
-
-        final sourceReportRange = sourceReport.ranges!.first;
-        expect(sourceReportRange.possibleBreakpoints, isNotEmpty);
-      });
-    });
-
-    group('Pausing', () {
-      late VmServiceInterface service;
-      String? isolateId;
-      late Stream<Event> stream;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        final vm = await service.getVM();
-        isolateId = vm.isolates!.first.id;
-        scripts = await service.getScripts(isolateId!);
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-        mainScript = scripts.scripts!.firstWhere(
-          (script) => script.uri!.contains('main.dart'),
-        );
-      });
-
-      test('at breakpoints sets pauseBreakPoints', () async {
-        final line = await context.findBreakpointLine(
-          'callPrintCount',
-          isolateId!,
-          mainScript,
-        );
-        final bp = await service.addBreakpoint(
-          isolateId!,
-          mainScript.id!,
-          line,
-        );
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-        final pauseBreakpoints = event.pauseBreakpoints!;
-        expect(pauseBreakpoints, hasLength(1));
-        expect(pauseBreakpoints.first.id, bp.id);
-        await service.removeBreakpoint(isolateId!, bp.id!);
-        // Resume execution to not impact other tests.
-        await service.resume(isolateId!);
-      });
-
-      test(
-        'resuming throws kIsolateMustBePaused error if not paused',
-        () async {
-          await expectLater(
-            service.resume(isolateId!),
-            throwsRPCErrorWithCode(RPCErrorKind.kIsolateMustBePaused.code),
-          );
-        },
-      );
-    });
-
-    group('Step', () {
-      late VmServiceInterface service;
-      String? isolateId;
-      late Stream<Event> stream;
-      ScriptList scripts;
-      ScriptRef mainScript;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        final vm = await service.getVM();
-        isolateId = vm.isolates!.first.id;
-        scripts = await service.getScripts(isolateId!);
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-        mainScript = scripts.scripts!.firstWhere(
-          (script) => script.uri!.contains('main.dart'),
-        );
-        final line = await context.findBreakpointLine(
-          'callPrintCount',
-          isolateId!,
-          mainScript,
-        );
-        final bp = await service.addBreakpoint(
-          isolateId!,
-          mainScript.id!,
-          line,
-        );
-        // Wait for breakpoint to trigger.
-        await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-        await service.removeBreakpoint(isolateId!, bp.id!);
-      });
-
-      tearDown(() async {
-        // Resume execution to not impact other tests.
-        await service.resume(isolateId!);
-      });
-
-      test('Into goes to the next Dart location', () async {
-        await service.resume(isolateId!, step: 'Into');
-        // Wait for the step to actually occur.
-        await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseInterrupted,
-        );
-        final stack = await service.getStack(isolateId!);
-        expect(stack, isNotNull);
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-        expect(first.code!.name, 'printCount');
-      });
-
-      test('Over goes to the next Dart location', () async {
-        await service.resume(isolateId!, step: 'Over');
-        // Wait for the step to actually occur.
-        await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseInterrupted,
-        );
-        final stack = await service.getStack(isolateId!);
-        expect(stack, isNotNull);
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-        expect(first.code!.name, '<closure>');
-      });
-
-      test('Out goes to the next Dart location', () async {
-        await service.resume(isolateId!, step: 'Out');
-        // Wait for the step to actually occur.
-        await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseInterrupted,
-        );
-        final stack = await service.getStack(isolateId!);
-        expect(stack, isNotNull);
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-        expect(first.code!.name, '<closure>');
-      });
-    });
-
-    group('getStack', () {
-      late VmServiceInterface service;
-      String? isolateId;
-      late Stream<Event> stream;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        final vm = await service.getVM();
-        isolateId = vm.isolates!.first.id;
-        scripts = await service.getScripts(isolateId!);
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-        mainScript = scripts.scripts!.firstWhere(
-          (ScriptRef each) => each.uri!.contains('main.dart'),
-        );
-      });
-
-      test(
-        'throws if not paused',
-        () async {
-          await expectLater(service.getStack(isolateId!), throwsRPCError);
-        },
-        skip: Platform.isWindows ? true : null,
-      ); // Issue: https://github.com/dart-lang/webdev/issues/1749
-
-      /// Support function for pausing and returning the stack at a line.
-      Future<Stack> breakAt(String breakpointId, {int? limit}) async {
-        final line = await context.findBreakpointLine(
-          breakpointId,
-          isolateId!,
-          mainScript,
-        );
-        Breakpoint? bp;
-        try {
-          bp = await service.addBreakpoint(isolateId!, mainScript.id!, line);
-          // Wait for breakpoint to trigger.
-          await stream.firstWhere(
-            (event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-          return await service.getStack(isolateId!, limit: limit);
-        } finally {
-          // Remove breakpoint and resume so it doesn't impact other tests.
-          if (bp != null) {
-            await service.removeBreakpoint(isolateId!, bp.id!);
-          }
-          await service.resume(isolateId!);
-        }
-      }
-
-      test('returns stack when broken', () async {
-        final stack = await breakAt('inPrintCount');
-        expect(stack, isNotNull);
-        expect(stack.frames, hasLength(2));
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-        expect(first.code!.name, 'printCount');
-      });
-
-      test('stack has a variable', () async {
-        final stack = await breakAt('callPrintCount');
-        expect(stack, isNotNull);
-        expect(stack.frames, hasLength(1));
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-        expect(first.code!.name, '<closure>');
-        // TODO: Make this more precise once this case doesn't
-        // also include all the libraries.
-        expect(first.vars, hasLength(greaterThanOrEqualTo(1)));
-        final underscore = first.vars!.firstWhere((v) => v.name == 'timer');
-        expect(underscore, isNotNull);
-      });
-
-      test('collects async frames', () async {
-        final stack = await breakAt('asyncCall');
-        expect(stack, isNotNull);
-        expect(stack.frames, hasLength(greaterThan(1)));
-
-        final first = stack.frames!.first;
-        expect(first.kind, 'Regular');
-        expect(first.code!.kind, 'Dart');
-
-        // We should have an async marker.
-        final suspensionFrames = stack.frames!.where(
-          (frame) => frame.kind == FrameKind.kAsyncSuspensionMarker,
-        );
-        expect(suspensionFrames, isNotEmpty);
-
-        // We should have async frames.
-        final asyncFrames = stack.frames!.where(
-          (frame) => frame.kind == FrameKind.kAsyncCausal,
-        );
-        expect(asyncFrames, isNotEmpty);
-      });
-
-      test(
-        'returns the correct number of frames when a limit is provided',
-        () async {
-          var stack = await breakAt('asyncCall', limit: 4);
-          expect(stack, isNotNull);
-          expect(stack.frames, hasLength(equals(4)));
-          stack = await breakAt('asyncCall', limit: 2);
-          expect(stack, isNotNull);
-          expect(stack.frames, hasLength(equals(2)));
-          stack = await breakAt('asyncCall');
-          expect(stack, isNotNull);
-          expect(stack.frames, hasLength(equals(5)));
-        },
-      );
-
-      test('truncated stacks are properly indicated', () async {
-        var stack = await breakAt('asyncCall', limit: 3);
-        expect(stack, isNotNull);
-        expect(stack.truncated, isTrue);
-        stack = await breakAt('asyncCall');
-        expect(stack, isNotNull);
-        expect(stack.truncated, isFalse);
-        stack = await breakAt('asyncCall', limit: 20000);
-        expect(stack, isNotNull);
-        expect(stack.truncated, isFalse);
-      });
-
-      test('break on exceptions with setIsolatePauseMode', () async {
-        final oldPauseMode = (await service.getIsolate(isolateId!))
-            .exceptionPauseMode;
-        await service.setIsolatePauseMode(
-          isolateId!,
-          exceptionPauseMode: ExceptionPauseMode.kAll,
-        );
-        // Wait for pausing to actually propagate.
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseException,
-        );
-        expect(event.exception, isNotNull);
-        // Check that the exception stack trace has been mapped to Dart source
-        // files.
-        expect(event.exception!.valueAsString, contains('main.dart'));
-
-        final stack = await service.getStack(isolateId!);
-        expect(stack, isNotNull);
-
-        await service.setIsolatePauseMode(
-          isolateId!,
-          exceptionPauseMode: oldPauseMode,
-        );
-        await service.resume(isolateId!);
-      });
-
-      test('returns non-null stack when paused', () async {
-        await service.pause(isolateId!);
-        // Wait for pausing to actually propagate.
-        await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseInterrupted,
-        );
-        expect(await service.getStack(isolateId!), isNotNull);
-        // Resume the isolate to not impact other tests.
-        await service.resume(isolateId!);
-      });
-    });
-
-    test('getVM', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      expect(vm.name, isNotNull);
-      expect(vm.version, Platform.version);
-      expect(vm.isolates, hasLength(1));
-      final isolate = vm.isolates!.first;
-      expect(isolate.id, isNotNull);
-      expect(isolate.name, isNotNull);
-      expect(isolate.number, isNotNull);
-    });
-
-    test('getVersion', () async {
-      final service = context.service;
-      final version = await service.getVersion();
-      expect(version, isNotNull);
-      expect(version.major, greaterThan(0));
-    });
-
-    group('invoke', () {
-      late ChromeProxyService service;
-      VM vm;
-      late Isolate isolate;
-      LibraryRef? bootstrap;
-      late InstanceRef testInstance;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        bootstrap = isolate.rootLib;
-        testInstance = await service.evaluate(
-          isolate.id!,
-          bootstrap!.id!,
-          'myInstance',
-        ) as InstanceRef;
-      });
-
-      test('rootLib', () async {
-        expect(
-          bootstrap,
-          const TypeMatcher<LibraryRef>().having(
-            (library) => library.name,
-            'name',
-            'org-dartlang-app:///example/hello_world/main.dart',
-          ),
-        );
-      });
-
-      test('toString()', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          testInstance.id!,
-          'toString',
-          [],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'toString()',
-            "Instance of 'MyTestClass'",
-          ),
-        );
-      });
-
-      test('hello()', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          testInstance.id!,
-          'hello',
-          [],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'hello()',
-            'world',
-          ),
-        );
-      });
-
-      test('helloString', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloString',
-          ['#StringInstanceRef#abc'],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'helloString',
-            'abc',
-          ),
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.kind,
-            'kind',
-            'String',
-          ),
-        );
-      });
-
-      test('null argument', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloString',
-          ['objects/null'],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'helloString',
-            'null',
-          ),
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.kind,
-            'kind',
-            'Null',
-          ),
-        );
-      });
-
-      test('helloBool', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloBool',
-          ['objects/bool-true'],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'helloBool',
-            'true',
-          ),
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.kind,
-            'kind',
-            'Bool',
-          ),
-        );
-      });
-
-      test('helloNum', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          bootstrap!.id!,
-          'helloNum',
-          ['objects/int-123'],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'helloNum',
-            '123',
-          ),
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.kind,
-            'kind',
-            'Double',
-          ),
-        );
-      });
-
-      test('two object arguments', () async {
-        final remote = await service.invoke(
-          isolate.id!,
-          bootstrap!.id!,
-          'messagesCombined',
-          [testInstance.id, testInstance.id],
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'messagesCombined',
-            'worldworld',
-          ),
-        );
-        expect(
-          remote,
-          const TypeMatcher<InstanceRef>().having(
-            (instance) => instance.kind,
-            'kind',
-            'String',
-          ),
-        );
-      });
-    });
-
-    test('kill', () async {
-      final service = context.service;
-      await expectLater(service.kill(''), throwsRPCError);
-    });
-
-    test('onEvent', () async {
-      final service = context.service;
-      expect(() => service.onEvent(''), throwsRPCError);
-    });
-
-    test('pause / resume', () async {
-      final service = context.service;
-      await service.streamListen('Debug');
-      final stream = service.onEvent('Debug');
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final pauseCompleter = Completer<void>();
-      final pauseSub = context.tabConnection.debugger.onPaused.listen((_) {
-        pauseCompleter.complete();
-      });
-      final resumeCompleter = Completer<void>();
-      final resumeSub = context.tabConnection.debugger.onResumed.listen((_) {
-        resumeCompleter.complete();
-      });
-      expect(await service.pause(isolateId), const TypeMatcher<Success>());
-      await stream.firstWhere(
-        (event) => event.kind == EventKind.kPauseInterrupted,
-      );
-      expect(
-        (await service.getIsolate(isolateId)).pauseEvent!.kind,
-        EventKind.kPauseInterrupted,
-      );
-      await pauseCompleter.future;
-      expect(await service.resume(isolateId), const TypeMatcher<Success>());
-      await stream.firstWhere((event) => event.kind == EventKind.kResume);
-      expect(
-        (await service.getIsolate(isolateId)).pauseEvent!.kind,
-        EventKind.kResume,
-      );
-      await resumeCompleter.future;
-      await pauseSub.cancel();
-      await resumeSub.cancel();
-    });
-
-    test('getInboundReferences', () async {
-      final service = context.service;
-      await expectLater(
-        service.getInboundReferences('', '', 0),
-        throwsRPCError,
-      );
-    });
-
-    test('getRetainingPath', () async {
-      final service = context.service;
-      await expectLater(service.getRetainingPath('', '', 0), throwsRPCError);
-    });
-
-    test(
-      'lookupResolvedPackageUris converts package and org-dartlang-app uris',
-      () async {
-        final service = context.service;
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-        final scriptList = await service.getScripts(isolateId);
-
-        final uris = scriptList.scripts!.map((e) => e.uri!).toList();
-        final resolvedUris = await service.lookupResolvedPackageUris(
-          isolateId,
-          uris,
-        );
-
-        expect(
-          resolvedUris.uris,
-          containsAll([
-            contains('/_test/example/hello_world/main.dart'),
-            contains('/lib/path.dart'),
-            contains('/lib/src/path_set.dart'),
-          ]),
-        );
-      },
-    );
-
-    test(
-      'lookupResolvedPackageUris does not translate non-existent paths',
-      () async {
-        final service = context.service;
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-
-        final resolvedUris = await service.lookupResolvedPackageUris(
-          isolateId,
-          [
-            'package:does/not/exist.dart',
-            'dart:does_not_exist',
-            'file:///does_not_exist.dart',
-          ],
-        );
-        expect(resolvedUris.uris, [null, null, null]);
-      },
-    );
-
-    test('lookupResolvedPackageUris translates dart uris', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-
-      final resolvedUris = await service.lookupResolvedPackageUris(isolateId, [
-        'dart:html',
-        'dart:async',
-      ]);
-
-      expect(resolvedUris.uris, [
-        'org-dartlang-sdk:///sdk/lib/html/dart2js/html_dart2js.dart',
-        'org-dartlang-sdk:///sdk/lib/async/async.dart',
-      ]);
-    }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-
-    test(
-      'lookupPackageUris finds package and org-dartlang-app paths',
-      () async {
-        final service = context.service;
-        final vm = await service.getVM();
-        final isolateId = vm.isolates!.first.id!;
-        final scriptList = await service.getScripts(isolateId);
-
-        final uris = scriptList.scripts!.map((e) => e.uri!).toList();
-        final resolvedUris = await service.lookupResolvedPackageUris(
-          isolateId,
-          uris,
-        );
-
-        final packageUris = await service.lookupPackageUris(
-          isolateId,
-          List<String>.from(resolvedUris.uris!),
-        );
-        expect(
-          packageUris.uris,
-          containsAll([
-            'org-dartlang-app:///example/hello_world/main.dart',
-            'package:path/path.dart',
-            'package:path/src/path_set.dart',
-          ]),
-        );
-      },
-    );
-
-    test('lookupPackageUris ignores local parameter', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final scriptList = await service.getScripts(isolateId);
-
-      final uris = scriptList.scripts!.map((e) => e.uri!).toList();
-      final resolvedUrisWithLocal = await service.lookupResolvedPackageUris(
-        isolateId,
-        uris,
-        local: true,
-      );
-
-      final packageUrisWithLocal = await service.lookupPackageUris(
-        isolateId,
-        List<String>.from(resolvedUrisWithLocal.uris!),
-      );
-      expect(
-        packageUrisWithLocal.uris,
-        containsAll([
-          'org-dartlang-app:///example/hello_world/main.dart',
-          'package:path/path.dart',
-          'package:path/src/path_set.dart',
-        ]),
-      );
-
-      final resolvedUrisWithoutLocal = await service.lookupResolvedPackageUris(
-        isolateId,
-        uris,
-        local: true,
-      );
-
-      final packageUrisWithoutLocal = await service.lookupPackageUris(
-        isolateId,
-        List<String>.from(resolvedUrisWithoutLocal.uris!),
-      );
-      expect(
-        packageUrisWithoutLocal.uris,
-        containsAll([
-          'org-dartlang-app:///example/hello_world/main.dart',
-          'package:path/path.dart',
-          'package:path/src/path_set.dart',
-        ]),
-      );
-    });
-
-    test('lookupPackageUris does not translate non-existent paths', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-
-      final resolvedUris = await service.lookupPackageUris(isolateId, [
-        'org-dartlang-sdk:///sdk/does/not/exist.dart',
-        'does_not_exist.dart',
-        'file:///does_not_exist.dart',
-      ]);
-      expect(resolvedUris.uris, [null, null, null]);
-    });
-
-    test('lookupPackageUris translates dart uris', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-
-      final resolvedUris = await service.lookupPackageUris(isolateId, [
-        'org-dartlang-sdk:///sdk/lib/html/dart2js/html_dart2js.dart',
-        'org-dartlang-sdk:///sdk/lib/async/async.dart',
-      ]);
-
-      expect(resolvedUris.uris, ['dart:html', 'dart:async']);
-    }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-
-    test('registerService', () async {
-      final service = context.service;
-      await expectLater(
-        service.registerService('ext.foo.bar', ''),
-        throwsRPCError,
-      );
-    });
-
-    test('setIsolatePauseMode', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      expect(await service.setIsolatePauseMode(isolateId), _isSuccess);
-      expect(
-        await service.setIsolatePauseMode(
-          isolateId,
-          exceptionPauseMode: ExceptionPauseMode.kAll,
-        ),
-        _isSuccess,
-      );
-      expect(
-        await service.setIsolatePauseMode(
-          isolateId,
-          exceptionPauseMode: ExceptionPauseMode.kUnhandled,
-        ),
-        _isSuccess,
-      );
-      // Make sure this is the last one - or future tests might hang.
-      expect(
-        await service.setIsolatePauseMode(
-          isolateId,
-          exceptionPauseMode: ExceptionPauseMode.kNone,
-        ),
-        _isSuccess,
-      );
-      await expectLater(
-        service.setIsolatePauseMode(isolateId, exceptionPauseMode: 'invalid'),
-        throwsRPCError,
-      );
-    });
-
-    test('setFlag', () async {
-      final service = context.service;
-      await expectLater(service.setFlag('', ''), throwsRPCError);
-    });
-
-    test('setLibraryDebuggable', () async {
-      final service = context.service;
-      await expectLater(
-        service.setLibraryDebuggable('', '', false),
-        throwsRPCError,
-      );
-    });
-
-    test('setName', () async {
-      final service = context.service;
-      final vm = await service.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      expect(service.setName(isolateId, 'test'), completion(_isSuccess));
-      final isolate = await service.getIsolate(isolateId);
-      expect(isolate.name, 'test');
-    });
-
-    test('setVMName', () async {
-      final service = context.service;
-      expect(service.setVMName('foo'), completion(_isSuccess));
-      final vm = await service.getVM();
-      expect(vm.name, 'foo');
-    });
-
-    test('streamCancel', () async {
-      final service = context.service;
-      await expectLater(service.streamCancel(''), throwsRPCError);
-    });
-
-    group('setFlag', () {
-      test('pause_isolates_on_start set to true', () {
-        final service = context.service;
-        expect(
-          service.setFlag('pause_isolates_on_start', 'true'),
-          completion(_isSuccess),
-        );
-        expect(context.service.pauseIsolatesOnStart, equals(true));
-      });
-
-      test('pause_isolates_on_start set to false', () {
-        final service = context.service;
-        expect(
-          service.setFlag('pause_isolates_on_start', 'false'),
-          completion(_isSuccess),
-        );
-        expect(context.service.pauseIsolatesOnStart, equals(false));
-      });
-
-      test('pause_isolates_on_start set to invalid value', () {
-        final service = context.service;
-        expect(
-          service.setFlag('pause_isolates_on_start', 'pizza'),
-          throwsRPCError,
-        );
-      });
-    });
-
-    group('getFlagList', () {
-      List<String> stringifyFlags(FlagList flagList) {
-        return flagList.flags
-                ?.map((flag) => '${flag.name} -> ${flag.valueAsString}')
-                .toList() ??
-            [];
-      }
-
-      test('returns expected default values', () async {
-        final service = context.service;
-        final flagList = await service.getFlagList();
-        expect(
-          stringifyFlags(flagList),
-          containsAll(['pause_isolates_on_start -> false']),
-        );
-      });
-
-      test('returns any modified flag values', () async {
-        final service = context.service;
-        await service.setFlag('pause_isolates_on_start', 'true');
-        final flagList = await service.getFlagList();
-        expect(
-          stringifyFlags(flagList),
-          containsAll(['pause_isolates_on_start -> true']),
-        );
-      });
-    });
-
-    group('streamListen/onEvent', () {
-      late ChromeProxyService service;
-
-      group('Debug', () {
-        late Stream<Event> eventStream;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          expect(
-            await service.streamListen('Debug'),
-            const TypeMatcher<Success>(),
-          );
-          eventStream = service.onEvent('Debug');
-        });
-
-        test('basic Pause/Resume', () async {
-          expect(service.streamListen('Debug'), completion(_isSuccess));
-          final stream = service.onEvent('Debug');
-          safeUnawaited(context.tabConnection.debugger.pause());
-          await expectLater(
-            stream,
-            emitsThrough(
-              const TypeMatcher<Event>().having(
-                (e) => e.kind,
-                'kind',
-                EventKind.kPauseInterrupted,
-              ),
-            ),
-          );
-          safeUnawaited(context.tabConnection.debugger.resume());
-          expect(
-            eventStream,
-            emitsThrough(
-              const TypeMatcher<Event>().having(
-                (e) => e.kind,
-                'kind',
-                EventKind.kResume,
-              ),
-            ),
-          );
-        });
-
-        test('Inspect', () async {
-          expect(
-            eventStream,
-            emitsThrough(
-              const TypeMatcher<Event>()
-                  .having((e) => e.kind, 'kind', EventKind.kInspect)
-                  .having(
-                    (e) => e.inspectee,
-                    'inspectee',
-                    const TypeMatcher<InstanceRef>()
-                        .having((instance) => instance.id, 'id', isNotNull)
-                        .having(
-                          (instance) => instance.kind,
-                          'inspectee.kind',
-                          InstanceKind.kPlainInstance,
-                        ),
-                  ),
-            ),
-          );
-          await context.tabConnection.runtime.evaluate('inspectInstance()');
-        });
-      });
-
-      group('Extension', () {
-        late VmServiceInterface service;
-        late Stream<Event> eventStream;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          expect(
-            await service.streamListen('Extension'),
-            const TypeMatcher<Success>(),
-          );
-          eventStream = service.onEvent('Extension');
-        });
-
-        test('Custom debug event', () async {
-          final eventKind = 'my.custom.event';
-          expect(
-            eventStream,
-            emitsThrough(
-              predicate(
-                (Event event) =>
-                    event.kind == EventKind.kExtension &&
-                    event.extensionKind == eventKind &&
-                    event.extensionData!.data['example'] == 'data',
-              ),
-            ),
-          );
-          await context.tabConnection.runtime.evaluate(
-            "postEvent('$eventKind');",
-          );
-        });
-
-        test('Batched debug events from injected client', () async {
-          final eventKind = EventKind.kExtension;
-          final extensionKind = 'MyEvent';
-          final eventData = 'eventData';
-          final delay = const Duration(milliseconds: 2000);
-
-          TypeMatcher<Event> eventMatcher(String data) =>
-              const TypeMatcher<Event>()
-                  .having((event) => event.kind, 'kind', eventKind)
-                  .having(
-                    (event) => event.extensionKind,
-                    'extensionKind',
-                    extensionKind,
-                  )
-                  .having(
-                    (event) => event.extensionData!.data['eventData'],
-                    'eventData',
-                    data,
-                  );
-
-          String emitDebugEvent(String data) =>
-              '\$emitDebugEvent("$extensionKind", '
-              '\'{"$eventData": "$data"}\');';
-
-          final size = 2;
-          final batch1 = List.generate(size, (int i) => 'data$i');
-          final batch2 = List.generate(size, (int i) => 'data${size + i}');
-
-          expect(
-            eventStream,
-            emitsInOrder([
-              ...batch1.map(eventMatcher),
-              ...batch2.map(eventMatcher),
-            ]),
-          );
-
-          for (final data in batch1) {
-            await context.tabConnection.runtime.evaluate(emitDebugEvent(data));
-          }
-          await Future<void>.delayed(delay);
-          for (final data in batch2) {
-            await context.tabConnection.runtime.evaluate(emitDebugEvent(data));
-          }
-        });
-      });
-
-      test('GC', () async {
-        expect(service.streamListen('GC'), completion(_isSuccess));
-      });
-
-      group('Isolate', () {
-        late Stream<Event> isolateEventStream;
-
-        setUp(() async {
-          expect(await service.streamListen(EventStreams.kIsolate), _isSuccess);
-          isolateEventStream = service.onEvent(EventStreams.kIsolate);
-        });
-
-        test('serviceExtensionAdded', () async {
-          final extensionMethod = 'ext.foo.bar';
-          expect(
-            isolateEventStream,
-            emitsThrough(
-              predicate(
-                (Event event) =>
-                    event.kind == EventKind.kServiceExtensionAdded &&
-                    event.extensionRPC == extensionMethod,
-              ),
-            ),
-          );
-          await context.tabConnection.runtime.evaluate(
-            "registerExtension('$extensionMethod');",
-          );
-        });
-
-        test('lifecycle events', () async {
-          final vm = await service.getVM();
-          final initialIsolateId = vm.isolates!.first.id;
-          final eventsDone = expectLater(
-            isolateEventStream,
-            emitsThrough(
-              emitsInOrder([
-                predicate(
-                  (Event event) =>
-                      event.kind == EventKind.kIsolateExit &&
-                      event.isolate!.id == initialIsolateId,
-                ),
-                predicate(
-                  (Event event) =>
-                      event.kind == EventKind.kIsolateStart &&
-                      event.isolate!.id != initialIsolateId,
-                ),
-                predicate(
-                  (Event event) =>
-                      event.kind == EventKind.kIsolateRunnable &&
-                      event.isolate!.id != initialIsolateId,
-                ),
-              ]),
-            ),
-          );
-          service.destroyIsolate();
-          await service.createIsolate(context.appConnection);
-          await eventsDone;
-          expect(
-            (await service.getVM()).isolates!.first.id,
-            isNot(initialIsolateId),
-          );
-        });
-
-        test('RegisterExtension events from injected client', () async {
-          final eventKind = EventKind.kServiceExtensionAdded;
-          final extensions = List.generate(10, (index) => 'extension$index');
-
-          TypeMatcher<Event> eventMatcher(String extension) =>
-              const TypeMatcher<Event>()
-                  .having((event) => event.kind, 'kind', eventKind)
-                  .having((event) => event.extensionRPC, 'RPC', extension);
-
-          String emitRegisterEvent(String extension) =>
-              "\$emitRegisterEvent('$extension')";
-
-          expect(
-            isolateEventStream,
-            emitsInOrder(extensions.map(eventMatcher)),
-          );
-          for (final extension in extensions) {
-            await context.tabConnection.runtime.evaluate(
-              emitRegisterEvent(extension),
-            );
-          }
-        });
-      });
-
-      test('Timeline', () async {
-        expect(service.streamListen('Timeline'), completion(_isSuccess));
-      });
-
-      test('Stdout', () async {
-        expect(service.streamListen('Stdout'), completion(_isSuccess));
-        expect(
-          service.onEvent('Stdout'),
-          emitsThrough(
-            predicate(
-              (Event event) =>
-                  event.kind == EventKind.kWriteEvent &&
-                  String.fromCharCodes(base64.decode(event.bytes!))
-                      .contains('hello'),
-            ),
-          ),
-        );
-        await context.tabConnection.runtime.evaluate('console.log("hello");');
-      });
-
-      test('Stderr', () async {
-        expect(service.streamListen('Stderr'), completion(_isSuccess));
-        final stderrStream = service.onEvent('Stderr');
-        expect(
-          stderrStream,
-          emitsThrough(
-            predicate(
-              (Event event) =>
-                  event.kind == EventKind.kWriteEvent &&
-                  String.fromCharCodes(base64.decode(event.bytes!))
-                      .contains('Error'),
-            ),
-          ),
-        );
-        await context.tabConnection.runtime.evaluate('console.error("Error");');
-      });
-
-      test('exception stack trace mapper', () async {
-        expect(service.streamListen('Stderr'), completion(_isSuccess));
-        final stderrStream = service.onEvent('Stderr');
-        expect(
-          stderrStream,
-          emitsThrough(
-            predicate(
-              (Event event) =>
-                  event.kind == EventKind.kWriteEvent &&
-                  String.fromCharCodes(base64.decode(event.bytes!))
-                      .contains('main.dart'),
-            ),
-          ),
-        );
-        await context.tabConnection.runtime.evaluate(
-          'throwUncaughtException();',
-        );
-      });
-
-      test('VM', () async {
-        final status = await service.streamListen('VM');
-        expect(status, _isSuccess);
-        final stream = service.onEvent('VM');
-        expect(
-          stream,
-          emitsThrough(
-            predicate(
-              (Event e) =>
-                  e.kind == EventKind.kVMUpdate && e.vm!.name == 'test',
-            ),
-          ),
-        );
-        await service.setVMName('test');
-      });
-
-      test('custom stream', () {
-        expect(
-          () => service.streamListen('aCustomStreamId'),
-          throwsA(
-            predicate(
-              (e) =>
-                  (e is RPCError) && e.code == RPCErrorKind.kInvalidParams.code,
-            ),
-          ),
-        );
-      });
-    });
-
-    group('Logging |', () {
-      test('logging stream is registered', () {
-        final service = context.service;
-        expect(
-          service.streamListen(EventStreams.kLogging),
-          completion(_isSuccess),
-        );
-      });
-
-      test(
-        'dart:developer logs are correctly converted to log records',
-        () async {
-          final logStream = context.service.onEvent(EventStreams.kLogging);
-          final message = 'myMessage';
-
-          safeUnawaited(
-            context.tabConnection.runtime.evaluate("sendLog('$message');"),
-          );
-
-          final event = await logStream.first;
-          expect(event.kind, EventKind.kLogging);
-
-          final logRecord = event.logRecord!;
-          expect(logRecord.message!.valueAsString, message);
-          expect(logRecord.loggerName!.valueAsString, 'testLogCategory');
-        },
-      );
-
-      test('long dart:developer log messages are not truncated', () async {
-        final logStream = context.service.onEvent(EventStreams.kLogging);
-        final longMessage =
-            'A very long log message that Chrome truncates by default and '
-            'requires users to expand in order to see the entire message.';
-        safeUnawaited(
-          context.tabConnection.runtime.evaluate("sendLog('$longMessage');"),
-        );
-
-        final event = await logStream.first;
-        expect(event.logRecord!.message!.valueAsString, longMessage);
-      });
-    });
-  });
-}
-
-final _isSuccess = isA<Success>();
-
-TypeMatcher<LibraryRef> _libRef(Object? uriMatcher) =>
-    isA<LibraryRef>().having((LibraryRef l) => l.uri, 'uri', uriMatcher);
-
-void expectEventually(Matcher expectation) {}
diff --git a/dwds/test/integration/common/hot_restart_common.dart b/dwds/test/integration/common/hot_restart_common.dart
deleted file mode 100644
index 9d0dff7..0000000
--- a/dwds/test/integration/common/hot_restart_common.dart
+++ /dev/null
@@ -1,658 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:async';
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../fixtures/context.dart';
-import '../fixtures/project.dart';
-import '../fixtures/utilities.dart';
-
-const originalString = 'Hello World!';
-const newString = 'Bonjour le monde!';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required ModuleFormat moduleFormat,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testAppendBody, provider);
-
-  tearDownAll(provider.dispose);
-
-  Future<void> recompile({bool hasEdits = false}) async {
-    if (compilationMode == CompilationMode.frontendServer) {
-      await context.recompile(fullRestart: true);
-    } else {
-      assert(compilationMode == CompilationMode.buildDaemon);
-      if (hasEdits) {
-        // Only gets a new build if there were edits.
-        await context.waitForSuccessfulBuild();
-      }
-    }
-  }
-
-  Future<void> makeEditAndRecompile() async {
-    await context.makeEdits([
-      (
-        file: context.project.dartEntryFileName,
-        originalString: originalString,
-        newString: newString,
-      ),
-    ]);
-    await recompile(hasEdits: true);
-  }
-
-  // Wait for `expectedStrings` to be printed to the console.
-  Future<void> waitForLogs(List<String> expectedStrings) async {
-    final expectations = List<String>.from(expectedStrings);
-    final completer = Completer<void>();
-    final subscription = context.webkitDebugger.onConsoleAPICalled.listen((e) {
-      final value = e.args.first.value;
-      if (expectations.contains(value)) {
-        expectations.remove(value);
-        if (expectations.isEmpty) {
-          completer.complete();
-        }
-      }
-    });
-    await completer.future.timeout(
-      const Duration(minutes: 1),
-      onTimeout: () {
-        throw TimeoutException(
-          'Failed to find logs: $expectedStrings in console.',
-        );
-      },
-    );
-    await subscription.cancel();
-  }
-
-  group(
-    'Injected client with live reload',
-    () {
-      group('and with debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.liveReload,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('can live reload changes ', () async {
-          // A full reload should clear the state.
-          final logFuture = waitForLogs([newString]);
-          await makeEditAndRecompile();
-          await logFuture;
-        });
-      });
-
-      group('and without debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.liveReload,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-            debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-              enableDebugging: false,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('can live reload changes ', () async {
-          // A full reload should clear the state.
-          final logFuture = waitForLogs([newString]);
-          await makeEditAndRecompile();
-          await logFuture;
-        });
-      });
-
-      group('and without debugging using WebSockets', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.liveReload,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-            debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-              enableDebugging: false,
-              useSse: false,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('can live reload changes ', () async {
-          // A full reload should clear the state.
-          final logFuture = waitForLogs([newString]);
-          await makeEditAndRecompile();
-          await logFuture;
-        });
-      });
-    },
-    // `BuildResult`s are only ever emitted when using the build daemon.
-    skip: compilationMode == CompilationMode.buildDaemon ? null : true,
-    timeout: const Timeout.factor(2),
-  );
-
-  group('Injected client', () {
-    late VmService fakeClient;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      fakeClient = await context.connectFakeClient();
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('destroys and recreates the isolate during a hot restart', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-      await makeEditAndRecompile();
-
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          emitsInOrder([
-            _hasKind(EventKind.kIsolateExit),
-            _hasKind(EventKind.kIsolateStart),
-            _hasKind(EventKind.kIsolateRunnable),
-          ]),
-        ),
-      );
-
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      expect(
-        await fakeClient.callServiceExtension(hotRestart!),
-        const TypeMatcher<Success>(),
-      );
-
-      await eventsDone;
-    });
-
-    test('can execute simultaneous hot restarts', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-      await makeEditAndRecompile();
-
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          emitsInOrder([
-            _hasKind(EventKind.kIsolateExit),
-            _hasKind(EventKind.kIsolateStart),
-            _hasKind(EventKind.kIsolateRunnable),
-          ]),
-        ),
-      );
-
-      // Execute two hot restart calls in parallel.
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      final done = Future.wait([
-        fakeClient.callServiceExtension(hotRestart!),
-        fakeClient.callServiceExtension(hotRestart),
-      ]);
-      expect(await done, [
-        const TypeMatcher<Success>(),
-        const TypeMatcher<Success>(),
-      ]);
-
-      // The debugger is still working.
-      final vm = await client.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final isolate = await client.getIsolate(isolateId);
-      final library = isolate.rootLib!.uri!;
-
-      final result = await client.evaluate(isolateId, library, 'true');
-      expect(
-        result,
-        isA<InstanceRef>().having(
-          (instance) => instance.valueAsString,
-          'valueAsString',
-          'true',
-        ),
-      );
-
-      await eventsDone;
-    });
-
-    test('destroys and recreates the isolate during a page refresh', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-      await makeEditAndRecompile();
-
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          emitsInOrder([
-            _hasKind(EventKind.kIsolateExit),
-            _hasKind(EventKind.kIsolateStart),
-            _hasKind(EventKind.kIsolateRunnable),
-          ]),
-        ),
-      );
-
-      await context.webDriver.driver.refresh();
-
-      await eventsDone;
-    });
-
-    test('can hot restart via the service extension', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-      await makeEditAndRecompile();
-
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          emitsInOrder([
-            _hasKind(EventKind.kIsolateExit),
-            _hasKind(EventKind.kIsolateStart),
-            _hasKind(EventKind.kIsolateRunnable),
-          ]),
-        ),
-      );
-      // Main is re-invoked which shouldn't clear the state.
-      final logFuture = waitForLogs(['$originalString $newString']);
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      expect(
-        await fakeClient.callServiceExtension(hotRestart!),
-        const TypeMatcher<Success>(),
-      );
-
-      await eventsDone;
-      await logFuture;
-    });
-
-    test('can send events before and after hot restart', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-
-      // The event just before hot restart might never be received,
-      // but the injected client continues to work and send events
-      // after hot restart.
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          _hasKind(EventKind.kServiceExtensionAdded)
-              .having((e) => e.extensionRPC, 'service', 'ext.bar'),
-        ),
-      );
-
-      var vm = await client.getVM();
-      var isolateId = vm.isolates!.first.id!;
-      var isolate = await client.getIsolate(isolateId);
-      var library = isolate.rootLib!.uri!;
-
-      final callback = '(_, __) async => ServiceExtensionResponse.result("")';
-
-      await client.evaluate(
-        isolateId,
-        library,
-        "registerExtension('ext.foo', $callback)",
-      );
-
-      await recompile();
-      // Main is re-invoked which shouldn't clear the state.
-      final logFuture = waitForLogs(['$originalString $originalString']);
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      expect(
-        await fakeClient.callServiceExtension(hotRestart!),
-        const TypeMatcher<Success>(),
-      );
-
-      vm = await client.getVM();
-      isolateId = vm.isolates!.first.id!;
-      isolate = await client.getIsolate(isolateId);
-      library = isolate.rootLib!.uri!;
-
-      await client.evaluate(
-        isolateId,
-        library,
-        "registerExtension('ext.bar', $callback)",
-      );
-
-      await eventsDone;
-      await logFuture;
-    });
-
-    test('can refresh the page via the fullReload service extension', () async {
-      final client = context.debugConnection.vmService;
-      await client.streamListen('Isolate');
-      await makeEditAndRecompile();
-
-      final eventsDone = expectLater(
-        client.onIsolateEvent,
-        emitsThrough(
-          emitsInOrder([
-            _hasKind(EventKind.kIsolateExit),
-            _hasKind(EventKind.kIsolateStart),
-            _hasKind(EventKind.kIsolateRunnable),
-          ]),
-        ),
-      );
-      // Should see only the new text.
-      final logFuture = waitForLogs([newString]);
-      final fullReload = context.getRegisteredServiceExtension('fullReload');
-      expect(
-        await fakeClient.callServiceExtension(fullReload!),
-        isA<Success>(),
-      );
-
-      await eventsDone;
-      await logFuture;
-    });
-
-    test('can hot restart while paused', () async {
-      final client = context.debugConnection.vmService;
-      var vm = await client.getVM();
-      var isolateId = vm.isolates!.first.id!;
-      await client.streamListen('Debug');
-      final stream = client.onDebugEvent;
-      final scriptList = await client.getScripts(isolateId);
-      final main = scriptList.scripts!.firstWhere(
-        (script) => script.uri!.contains('main.dart'),
-      );
-      final bpLine = await context.findBreakpointLine(
-        'printCount',
-        isolateId,
-        main,
-      );
-      await client.addBreakpoint(isolateId, main.id!, bpLine);
-      await stream.firstWhere(
-        (event) => event.kind == EventKind.kPauseBreakpoint,
-      );
-
-      await makeEditAndRecompile();
-      // Main is re-invoked which shouldn't clear the state.
-      final logFuture = waitForLogs(['$originalString $newString']);
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      await fakeClient.callServiceExtension(hotRestart!);
-      await logFuture;
-
-      vm = await client.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final isolate = await client.getIsolate(isolateId);
-
-      // Previous breakpoint should be cleared.
-      expect(isolate.breakpoints!.isEmpty, isTrue);
-    });
-
-    test('can evaluate expressions after hot restart', () async {
-      final client = context.debugConnection.vmService;
-
-      await recompile();
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      await fakeClient.callServiceExtension(hotRestart!);
-
-      final vm = await client.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final isolate = await client.getIsolate(isolateId);
-      final library = isolate.rootLib!.uri!;
-
-      // Expression evaluation while running should work.
-      final result = await client.evaluate(isolateId, library, 'true');
-      expect(
-        result,
-        isA<InstanceRef>().having(
-          (instance) => instance.valueAsString,
-          'valueAsString',
-          'true',
-        ),
-      );
-    });
-
-    test('can hot restart with no changes, hot restart with changes, and '
-        'hot restart again with no changes', () async {
-      // Empty hot restart.
-      var logFuture = waitForLogs(['$originalString $originalString']);
-      await recompile();
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      await fakeClient.callServiceExtension(hotRestart!);
-      await logFuture;
-
-      // Hot restart.
-      logFuture = waitForLogs(['$originalString $originalString $newString']);
-      await makeEditAndRecompile();
-      await fakeClient.callServiceExtension(hotRestart);
-      await logFuture;
-
-      // Empty hot restart.
-      logFuture = waitForLogs([
-        '$originalString $originalString $newString $newString',
-      ]);
-      await recompile();
-      await fakeClient.callServiceExtension(hotRestart);
-      await logFuture;
-    });
-  }, timeout: const Timeout.factor(2));
-
-  group(
-    'Injected client with hot restart',
-    () {
-      group('and with debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.hotRestart,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('can hot restart changes ', () async {
-          // Main is re-invoked which shouldn't clear the state.
-          final logFutures = waitForLogs([
-            '$originalString $newString',
-            // The ext.flutter.disassemble callback is invoked and waited for.
-            'start disassemble',
-            'end disassemble',
-          ]);
-          await makeEditAndRecompile();
-          await logFutures;
-        });
-
-        test(
-          'fires isolate create/destroy events during hot restart',
-          () async {
-            final client = context.debugConnection.vmService;
-            await client.streamListen('Isolate');
-
-            final eventsDone = expectLater(
-              client.onIsolateEvent,
-              emitsThrough(
-                emitsInOrder([
-                  _hasKind(EventKind.kIsolateExit),
-                  _hasKind(EventKind.kIsolateStart),
-                  _hasKind(EventKind.kIsolateRunnable),
-                ]),
-              ),
-            );
-
-            await makeEditAndRecompile();
-
-            await eventsDone;
-          },
-        );
-      });
-
-      group('and without debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.hotRestart,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-            debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-              enableDebugging: false,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('can hot restart changes ', () async {
-          // Main is re-invoked which shouldn't clear the state.
-          final logFutures = waitForLogs([
-            '$originalString $newString',
-            // The ext.flutter.disassemble callback is invoked and waited for.
-            'start disassemble',
-            'end disassemble',
-          ]);
-          await makeEditAndRecompile();
-          await logFutures;
-        });
-      });
-    },
-    // `BuildResult`s are only ever emitted when using the build daemon.
-    skip: compilationMode == CompilationMode.buildDaemon ? null : true,
-    timeout: const Timeout.factor(2),
-  );
-
-  group('when isolates_paused_on_start is true', () {
-    late VmService client;
-    late VmService fakeClient;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      client = context.debugConnection.vmService;
-      fakeClient = await context.connectFakeClient();
-      await client.setFlag('pause_isolates_on_start', 'true');
-      await client.streamListen('Isolate');
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test(
-      'after hot-restart, does not run app until there is a resume event',
-      () async {
-        await makeEditAndRecompile();
-
-        final eventsDone = expectLater(
-          client.onIsolateEvent,
-          emitsThrough(
-            emitsInOrder([
-              _hasKind(EventKind.kIsolateExit),
-              _hasKind(EventKind.kIsolateStart),
-              _hasKind(EventKind.kIsolateRunnable),
-            ]),
-          ),
-        );
-
-        // Main is re-invoked which shouldn't clear the state.
-        final logFuture = waitForLogs(['$originalString $newString']);
-        final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-        expect(
-          await fakeClient.callServiceExtension(hotRestart!),
-          const TypeMatcher<Success>(),
-        );
-
-        await eventsDone;
-
-        final vm = await client.getVM();
-        final isolateId = vm.isolates!.first.id!;
-        await client.resume(isolateId);
-
-        await logFuture;
-      },
-    );
-
-    test(
-      'after page refresh, does not run app until there is a resume event',
-      () async {
-        final logFuture = waitForLogs([newString]);
-        await makeEditAndRecompile();
-        await context.webDriver.driver.refresh();
-
-        final eventsDone = expectLater(
-          client.onIsolateEvent,
-          emitsThrough(
-            emitsInOrder([
-              _hasKind(EventKind.kIsolateExit),
-              _hasKind(EventKind.kIsolateStart),
-              _hasKind(EventKind.kIsolateRunnable),
-            ]),
-          ),
-        );
-
-        await eventsDone;
-
-        final vm = await client.getVM();
-        final isolateId = vm.isolates!.first.id!;
-        await client.resume(isolateId);
-
-        await logFuture;
-      },
-    );
-  });
-}
-
-TypeMatcher<Event> _hasKind(String kind) =>
-    isA<Event>().having((e) => e.kind, 'kind', kind);
diff --git a/dwds/test/integration/common/hot_restart_correctness_common.dart b/dwds/test/integration/common/hot_restart_correctness_common.dart
deleted file mode 100644
index dc37269..0000000
--- a/dwds/test/integration/common/hot_restart_correctness_common.dart
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:async';
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../fixtures/context.dart';
-import '../fixtures/project.dart';
-import '../fixtures/utilities.dart';
-
-const originalString = 'variableToModifyToForceRecompile = 23';
-const newString = 'variableToModifyToForceRecompile = 45';
-
-const constantSuccessString = 'ConstantEqualitySuccess';
-const constantFailureString = 'ConstantEqualityFailure';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required ModuleFormat moduleFormat,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  tearDownAll(provider.dispose);
-
-  final testHotRestart2 = TestProject.testHotRestart2;
-  final context = TestContext(testHotRestart2, provider);
-
-  Future<void> makeEditAndRecompile() async {
-    await context.makeEdits([
-      (
-        file: 'library2.dart',
-        originalString: originalString,
-        newString: newString,
-      ),
-    ]);
-    if (compilationMode == CompilationMode.frontendServer) {
-      await context.recompile(fullRestart: true);
-    } else {
-      assert(compilationMode == CompilationMode.buildDaemon);
-      await context.waitForSuccessfulBuild(propagateToBrowser: true);
-    }
-  }
-
-  // Wait for `expectedString` to be printed to the console.
-  Future<void> waitForLog(String expectedString) async {
-    final completer = Completer<void>();
-    final subscription = context.webkitDebugger.onConsoleAPICalled.listen((e) {
-      if (e.args.first.value == expectedString) {
-        completer.complete();
-      }
-    });
-    await completer.future.timeout(
-      const Duration(minutes: 1),
-      onTimeout: () {
-        throw TimeoutException(
-          "Failed to find log: '$expectedString' in console.",
-        );
-      },
-    );
-    await subscription.cancel();
-  }
-
-  group('Injected client', () {
-    VmService? fakeClient;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-
-      fakeClient = await context.connectFakeClient();
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('initial state prints the right log', () async {
-      final client = context.debugConnection.vmService;
-
-      final logFuture = waitForLog(
-        'ConstObject(reloadVariable: 23, ConstantEqualitySuccess)',
-      );
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final rootLib = isolate.rootLib;
-      await client.evaluate(isolate.id!, rootLib!.id!, 'printConst()');
-      await logFuture;
-    });
-
-    test(
-      'properly compares constants after hot restart via the service extension',
-      () async {
-        final client = context.debugConnection.vmService;
-        await client.streamListen('Isolate');
-
-        await makeEditAndRecompile();
-
-        final eventsDone = expectLater(
-          client.onIsolateEvent,
-          emitsThrough(
-            emitsInOrder([
-              _hasKind(EventKind.kIsolateExit),
-              _hasKind(EventKind.kIsolateStart),
-              _hasKind(EventKind.kIsolateRunnable),
-            ]),
-          ),
-        );
-
-        final logFuture = waitForLog(
-          'ConstObject(reloadVariable: 45, ConstantEqualitySuccess)',
-        );
-        final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-        expect(
-          await fakeClient!.callServiceExtension(hotRestart!),
-          const TypeMatcher<Success>(),
-        );
-
-        await eventsDone;
-        await logFuture;
-      },
-    );
-  }, timeout: const Timeout.factor(2));
-
-  group(
-    'Injected client with hot restart',
-    () {
-      group('and with debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.hotRestart,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('properly compares constants after hot restart', () async {
-          final logFuture = waitForLog(
-            'ConstObject(reloadVariable: 45, ConstantEqualitySuccess)',
-          );
-          await makeEditAndRecompile();
-          await logFuture;
-        });
-      });
-
-      group('and without debugging', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          await context.setUp(
-            testSettings: TestSettings(
-              reloadConfiguration: ReloadConfiguration.hotRestart,
-              compilationMode: compilationMode,
-              moduleFormat: provider.ddcModuleFormat,
-              canaryFeatures: provider.canaryFeatures,
-            ),
-            debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-              enableDebugging: false,
-            ),
-          );
-        });
-
-        tearDown(() async {
-          await context.tearDown();
-        });
-
-        test('properly compares constants after hot restart', () async {
-          final logFuture = waitForLog(
-            'ConstObject(reloadVariable: 45, ConstantEqualitySuccess)',
-          );
-          await makeEditAndRecompile();
-          await logFuture;
-        });
-      });
-    },
-    // `BuildResult`s are only ever emitted when using the build daemon.
-    skip: compilationMode == CompilationMode.buildDaemon ? null : true,
-    timeout: const Timeout.factor(2),
-  );
-}
-
-TypeMatcher<Event> _hasKind(String kind) =>
-    isA<Event>().having((e) => e.kind, 'kind', kind);
diff --git a/dwds/test/integration/dart_uri_file_uri_test.dart b/dwds/test/integration/dart_uri_file_uri_test.dart
deleted file mode 100644
index c06a40c..0000000
--- a/dwds/test/integration/dart_uri_file_uri_test.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-// This tests converting file Uris into our internal paths.
-//
-// These tests are separated out because we need a running isolate in order to
-// look up packages.
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  final testProject = TestProject.test;
-  final testPackageProject = TestProject.testPackage();
-
-  final context = TestContext(testPackageProject, provider);
-
-  for (final compilationMode in CompilationMode.values.where(
-    (mode) => !mode.usesDdcModulesOnly,
-  )) {
-    group('$compilationMode |', () {
-      for (final useDebuggerModuleNames in [false, true]) {
-        group('Debugger module names: $useDebuggerModuleNames |', () {
-          final appServerPath = compilationMode.usesFrontendServer
-              ? 'web/main.dart'
-              : 'main.dart';
-
-          final serverPath =
-              compilationMode.usesFrontendServer && useDebuggerModuleNames
-              ? 'packages/${testPackageProject.packageDirectory}/lib/test_library.dart'
-              : 'packages/${testPackageProject.packageName}/test_library.dart';
-
-          final anotherServerPath =
-              compilationMode.usesFrontendServer && useDebuggerModuleNames
-              ? 'packages/${testProject.packageDirectory}/lib/library.dart'
-              : 'packages/${testProject.packageName}/library.dart';
-
-          setUpAll(() async {
-            await context.setUp(
-              testSettings: TestSettings(
-                compilationMode: compilationMode,
-                useDebuggerModuleNames: useDebuggerModuleNames,
-              ),
-            );
-          });
-
-          tearDownAll(() async {
-            await context.tearDown();
-          });
-
-          test('file path to org-dartlang-app', () {
-            final webMain = Uri.file(
-              p.join(
-                // The directory for the _testPackage package which imports
-                // _test.
-                testPackageProject.absolutePackageDirectory,
-                'web',
-                'main.dart',
-              ),
-            );
-            final uri = DartUri('$webMain');
-            expect(uri.serverPath, appServerPath);
-          });
-
-          test('file path to this package', () {
-            final testPackageLib = Uri.file(
-              p.join(
-                testPackageProject.absolutePackageDirectory,
-                'lib',
-                'test_library.dart',
-              ),
-            );
-            final uri = DartUri('$testPackageLib');
-            expect(uri.serverPath, serverPath);
-          });
-
-          test('file path to another package', () {
-            final testLib = Uri.file(
-              p.join(
-                // The directory for the general _test package. This is going to
-                // be relative to the project in the `TestContext`.
-                testPackageProject.absolutePackageDirectory,
-                '..',
-                testProject.packageDirectory,
-                'lib',
-                'library.dart',
-              ),
-            );
-            final dartUri = DartUri('$testLib');
-            expect(dartUri.serverPath, anotherServerPath);
-          });
-        });
-      }
-    });
-  }
-}
diff --git a/dwds/test/integration/dart_uri_test.dart b/dwds/test/integration/dart_uri_test.dart
deleted file mode 100644
index 9a0d5ba..0000000
--- a/dwds/test/integration/dart_uri_test.dart
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import 'fixtures/fakes.dart';
-import 'fixtures/utilities.dart';
-
-class TestStrategy extends FakeStrategy {
-  TestStrategy(super.assetReader);
-
-  @override
-  String? serverPathForAppUri(String appUrl) {
-    final appUri = Uri.parse(appUrl);
-    if (appUri.isScheme('org-dartlang-app')) {
-      return appUri.path;
-    }
-    if (appUri.isScheme('package')) {
-      return 'packages/${appUri.path}';
-    }
-    if (appUri.isScheme('google3')) {
-      return appUri.path;
-    }
-    return null;
-  }
-}
-
-class G3TestStrategy extends FakeStrategy {
-  G3TestStrategy(super.assetReader);
-
-  @override
-  String? g3RelativePath(String absolutePath) =>
-      'g3:///${p.split(absolutePath).last}';
-}
-
-void main() {
-  group('DartUri', () {
-    setUpAll(() {
-      final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-        loadStrategy: TestStrategy(FakeAssetReader()),
-      );
-      setGlobalsForTesting(toolConfiguration: toolConfiguration);
-    });
-    test('parses package : paths', () {
-      final uri = DartUri('package:path/path.dart');
-      expect(uri.serverPath, 'packages/path/path.dart');
-    });
-
-    test('parses package : paths with root', () {
-      final uri = DartUri('package:path/path.dart', 'foo/bar/blah');
-      expect(uri.serverPath, 'foo/bar/blah/packages/path/path.dart');
-    });
-
-    test('parses org-dartlang-app paths', () {
-      final uri = DartUri('org-dartlang-app:///blah/main.dart');
-      expect(uri.serverPath, '/blah/main.dart');
-    });
-
-    test('parses google3 paths', () {
-      final uri = DartUri('google3:///blah/main.dart');
-      expect(uri.serverPath, '/blah/main.dart');
-    });
-
-    test('parses packages paths', () {
-      final uri = DartUri('/packages/blah/foo.dart');
-      expect(uri.serverPath, 'packages/blah/foo.dart');
-    });
-
-    test('parses http paths', () {
-      final uri = DartUri('http://localhost:8080/web/main.dart');
-      expect(uri.serverPath, 'web/main.dart');
-    });
-
-    group('initialized with empty configuration', () {
-      setUpAll(() async {
-        await DartUri.initialize();
-        DartUri.recordAbsoluteUris(['dart:io', 'dart:html']);
-      });
-
-      tearDownAll(DartUri.clear);
-      test('cannot resolve uris', () async {
-        final resolved = DartUri.toResolvedUri('dart:io');
-        expect(resolved, isNull);
-      });
-    });
-
-    group('initialized with current SDK directory', () {
-      setUpAll(() async {
-        await DartUri.initialize();
-        DartUri.recordAbsoluteUris(['dart:io', 'dart:html']);
-      });
-
-      tearDownAll(DartUri.clear);
-
-      test('can resolve uris', () {
-        final resolved = DartUri.toResolvedUri('dart:io');
-        expect(resolved, 'org-dartlang-sdk:///sdk/lib/io/io.dart');
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-
-      test('can un-resolve uris', () {
-        final unresolved = DartUri.toPackageUri(
-          'org-dartlang-sdk:///sdk/lib/io/io.dart',
-        );
-        expect(unresolved, 'dart:io');
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-    });
-
-    group('initialized with other SDK directory', () {
-      setUpAll(() async {
-        await DartUri.initialize();
-        DartUri.recordAbsoluteUris(['dart:io', 'dart:html']);
-      });
-
-      tearDownAll(() async {
-        DartUri.clear();
-      });
-
-      test('can resolve uris', () {
-        final resolved = DartUri.toResolvedUri('dart:io');
-        expect(resolved, 'org-dartlang-sdk:///sdk/lib/io/io.dart');
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-
-      test('can unresolve uris', () {
-        final unresolved = DartUri.toPackageUri(
-          'org-dartlang-sdk:///sdk/lib/io/io.dart',
-        );
-        expect(unresolved, 'dart:io');
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-    });
-
-    group('initialized with other SDK directory with no libraries spec', () {
-      final logs = <String>[];
-
-      void logWriter(
-        Object? level,
-        Object? message, {
-        String? error,
-        String? loggerName,
-        String? stackTrace,
-      }) {
-        final errorMessage = error == null ? '' : ':\n$error';
-        final stackMessage = stackTrace == null ? '' : ':\n$stackTrace';
-        logs.add(
-          '[$level] $loggerName: $message'
-          '$errorMessage'
-          '$stackMessage',
-        );
-      }
-
-      setUpAll(() async {
-        configureLogWriter(customLogWriter: logWriter);
-        await DartUri.initialize();
-        DartUri.recordAbsoluteUris(['dart:io', 'dart:html']);
-      });
-
-      tearDownAll(() async {
-        DartUri.clear();
-      });
-
-      test('cannot resolve uris', () {
-        final resolved = DartUri.toResolvedUri('dart:io');
-        expect(resolved, null);
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-
-      test('cannot unresolve uris', () {
-        final unresolved = DartUri.toPackageUri(
-          'org-dartlang-sdk:///sdk/lib/io/io.dart',
-        );
-        expect(unresolved, null);
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1584');
-    });
-  });
-
-  group('initialized to handle g3-relative paths', () {
-    setUpAll(() async {
-      final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-        loadStrategy: G3TestStrategy(FakeAssetReader()),
-        appMetadata: const TestAppMetadata.internalApp(),
-      );
-      setGlobalsForTesting(toolConfiguration: toolConfiguration);
-      await DartUri.initialize();
-      DartUri.recordAbsoluteUris(['package:path/path.dart']);
-    });
-
-    tearDownAll(DartUri.clear);
-
-    test('can resolve g3-relative paths', () {
-      final resolved = DartUri.toPackageUri('g3:///path.dart');
-      expect(resolved, 'package:path/path.dart');
-    });
-
-    test('can resolve absolute file paths', () {
-      final absolute = 'file:///cloud/user/workspace/project/path.dart';
-      final resolved = DartUri.toPackageUri(absolute);
-      expect(resolved, absolute);
-    });
-
-    test('can resolve absolute g3 paths', () {
-      final absolute = 'google3:///cloud/user/workspace/project/path.dart';
-      final resolved = DartUri.toPackageUri(absolute);
-      expect(resolved, absolute);
-    });
-  });
-}
diff --git a/dwds/test/integration/dds_port_amd_test.dart b/dwds/test/integration/dds_port_amd_test.dart
deleted file mode 100644
index 6fbbf45..0000000
--- a/dwds/test/integration/dds_port_amd_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'dds_port_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/dds_port_common.dart b/dwds/test/integration/dds_port_common.dart
deleted file mode 100644
index 480f4e2..0000000
--- a/dwds/test/integration/dds_port_common.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  late TestContext context;
-
-  setUp(() {
-    setCurrentLogWriter(debug: provider.verbose);
-    context = TestContext(TestProject.test, provider);
-  });
-
-  tearDown(() async {
-    await context.tearDown();
-  });
-
-  test('DWDS starts DDS with a specified port (deprecated)', () async {
-    // Find a unused port for the test.
-    final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0);
-    final expectedPort = server.port;
-    await server.close();
-
-    await context.setUp(
-      testSettings: TestSettings(
-        verboseCompiler: provider.verbose,
-        moduleFormat: provider.ddcModuleFormat,
-        canaryFeatures: provider.canaryFeatures,
-      ),
-      debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-        ddsPort: expectedPort,
-      ),
-    );
-    expect(Uri.parse(context.debugConnection.ddsUri!).port, expectedPort);
-    expect(context.debugConnection.dtdUri, isNotNull);
-  });
-
-  test('DWDS starts DDS with a specified port', () async {
-    // Find a unused port for the test.
-    final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0);
-    final expectedPort = server.port;
-    await server.close();
-
-    await context.setUp(
-      testSettings: TestSettings(
-        verboseCompiler: provider.verbose,
-        moduleFormat: provider.ddcModuleFormat,
-        canaryFeatures: provider.canaryFeatures,
-      ),
-      debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-        ddsConfiguration: DartDevelopmentServiceConfiguration(
-          port: expectedPort,
-        ),
-      ),
-    );
-    expect(Uri.parse(context.debugConnection.ddsUri!).port, expectedPort);
-    expect(context.debugConnection.dtdUri, isNotNull);
-  });
-}
diff --git a/dwds/test/integration/dds_port_ddc_library_bundle_test.dart b/dwds/test/integration/dds_port_ddc_library_bundle_test.dart
deleted file mode 100644
index f8125a3..0000000
--- a/dwds/test/integration/dds_port_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'dds_port_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/debug_service_common.dart b/dwds/test/integration/debug_service_common.dart
deleted file mode 100644
index 1dd3cce..0000000
--- a/dwds/test/integration/debug_service_common.dart
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service/vm_service_io.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.test, provider);
-
-  setUpAll(() async {
-    // Disable DDS as we're testing DWDS behavior.
-    await context.setUp(
-      testSettings: TestSettings(
-        verboseCompiler: provider.verbose,
-        moduleFormat: provider.ddcModuleFormat,
-        canaryFeatures: provider.canaryFeatures,
-      ),
-      debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-        spawnDds: false,
-        ddsConfiguration: const DartDevelopmentServiceConfiguration(
-          enable: false,
-        ),
-      ),
-    );
-  });
-
-  tearDownAll(() async {
-    await context.tearDown();
-  });
-
-  test('Refuses connections without the auth token', () async {
-    expect(
-      vmServiceConnectUri('ws://localhost:${context.debugConnection.port}/ws'),
-      throwsA(isA<WebSocketException>()),
-    );
-  });
-
-  test('Accepts connections with the auth token', () async {
-    expect(
-      vmServiceConnectUri('${context.debugConnection.uri}/ws')
-          .then((client) => client.dispose()),
-      completes,
-    );
-  });
-
-  test('Refuses additional connections when in single client mode', () async {
-    final fakeDds = await vmServiceConnectUri(
-      '${context.debugConnection.uri}/ws',
-    );
-    final result = await fakeDds.callMethod(
-      '_yieldControlToDDS',
-      args: {'uri': 'http://localhost:123'},
-    );
-    expect(result, isA<Success>());
-
-    // While DDS is connected, expect additional connections to fail.
-    await expectLater(
-      vmServiceConnectUri('${context.debugConnection.uri}/ws'),
-      throwsA(isA<WebSocketException>()),
-    );
-
-    // However, once DDS is disconnected, additional clients can connect again.
-    await fakeDds.dispose();
-    expect(
-      vmServiceConnectUri('${context.debugConnection.uri}/ws')
-          .then((client) => client.dispose()),
-      completes,
-    );
-  });
-
-  test('Refuses to yield to dwds if existing clients found', () async {
-    final fakeDds = await vmServiceConnectUri(
-      '${context.debugConnection.uri}/ws',
-    );
-
-    // Connect to vm service.
-    final client = await vmServiceConnectUri(
-      '${context.debugConnection.uri}/ws',
-    );
-
-    final result = await fakeDds.callMethod(
-      '_yieldControlToDDS',
-      args: {'uri': 'http://localhost:123'},
-    );
-    expect(result, isA<Success>());
-
-    // The other VM service client should be closed automatically.
-    await client.onDone;
-    await fakeDds.dispose();
-  });
-}
diff --git a/dwds/test/integration/debug_service_ddc_library_bundle_test.dart b/dwds/test/integration/debug_service_ddc_library_bundle_test.dart
deleted file mode 100644
index 06fe831..0000000
--- a/dwds/test/integration/debug_service_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'debug_service_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/debugger_test.dart b/dwds/test/integration/debugger_test.dart
deleted file mode 100644
index 5786af3..0000000
--- a/dwds/test/integration/debugger_test.dart
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/frame_computer.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/skip_list.dart';
-import 'package:logging/logging.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart' hide LogRecord;
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'
-    show CallFrame, DebuggerPausedEvent, StackTrace, WipCallFrame, WipScript;
-
-import 'fixtures/debugger_data.dart';
-import 'fixtures/fakes.dart';
-import 'fixtures/utilities.dart';
-
-late FakeChromeAppInspector inspector;
-late Debugger debugger;
-late FakeWebkitDebugger webkitDebugger;
-late StreamController<DebuggerPausedEvent> pausedController;
-late Locations locations;
-late SkipLists skipLists;
-
-class TestStrategy extends FakeStrategy {
-  TestStrategy(super.assetReader);
-
-  @override
-  Future<String> moduleForServerPath(String entrypoint, String appUri) async =>
-      'foo.ddc.js';
-
-  @override
-  Future<String> serverPathForModule(String entrypoint, String module) async =>
-      'foo/ddc';
-}
-
-final sourceMapContents =
-    '{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'
-    '"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUwB,IAAtB,WAAM;AAKJ,'
-    'IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,'
-    'yCAAC,WAAW;IAChE;AAC0D,IAA3D,AAAS,AAAK,0DAAO;AAAe,kBAAO;;;AAEvC,gBAAQ;'
-    'AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;'
-    ';EAEzB","file":"main.ddc.js"}';
-
-final sampleSyncFrame = WipCallFrame({
-  'callFrameId': '{"ordinal":0,"injectedScriptId":2}',
-  'functionName': '',
-  'functionLocation': {'scriptId': '69', 'lineNumber': 88, 'columnNumber': 72},
-  'location': {'scriptId': '69', 'lineNumber': 37, 'columnNumber': 0},
-  'url': '',
-  'scopeChain': <Map<String, dynamic>>[],
-  'this': {'type': 'undefined'},
-});
-
-final sampleAsyncFrame = CallFrame({
-  'functionName': 'myFunc',
-  'url': '',
-  'scriptId': '71',
-  'lineNumber': 40,
-  'columnNumber': 1,
-});
-
-final Map<String, WipScript> scripts = {
-  '69': WipScript(<String, dynamic>{'url': 'http://127.0.0.1:8081/foo.ddc.js'}),
-  '71': WipScript(<String, dynamic>{'url': 'http://127.0.0.1:8081/bar.ddc.js'}),
-};
-
-void main() async {
-  setUpAll(() async {
-    webkitDebugger = FakeWebkitDebugger(scripts: scripts);
-    pausedController = StreamController<DebuggerPausedEvent>();
-    webkitDebugger.onPaused = pausedController.stream;
-    final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-      loadStrategy: TestStrategy(FakeAssetReader()),
-    );
-    setGlobalsForTesting(toolConfiguration: toolConfiguration);
-    final root = 'fakeRoot';
-    locations = Locations(
-      FakeAssetReader(sourceMap: sourceMapContents),
-      FakeModules(),
-      root,
-    );
-    await locations.initialize('fake_entrypoint');
-    skipLists = SkipLists(root);
-    debugger = await Debugger.create(
-      webkitDebugger,
-      (_, _) {},
-      locations,
-      skipLists,
-      root,
-    );
-    inspector = FakeChromeAppInspector(
-      webkitDebugger,
-      fakeIsolate: simpleIsolate,
-    );
-    debugger.updateInspector(inspector);
-  });
-
-  /// Test that we get expected variable values from a hard-coded
-  /// stack frame.
-  test('frames 1', () async {
-    final stackComputer = FrameComputer(debugger, frames1);
-    final frames = await stackComputer.calculateFrames();
-    expect(frames, isNotNull);
-    expect(frames, isNotEmpty);
-
-    final firstFrameVars = frames[0].vars!;
-    final frame1Variables = firstFrameVars.map((each) => each.name).toList();
-    expect(frame1Variables, ['a', 'b']);
-  });
-
-  test('creates async frames', () async {
-    final stackComputer = FrameComputer(
-      debugger,
-      [sampleSyncFrame],
-      asyncStackTrace: StackTrace({
-        'callFrames': [sampleAsyncFrame.json],
-        'parent': StackTrace({
-          'callFrames': [sampleAsyncFrame.json],
-        }).json,
-      }),
-    );
-
-    final frames = await stackComputer.calculateFrames();
-    expect(frames, hasLength(5));
-
-    expect(frames[0].kind, FrameKind.kRegular);
-    expect(frames[1].kind, FrameKind.kAsyncSuspensionMarker);
-    expect(frames[2].kind, FrameKind.kAsyncCausal);
-    expect(frames[3].kind, FrameKind.kAsyncSuspensionMarker);
-    expect(frames[4].kind, FrameKind.kAsyncCausal);
-  });
-
-  test('elides multiple async frames', () async {
-    final stackComputer = FrameComputer(
-      debugger,
-      [sampleSyncFrame],
-      asyncStackTrace: StackTrace({
-        'callFrames': [sampleAsyncFrame.json],
-        'parent': StackTrace({
-          'callFrames': <Map<String, dynamic>>[],
-          'parent': StackTrace({
-            'callFrames': [sampleAsyncFrame.json],
-            'parent': StackTrace({'callFrames': <Map<String, dynamic>>[]}).json,
-          }).json,
-        }).json,
-      }),
-    );
-
-    final frames = await stackComputer.calculateFrames();
-    expect(frames, hasLength(5));
-
-    expect(frames[0].kind, FrameKind.kRegular);
-    expect(frames[1].kind, FrameKind.kAsyncSuspensionMarker);
-    expect(frames[2].kind, FrameKind.kAsyncCausal);
-    expect(frames[3].kind, FrameKind.kAsyncSuspensionMarker);
-    expect(frames[4].kind, FrameKind.kAsyncCausal);
-  });
-
-  setUp(() {
-    // We need to provide an Isolate so that the code doesn't bail out on a null
-    // check before it has a chance to throw.
-    inspector = FakeChromeAppInspector(
-      webkitDebugger,
-      fakeIsolate: simpleIsolate,
-    );
-    debugger.updateInspector(inspector);
-  });
-
-  group('errors', () {
-    setUp(() {
-      // We need to provide an Isolate so that the code doesn't bail out on a
-      // null check before it has a chance to throw.
-      inspector = FakeChromeAppInspector(
-        webkitDebugger,
-        fakeIsolate: simpleIsolate,
-      );
-      debugger.updateInspector(inspector);
-    });
-
-    test('errors in the zone are caught and logged', () async {
-      // Add a DebuggerPausedEvent with a null parameter to provoke an error.
-      pausedController.sink.add(
-        DebuggerPausedEvent({
-          'method': '',
-          'params': {
-            'reason': 'other',
-            'callFrames': [
-              {'callFrameId': '', 'functionName': ''},
-            ],
-          },
-        }),
-      );
-      expect(
-        Debugger.logger.onRecord,
-        emitsThrough(
-          predicate(
-            (LogRecord log) =>
-                log.message.contains('Error calculating sync frame'),
-          ),
-        ),
-      );
-    });
-  });
-}
diff --git a/dwds/test/integration/devtools_amd_test.dart b/dwds/test/integration/devtools_amd_test.dart
deleted file mode 100644
index 1ce6a59..0000000
--- a/dwds/test/integration/devtools_amd_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 5))
-@TestOn('vm')
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'devtools_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider(
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/devtools_common.dart b/dwds/test/integration/devtools_common.dart
deleted file mode 100644
index 8d8a4e6..0000000
--- a/dwds/test/integration/devtools_common.dart
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-// ignore: deprecated_member_use
-import 'package:webdriver/io.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-Future<void> _waitForPageReady(TestContext context) async {
-  var attempt = 100;
-  while (attempt-- > 0) {
-    final content = await context.webDriver.pageSource;
-    if (content.contains('hello_world')) return;
-    await Future<void>.delayed(const Duration(milliseconds: 100));
-  }
-  throw StateError('Page never initialized');
-}
-
-TypeMatcher<Event> _hasKind(String kind) =>
-    isA<Event>().having((Event e) => e.kind, 'kind', kind);
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.test, provider);
-
-  for (final serveFromDds in [true, false]) {
-    group('Injected client with DevTools served from '
-        '${serveFromDds ? 'DDS' : 'DevTools Launcher'}', () {
-      setUp(() async {
-        await context.setUp(
-          debugSettings: TestDebugSettings.withDevToolsLaunch(
-            context,
-            serveFromDds: serveFromDds,
-          ),
-          testSettings: TestSettings(
-            moduleFormat: provider.ddcModuleFormat,
-            canaryFeatures: provider.canaryFeatures,
-          ),
-        );
-        await context.webDriver.driver.keyboard.sendChord([Keyboard.alt, 'd']);
-        // Wait for DevTools to actually open.
-        await Future<void>.delayed(const Duration(seconds: 2));
-      });
-
-      tearDown(() async {
-        await context.tearDown();
-      });
-
-      test('can launch devtools', () async {
-        final windows = await context.webDriver.windows.toList();
-        await context.webDriver.driver.switchTo.window(windows.last);
-        expect(await context.webDriver.pageSource, contains('flutter-view'));
-        expect(await context.webDriver.currentUrl, contains('ide=Dwds'));
-        // TODO(https://github.com/dart-lang/webdev/issues/1888): Re-enable.
-      }, skip: Platform.isWindows);
-
-      test(
-        'can not launch devtools for the same app in multiple tabs',
-        () async {
-          final appUrl = await context.webDriver.currentUrl;
-          // Open a new tab, select it, and navigate to the app
-          await context.webDriver.driver.execute(
-            "window.open('$appUrl', '_blank');",
-            [],
-          );
-          await Future<void>.delayed(const Duration(seconds: 2));
-          final newAppWindow = await context.webDriver.windows.last;
-          await newAppWindow.setAsActive();
-
-          // Wait for the page to be ready before trying to open DevTools
-          // again.
-          await _waitForPageReady(context);
-
-          // Try to open devtools and check for the alert.
-          await context.webDriver.driver.keyboard.sendChord([
-            Keyboard.alt,
-            'd',
-          ]);
-          await Future<void>.delayed(const Duration(seconds: 2));
-          final alert = context.webDriver.driver.switchTo.alert;
-          expect(alert, isNotNull);
-          expect(
-            await alert.text,
-            contains('This app is already being debugged in a different tab'),
-          );
-          await alert.accept();
-
-          var windows = await context.webDriver.windows.toList();
-          for (final window in windows) {
-            if (window.id != newAppWindow.id) {
-              await window.setAsActive();
-              await window.close();
-            }
-          }
-
-          await newAppWindow.setAsActive();
-          await context.webDriver.driver.keyboard.sendChord([
-            Keyboard.alt,
-            'd',
-          ]);
-          await Future<void>.delayed(const Duration(seconds: 2));
-          windows = await context.webDriver.windows.toList();
-          final devToolsWindow = windows.firstWhere(
-            (Window window) => window != newAppWindow,
-          );
-          await devToolsWindow.setAsActive();
-          expect(await context.webDriver.pageSource, contains('DevTools'));
-        },
-        skip: 'See https://github.com/dart-lang/webdev/issues/2462',
-      );
-
-      test(
-        'destroys and recreates the isolate during a page refresh',
-        () async {
-          final client = context.debugConnection.vmService;
-          await client.streamListen('Isolate');
-          await context.makeEdits([
-            (
-              file: context.project.dartEntryFileName,
-              originalString: 'Hello World!',
-              newString: 'Bonjour le monde!',
-            ),
-          ]);
-          await context.waitForSuccessfulBuild(propagateToBrowser: true);
-
-          final eventsDone = expectLater(
-            client.onIsolateEvent,
-            emitsThrough(
-              emitsInOrder([
-                _hasKind(EventKind.kIsolateExit),
-                _hasKind(EventKind.kIsolateStart),
-                _hasKind(EventKind.kIsolateRunnable),
-              ]),
-            ),
-          );
-
-          await context.webDriver.driver.refresh();
-
-          await eventsDone;
-        },
-        skip: 'https://github.com/dart-lang/webdev/issues/1888',
-      );
-    }, timeout: const Timeout.factor(2));
-  }
-
-  group('Injected client without a DevTools server', () {
-    setUp(() async {
-      await context.setUp(
-        debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-          enableDevToolsLaunch: true,
-          ddsConfiguration: const DartDevelopmentServiceConfiguration(
-            serveDevTools: false,
-          ),
-        ),
-        testSettings: TestSettings(
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('gives a good error if devtools is not served', () async {
-      // Try to open devtools and check for the alert.
-      await context.webDriver.driver.keyboard.sendChord([Keyboard.alt, 'd']);
-      await Future<void>.delayed(const Duration(seconds: 2));
-      final alert = context.webDriver.driver.switchTo.alert;
-      expect(alert, isNotNull);
-      expect(await alert.text, contains('--debug'));
-      await alert.accept();
-    });
-  });
-
-  group(
-    'Injected client with debug extension and without DevTools',
-    () {
-      setUp(() async {
-        await context.setUp(
-          debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-            enableDebugExtension: true,
-          ),
-          testSettings: TestSettings(
-            moduleFormat: provider.ddcModuleFormat,
-            canaryFeatures: provider.canaryFeatures,
-          ),
-        );
-      });
-
-      tearDown(() async {
-        await context.tearDown();
-      });
-
-      test('gives a good error if devtools is not served', () async {
-        // Click on extension
-        await context.extensionConnection.sendCommand('Runtime.evaluate', {
-          'expression': 'fakeClick()',
-        });
-        // Try to open devtools and check for the alert.
-        await context.webDriver.driver.keyboard.sendChord([Keyboard.alt, 'd']);
-        await Future<void>.delayed(const Duration(seconds: 2));
-        final alert = context.webDriver.driver.switchTo.alert;
-        expect(alert, isNotNull);
-        expect(await alert.text, contains('--debug'));
-        await alert.accept();
-      });
-    },
-    tags: ['extension'],
-    skip: 'https://github.com/dart-lang/webdev/issues/2114',
-    timeout: const Timeout.factor(2),
-  );
-}
diff --git a/dwds/test/integration/devtools_ddc_library_bundle_test.dart b/dwds/test/integration/devtools_ddc_library_bundle_test.dart
deleted file mode 100644
index b6ad5bb..0000000
--- a/dwds/test/integration/devtools_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 5))
-@TestOn('vm')
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'devtools_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider(
-    ddcModuleFormat: ModuleFormat.ddc,
-    canaryFeatures: true,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/evaluate_amd_test.dart b/dwds/test/integration/evaluate_amd_test.dart
deleted file mode 100644
index 5bedc79..0000000
--- a/dwds/test/integration/evaluate_amd_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-
-  group('Frontend Server |', () {
-    for (final useDebuggerModuleNames in [false, true]) {
-      group('Debugger module names: $useDebuggerModuleNames |', () {
-        for (final indexBaseMode in IndexBaseMode.values) {
-          group(
-            'with ${indexBaseMode.name} |',
-            () {
-              testAll(
-                provider: provider,
-                compilationMode: CompilationMode.frontendServer,
-                indexBaseMode: indexBaseMode,
-                useDebuggerModuleNames: useDebuggerModuleNames,
-              );
-            },
-            // https://github.com/dart-lang/sdk/issues/49277
-            skip: indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-          );
-        }
-      });
-    }
-  });
-}
diff --git a/dwds/test/integration/evaluate_circular_common.dart b/dwds/test/integration/evaluate_circular_common.dart
deleted file mode 100644
index 8aa5700..0000000
--- a/dwds/test/integration/evaluate_circular_common.dart
+++ /dev/null
@@ -1,178 +0,0 @@
-// 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({
-  required TestSdkConfigurationProvider provider,
-  CompilationMode compilationMode = CompilationMode.buildDaemon,
-  IndexBaseMode indexBaseMode = IndexBaseMode.noBase,
-  bool useDebuggerModuleNames = false,
-}) {
-  if (compilationMode == CompilationMode.buildDaemon &&
-      indexBaseMode == IndexBaseMode.base) {
-    throw StateError(
-      'build daemon scenario does not support non-empty base in index file',
-    );
-  }
-
-  final testCircular1 = TestProject.testCircular1;
-  final testCircular2 = TestProject.testCircular2(baseMode: indexBaseMode);
-
-  final context = TestContext(testCircular2, provider);
-
-  Future<void> onBreakPoint(
-    String isolate,
-    ScriptRef script,
-    String breakPointId,
-    Future<void> Function() body,
-  ) async {
-    Breakpoint? bp;
-    try {
-      final line = await context.findBreakpointLine(
-        breakPointId,
-        isolate,
-        script,
-      );
-      bp = await context.service.addBreakpointWithScriptUri(
-        isolate,
-        script.uri!,
-        line,
-      );
-      await body();
-    } finally {
-      // Remove breakpoint so it doesn't impact other tests or retries.
-      if (bp != null) {
-        await context.service.removeBreakpoint(isolate, bp.id!);
-      }
-    }
-  }
-
-  group('shared context with evaluation', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          useDebuggerModuleNames: useDebuggerModuleNames,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: provider.canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-    group('evaluateInFrame', () {
-      late VmServiceInterface service;
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef test1LibraryScript;
-      late ScriptRef test2LibraryScript;
-      late Stream<Event> stream;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await service.getScripts(isolateId);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        final test1 = testCircular1.packageName;
-        final test2 = testCircular2.packageName;
-
-        test1LibraryScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('package:$test1/library1.dart'),
-        );
-        test2LibraryScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('package:$test2/library2.dart'),
-        );
-      });
-
-      tearDown(() async {
-        await service.resume(isolateId);
-      });
-
-      test('evaluate expression in _test_circular1/library', () async {
-        await onBreakPoint(
-          isolateId,
-          test1LibraryScript,
-          'Concatenate',
-          () async {
-            final event = await stream.firstWhere(
-              (event) => event.kind == EventKind.kPauseBreakpoint,
-            );
-
-            final result = await context.service.evaluateInFrame(
-              isolateId,
-              event.topFrame!.index!,
-              'a',
-            );
-
-            expect(
-              result,
-              isA<InstanceRef>().having(
-                (instance) => instance.valueAsString,
-                'valueAsString',
-                'a',
-              ),
-            );
-          },
-        );
-      });
-
-      test('evaluate expression in _test_circular2/library', () async {
-        await onBreakPoint(
-          isolateId,
-          test2LibraryScript,
-          'testCircularDependencies',
-          () async {
-            final event = await stream.firstWhere(
-              (event) => event.kind == EventKind.kPauseBreakpoint,
-            );
-
-            final result = await context.service.evaluateInFrame(
-              isolateId,
-              event.topFrame!.index!,
-              'true',
-            );
-
-            expect(
-              result,
-              isA<InstanceRef>().having(
-                (instance) => instance.valueAsString,
-                'valueAsString',
-                'true',
-              ),
-            );
-          },
-        );
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/evaluate_common.dart b/dwds/test/integration/evaluate_common.dart
deleted file mode 100644
index 3e3f8b5..0000000
--- a/dwds/test/integration/evaluate_common.dart
+++ /dev/null
@@ -1,937 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-
-import 'package:dwds/src/services/expression_evaluator.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:dwds_test_common/utilities.dart' show dartSdkIsAtLeast;
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({
-  required TestSdkConfigurationProvider provider,
-  CompilationMode compilationMode = CompilationMode.buildDaemon,
-  IndexBaseMode indexBaseMode = IndexBaseMode.noBase,
-  bool useDebuggerModuleNames = false,
-}) {
-  if (compilationMode == CompilationMode.buildDaemon &&
-      indexBaseMode == IndexBaseMode.base) {
-    throw StateError(
-      'build daemon scenario does not support non-empty base in index file',
-    );
-  }
-
-  final testProject = TestProject.test;
-  final testPackageProject = TestProject.testPackage(baseMode: indexBaseMode);
-
-  final context = TestContext(testPackageProject, provider);
-
-  Future<void> onBp(
-    Stream<Event> stream,
-    String isolate,
-    ScriptRef script,
-    String breakPointId,
-    Future<void> Function(Event event) body,
-  ) async {
-    Breakpoint? bp;
-    try {
-      final line = await context.findBreakpointLine(
-        breakPointId,
-        isolate,
-        script,
-      );
-      bp = await context.service.addBreakpointWithScriptUri(
-        isolate,
-        script.uri!,
-        line,
-      );
-      final event = await stream.firstWhere(
-        (Event event) => event.kind == EventKind.kPauseBreakpoint,
-      );
-      await body(event);
-    } finally {
-      // Remove breakpoint so it doesn't impact other tests or retries.
-      if (bp != null) {
-        await context.service.removeBreakpoint(isolate, bp.id!);
-      }
-    }
-  }
-
-  group('Shared context with evaluation |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          enableExpressionEvaluation: true,
-          useDebuggerModuleNames: useDebuggerModuleNames,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-    group('evaluateInFrame |', () {
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late ScriptRef libraryScript;
-      late ScriptRef testLibraryScript;
-      late ScriptRef testLibraryPartScript;
-      late Stream<Event> stream;
-      late StreamController<String> output;
-
-      setUp(() async {
-        output = StreamController<String>.broadcast();
-        output.stream.listen(provider.verbose ? print : printOnFailure);
-
-        configureLogWriter(
-          customLogWriter: (level, message, {error, loggerName, stackTrace}) {
-            final e = error == null ? '' : ': $error';
-            final s = stackTrace == null ? '' : ':\n$stackTrace';
-            if (!output.isClosed) {
-              output.add('[$level] $loggerName: $message$e$s');
-            }
-          },
-        );
-
-        vm = await context.service.getVM();
-        isolate = await context.service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await context.service.getScripts(isolateId);
-
-        await context.service.streamListen('Debug');
-        stream = context.service.onEvent('Debug');
-
-        final testPackage = testPackageProject.packageName;
-        final test = testProject.packageName;
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-        testLibraryScript = scripts.scripts!.firstWhere(
-          (each) =>
-              each.uri!.contains('package:$testPackage/test_library.dart'),
-        );
-        testLibraryPartScript = scripts.scripts!.firstWhere(
-          (each) =>
-              each.uri!.contains('package:$testPackage/src/test_part.dart'),
-        );
-        libraryScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('package:$test/library.dart'),
-        );
-      });
-
-      tearDown(() async {
-        await output.close();
-        try {
-          await context.service.resume(isolateId);
-        } catch (_) {}
-      });
-
-      Future<void> onBreakPoint(
-        ScriptRef script,
-        String bpId,
-        Future<void> Function(Event) body,
-      ) => onBp(stream, isolateId, script, bpId, body);
-
-      Future<Response> evaluateInFrame(
-        int frame,
-        String expr, {
-        Map<String, String>? scope,
-      }) async => await context.service.evaluateInFrame(
-        isolateId,
-        frame,
-        expr,
-        scope: scope,
-      );
-
-      Future<InstanceRef> getInstanceRef(
-        int frame,
-        String expr, {
-        Map<String, String>? scope,
-      }) async {
-        final result = await evaluateInFrame(frame, expr, scope: scope);
-        expect(result, isA<InstanceRef>());
-        return result as InstanceRef;
-      }
-
-      Future<Instance> getInstance(InstanceRef ref) async =>
-          await context.service.getObject(isolateId, ref.id!) as Instance;
-
-      test('with scope', () async {
-        await onBreakPoint(mainScript, 'printFrame1', (Event event) async {
-          final frame = event.topFrame!.index!;
-
-          final scope = {
-            'x1': (await getInstanceRef(frame, '"cat"')).id!,
-            'x2': (await getInstanceRef(frame, '2')).id!,
-            'x3': (await getInstanceRef(frame, 'MainClass(1,0)')).id!,
-          };
-
-          final result = await getInstanceRef(
-            frame,
-            '"\$x1\$x2 (\$x3) \$testLibraryValue (\$local1)"',
-            scope: scope,
-          );
-
-          expect(result, matchInstanceRef('cat2 (1, 0) 3 (1)'));
-        });
-      });
-
-      test('with large scope', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          const N = 20;
-          final frame = event.topFrame!.index!;
-
-          final scope = {
-            for (var i = 0; i < N; i++)
-              'x$i': (await getInstanceRef(frame, '$i')).id!,
-          };
-          final expression = [for (var i = 0; i < N; i++) '\$x$i'].join(' ');
-          final expected = [for (var i = 0; i < N; i++) '$i'].join(' ');
-
-          final result = await evaluateInFrame(
-            frame,
-            '"$expression"',
-            scope: scope,
-          );
-          expect(result, matchInstanceRef(expected));
-        });
-      });
-
-      test('with large code scope', () async {
-        await onBreakPoint(mainScript, 'printLargeScope', (Event event) async {
-          const xN = 2;
-          const tN = 20;
-          final frame = event.topFrame!.index!;
-
-          final scope = {
-            for (var i = 0; i < xN; i++)
-              'x$i': (await getInstanceRef(frame, '$i')).id!,
-          };
-          final expression = [
-            for (var i = 0; i < xN; i++) '\$x$i',
-            for (var i = 0; i < tN; i++) '\$t$i',
-          ].join(' ');
-          final expected = [
-            for (var i = 0; i < xN; i++) '$i',
-            for (var i = 0; i < tN; i++) '$i',
-          ].join(' ');
-
-          final result = await evaluateInFrame(
-            frame,
-            '"$expression"',
-            scope: scope,
-          );
-          expect(result, matchInstanceRef(expected));
-        });
-      });
-
-      test('with scope in caller frame', () async {
-        await onBreakPoint(mainScript, 'printFrame1', (Event event) async {
-          final frame = event.topFrame!.index! + 1;
-
-          final scope = {
-            'x1': (await getInstanceRef(frame, '"cat"')).id!,
-            'x2': (await getInstanceRef(frame, '2')).id!,
-            'x3': (await getInstanceRef(frame, 'MainClass(1,0)')).id!,
-          };
-
-          final result = await getInstanceRef(
-            frame,
-            '"\$x1\$x2 (\$x3) \$testLibraryValue (\$local2)"',
-            scope: scope,
-          );
-
-          expect(result, matchInstanceRef('cat2 (1, 0) 3 (2)'));
-        });
-      });
-
-      test('with scope and this', () async {
-        await onBreakPoint(mainScript, 'toStringMainClass', (
-          Event event,
-        ) async {
-          final frame = event.topFrame!.index!;
-
-          final scope = {'x1': (await getInstanceRef(frame, '"cat"')).id!};
-
-          final result = await getInstanceRef(
-            frame,
-            '"\$x1 \${this._field} \${this.field}"',
-            scope: scope,
-          );
-
-          expect(result, matchInstanceRef('cat 1 2'));
-        });
-      });
-
-      test('extension method scope variables can be evaluated', () async {
-        await onBreakPoint(mainScript, 'extension', (Event event) async {
-          final stack = await context.service.getStack(isolateId);
-          final scope = _getFrameVariables(stack.frames!.first);
-          for (final p in scope.entries) {
-            final name = p.key;
-            final value = p.value as InstanceRef;
-            final result = await getInstanceRef(event.topFrame!.index!, name!);
-
-            expect(result, matchInstanceRef(value.valueAsString));
-          }
-        });
-      }, skip: 'https://github.com/dart-lang/webdev/issues/1371');
-
-      test('does not crash if class metadata cannot be found', () async {
-        await onBreakPoint(mainScript, 'printStream', (Event event) async {
-          final instanceRef = await getInstanceRef(
-            event.topFrame!.index!,
-            'stream',
-          );
-          final instance = await getInstance(instanceRef);
-
-          expect(instance, matchInstanceClassName('_AsBroadcastStream<int>'));
-        });
-      });
-
-      test('local', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(event.topFrame!.index!, 'local');
-
-          expect(result, matchInstanceRef('42'));
-        });
-      });
-
-      test('Type does not show native JavaScript object fields', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final instanceRef = await getInstanceRef(
-            event.topFrame!.index!,
-            'Type',
-          );
-
-          // Type
-          final instance = await getInstance(instanceRef);
-          for (final field in instance.fields!) {
-            final name = field.decl!.name;
-            final fieldInstance = await getInstance(field.value as InstanceRef);
-
-            expect(
-              fieldInstance,
-              isA<Instance>().having(
-                (i) => i.classRef!.name,
-                'Type.$name: classRef.name',
-                isNot(isIn(['NativeJavaScriptObject', 'JavaScriptObject'])),
-              ),
-            );
-          }
-        });
-      });
-
-      test('field', () async {
-        await onBreakPoint(mainScript, 'printFieldFromLibraryClass', (
-          Event event,
-        ) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'instance.field',
-          );
-
-          expect(result, matchInstanceRef('1'));
-        });
-      });
-
-      test('private field from another library', () async {
-        await onBreakPoint(mainScript, 'printFieldFromLibraryClass', (
-          Event event,
-        ) async {
-          final result = await evaluateInFrame(
-            event.topFrame!.index!,
-            'instance._field',
-          );
-
-          if (dartSdkIsAtLeast('3.10.0-140.0.dev')) {
-            expect(result, matchInstanceRefKind('String'));
-            expect(
-              result,
-              matchInstanceRef(contains("NoSuchMethodError: '_field")),
-            );
-          } else {
-            expect(
-              result,
-              matchErrorRef(contains("The getter '_field' isn't defined")),
-            );
-          }
-        });
-      });
-
-      test('private field from current library', () async {
-        await onBreakPoint(mainScript, 'printFieldMain', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'instance._field',
-          );
-
-          expect(result, matchInstanceRef('1'));
-        });
-      });
-
-      test('access instance fields after evaluation', () async {
-        await onBreakPoint(mainScript, 'printFieldFromLibraryClass', (
-          Event event,
-        ) async {
-          final instanceRef = await getInstanceRef(
-            event.topFrame!.index!,
-            'instance',
-          );
-
-          final instance = await getInstance(instanceRef);
-          final field = instance.fields!.firstWhere(
-            (BoundField element) => element.decl!.name == 'field',
-          );
-
-          expect(field.value, matchInstanceRef('1'));
-        });
-      });
-
-      test('global', () async {
-        await onBreakPoint(mainScript, 'printGlobal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'testLibraryValue',
-          );
-
-          expect(result, matchInstanceRef('3'));
-        });
-      });
-
-      test('call core function', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'print(local)',
-          );
-
-          expect(result, matchInstanceRef('null'));
-        });
-      });
-
-      test('call library function with const param', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'testLibraryFunction(42)',
-          );
-
-          expect(result, matchInstanceRef('42'));
-        });
-      });
-
-      test('call library function with local param', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'testLibraryFunction(local)',
-          );
-
-          expect(result, matchInstanceRef('42'));
-        });
-      });
-
-      test('call library part function with const param', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'testLibraryPartFunction(42)',
-          );
-
-          expect(result, matchInstanceRef('42'));
-        });
-      });
-
-      test('call library part function with local param', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'testLibraryPartFunction(local)',
-          );
-
-          expect(result, matchInstanceRef('42'));
-        });
-      });
-
-      test('loop variable', () async {
-        await onBreakPoint(mainScript, 'printLoopVariable', (
-          Event event,
-        ) async {
-          final result = await getInstanceRef(event.topFrame!.index!, 'item');
-
-          expect(result, matchInstanceRef('1'));
-        });
-      });
-
-      test('evaluate expression in _test_package/test_library', () async {
-        await onBreakPoint(testLibraryScript, 'testLibraryFunction', (
-          Event event,
-        ) async {
-          final result = await getInstanceRef(event.topFrame!.index!, 'formal');
-
-          expect(result, matchInstanceRef('23'));
-        });
-      });
-
-      test('evaluate expression in a class constructor in a library', () async {
-        await onBreakPoint(testLibraryScript, 'testLibraryClassConstructor', (
-          Event event,
-        ) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index!,
-            'this.field',
-          );
-
-          expect(result, matchInstanceRef('1'));
-        });
-      });
-
-      test(
-        'evaluate expression in a class constructor in a library part',
-        () async {
-          await onBreakPoint(
-            testLibraryPartScript,
-            'testLibraryPartClassConstructor',
-            (Event event) async {
-              final result = await getInstanceRef(
-                event.topFrame!.index!,
-                'this.field',
-              );
-
-              expect(result, matchInstanceRef('1'));
-            },
-          );
-        },
-      );
-
-      test('evaluate expression in caller frame', () async {
-        await onBreakPoint(testLibraryScript, 'testLibraryFunction', (
-          Event event,
-        ) async {
-          final result = await getInstanceRef(
-            event.topFrame!.index! + 1,
-            'local',
-          );
-
-          expect(result, matchInstanceRef('23'));
-        });
-      });
-
-      test('evaluate expression in a library', () async {
-        await onBreakPoint(libraryScript, 'Concatenate', (Event event) async {
-          final result = await getInstanceRef(event.topFrame!.index!, 'a');
-
-          expect(result, matchInstanceRef('Hello'));
-        });
-      });
-
-      test('compilation error', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final error = await evaluateInFrame(event.topFrame!.index!, 'typo');
-
-          expect(
-            error,
-            matchErrorRef(contains(EvaluationErrorKind.compilation)),
-          );
-        });
-      });
-
-      test('async frame error', () async {
-        final maxAttempts = 100;
-
-        Response? error;
-        String? breakpointId;
-        try {
-          // Pause in client.js directly to force pausing in async code.
-          breakpointId = await _setBreakpointInInjectedClient(
-            context.tabConnection.debugger,
-          );
-
-          var attempt = 0;
-          do {
-            try {
-              await context.service.resume(isolateId);
-            } catch (_) {}
-
-            final event = stream.firstWhere(
-              (Event event) => event.kind == EventKind.kPauseInterrupted,
-            );
-            final frame = (await event).topFrame;
-            if (frame != null) {
-              error = await context.service.evaluateInFrame(
-                isolateId,
-                frame.index!,
-                'true',
-              );
-            }
-            expect(
-              attempt,
-              lessThan(maxAttempts),
-              reason:
-                  'Failed to receive and async frame error in $attempt '
-                  'attempts',
-            );
-            await Future<void>.delayed(const Duration(milliseconds: 10));
-            attempt++;
-          } while (error is! ErrorRef);
-        } finally {
-          if (breakpointId != null) {
-            await context.tabConnection.debugger.removeBreakpoint(breakpointId);
-          }
-        }
-
-        // Verify we receive an error when evaluating
-        // on async frame.
-        expect(error, matchErrorRef(contains(EvaluationErrorKind.asyncFrame)));
-
-        // Verify we don't emit errors or warnings
-        // on async frame evaluations.
-        output.stream.listen((String event) {
-          expect(event, isNot(contains('[WARNING]')));
-          expect(event, isNot(contains('[SEVERE]')));
-        });
-      });
-
-      test('module load error', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          final error = await evaluateInFrame(
-            event.topFrame!.index!,
-            'd.deferredPrintLocal()',
-          );
-
-          expect(
-            error,
-            matchErrorRef(contains(EvaluationErrorKind.loadModule)),
-          );
-        });
-      }, skip: 'https://github.com/dart-lang/sdk/issues/48587');
-
-      test('cannot evaluate in unsupported isolate', () async {
-        await onBreakPoint(mainScript, 'printLocal', (Event event) async {
-          await expectLater(
-            context.service.evaluateInFrame(
-              'bad',
-              event.topFrame!.index!,
-              'local',
-            ),
-            throwsSentinelException,
-          );
-        });
-      });
-    });
-
-    group('evaluate |', () {
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-
-      setUp(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        final service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-
-        await service.streamListen('Debug');
-      });
-
-      tearDown(() async {});
-
-      Future<Response> evaluate(
-        String? targetId,
-        String expr, {
-        Map<String, String>? scope,
-      }) async => await context.service.evaluate(
-        isolateId,
-        targetId!,
-        expr,
-        scope: scope,
-      );
-
-      Future<InstanceRef> getInstanceRef(
-        String? targetId,
-        String expr, {
-        Map<String, String>? scope,
-      }) async {
-        final result = await evaluate(targetId, expr, scope: scope);
-        expect(result, isA<InstanceRef>());
-        return result as InstanceRef;
-      }
-
-      String getRootLibraryId() {
-        expect(isolate.rootLib, isNotNull);
-        expect(isolate.rootLib!.id, isNotNull);
-        return isolate.rootLib!.id!;
-      }
-
-      test('RecordType getters', () async {
-        final libraryId = getRootLibraryId();
-
-        final type = await getInstanceRef(libraryId, '(0,1).runtimeType');
-        final result = await getInstanceRef(type.id, 'hashCode');
-
-        expect(result, matchInstanceRefKind('Double'));
-      }, skip: 'https://github.com/dart-lang/sdk/issues/54609');
-
-      test('Object getters', () async {
-        final libraryId = getRootLibraryId();
-
-        final type = await getInstanceRef(libraryId, 'Object()');
-        final result = await getInstanceRef(type.id, 'hashCode');
-
-        expect(result, matchInstanceRefKind('Double'));
-      });
-
-      test('with scope', () async {
-        final libraryId = getRootLibraryId();
-
-        final scope = {
-          'x1': (await getInstanceRef(libraryId, '"cat"')).id!,
-          'x2': (await getInstanceRef(libraryId, '2')).id!,
-          'x3': (await getInstanceRef(libraryId, 'MainClass(1,0)')).id!,
-        };
-
-        final result = await getInstanceRef(
-          libraryId,
-          '"\$x1\$x2 (\$x3) \$testLibraryValue"',
-          scope: scope,
-        );
-
-        expect(result, matchInstanceRef('cat2 (1, 0) 3'));
-      });
-
-      test('with large scope', () async {
-        final libraryId = getRootLibraryId();
-        const N = 2;
-
-        final scope = {
-          for (var i = 0; i < N; i++)
-            'x$i': (await getInstanceRef(libraryId, '$i')).id!,
-        };
-        final expression = [for (var i = 0; i < N; i++) '\$x$i'].join(' ');
-        final expected = [for (var i = 0; i < N; i++) '$i'].join(' ');
-
-        final result = await getInstanceRef(
-          libraryId,
-          '"$expression"',
-          scope: scope,
-        );
-        expect(result, matchInstanceRef(expected));
-      });
-
-      test('in parallel (in a batch)', () async {
-        final libraryId = getRootLibraryId();
-
-        final evaluation1 = getInstanceRef(
-          libraryId,
-          'MainClass(1,0).toString()',
-        );
-        final evaluation2 = getInstanceRef(
-          libraryId,
-          'MainClass(1,1).toString()',
-        );
-
-        final results = await Future.wait([evaluation1, evaluation2]);
-        expect(results[0], matchInstanceRef('1, 0'));
-        expect(results[1], matchInstanceRef('1, 1'));
-      });
-
-      test('in parallel (in a batch) handles errors', () async {
-        final libraryId = getRootLibraryId();
-        final missingLibId = '';
-
-        final evaluation1 = evaluate(missingLibId, 'MainClass(1,0).toString()');
-        final evaluation2 = evaluate(libraryId, 'MainClass(1,1).toString()');
-
-        final results = await Future.wait([evaluation1, evaluation2]);
-        expect(
-          results[0],
-          matchErrorRef(
-            contains('Evaluate is called on an unsupported target'),
-          ),
-        );
-        expect(results[1], matchInstanceRef('1, 1'));
-      });
-
-      test('with scope override', () async {
-        final libraryId = getRootLibraryId();
-
-        final param = await getInstanceRef(libraryId, 'MainClass(1,0)');
-        final result = await getInstanceRef(
-          libraryId,
-          't.toString()',
-          scope: {'t': param.id!},
-        );
-
-        expect(result, matchInstanceRef('1, 0'));
-      });
-
-      test('uses symbol from the same library', () async {
-        final libraryId = getRootLibraryId();
-
-        final result = await getInstanceRef(
-          libraryId,
-          'MainClass(1,0).toString()',
-        );
-
-        expect(result, matchInstanceRef('1, 0'));
-      });
-
-      test('uses symbol from another library', () async {
-        final libraryId = getRootLibraryId();
-        final result = await getInstanceRef(
-          libraryId,
-          'TestLibraryClass(0,1).toString()',
-        );
-
-        expect(result, matchInstanceRef('field: 0, _field: 1'));
-      });
-
-      test('closure call', () async {
-        final libraryId = getRootLibraryId();
-        final result = await getInstanceRef(libraryId, '(() => 42)()');
-
-        expect(result, matchInstanceRef('42'));
-      });
-    });
-  }, timeout: const Timeout.factor(2));
-
-  group('shared context with no evaluation |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          enableExpressionEvaluation: false,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-    group('evaluateInFrame |', () {
-      VM vm;
-      late Isolate isolate;
-      late String isolateId;
-      ScriptList scripts;
-      late ScriptRef mainScript;
-      late Stream<Event> stream;
-
-      setUp(() async {
-        final service = context.service;
-        vm = await service.getVM();
-        isolate = await service.getIsolate(vm.isolates!.first.id!);
-        isolateId = isolate.id!;
-        scripts = await service.getScripts(isolateId);
-
-        await service.streamListen('Debug');
-        stream = service.onEvent('Debug');
-
-        mainScript = scripts.scripts!.firstWhere(
-          (each) => each.uri!.contains('main.dart'),
-        );
-      });
-
-      tearDown(() async {
-        await context.service.resume(isolateId);
-      });
-
-      test('cannot evaluate expression', () async {
-        await onBp(stream, isolateId, mainScript, 'printLocal', (
-          Event event,
-        ) async {
-          await expectLater(
-            context.service.evaluateInFrame(
-              isolateId,
-              event.topFrame!.index!,
-              'local',
-            ),
-            throwsRPCError,
-          );
-        });
-      });
-    });
-  });
-}
-
-Map<String?, InstanceRef?> _getFrameVariables(Frame frame) {
-  return <String?, InstanceRef?>{
-    for (final variable in frame.vars!)
-      variable.name: variable.value as InstanceRef?,
-  };
-}
-
-Future<String> _setBreakpointInInjectedClient(WipDebugger debugger) async {
-  final client = 'dwds/src/injected/client.js';
-  final clientScript = debugger.scripts.values.firstWhere(
-    (e) => e.url.contains(client),
-  );
-  final clientSource = await debugger.getScriptSource(clientScript.scriptId);
-
-  final line = clientSource
-      .split('\n')
-      .indexWhere((element) => element.contains('convertDartClosureToJS'));
-
-  final result = await debugger.sendCommand(
-    'Debugger.setBreakpointByUrl',
-    params: {
-      'urlRegex': '.*$client',
-      'lineNumber': line + 4,
-      'columnNumber': 0,
-    },
-  );
-  final responseMap = result.json['result'] as Map<String, dynamic>;
-  return responseMap['breakpointId'] as String;
-}
-
-Matcher matchInstanceRefKind(String kind) =>
-    isA<InstanceRef>().having((instance) => instance.kind, 'kind', kind);
-
-Matcher matchInstanceRef(dynamic value) => isA<InstanceRef>().having(
-  (instance) => instance.valueAsString,
-  'valueAsString',
-  value,
-);
-
-Matcher matchInstanceClassName(dynamic className) => isA<Instance>().having(
-  (instance) => instance.classRef!.name,
-  'class name',
-  className,
-);
-
-Matcher matchInstanceRefClassName(dynamic className) => isA<InstanceRef>()
-    .having((instance) => instance.classRef!.name, 'class name', className);
-
-Matcher matchErrorRef(dynamic message) =>
-    isA<ErrorRef>().having((instance) => instance.message, 'message', message);
diff --git a/dwds/test/integration/evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/evaluate_ddc_library_bundle_test.dart
deleted file mode 100644
index e8783c8..0000000
--- a/dwds/test/integration/evaluate_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('Canary: true |', () {
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      ddcModuleFormat: ModuleFormat.ddc,
-      canaryFeatures: true,
-    );
-    tearDownAll(provider.dispose);
-
-    group('Build Daemon |', () {
-      testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-    });
-
-    group('Frontend Server |', () {
-      for (final useDebuggerModuleNames in [false, true]) {
-        group('Debugger module names: $useDebuggerModuleNames |', () {
-          for (final indexBaseMode in IndexBaseMode.values) {
-            group(
-              'with ${indexBaseMode.name} |',
-              () {
-                testAll(
-                  provider: provider,
-                  compilationMode: CompilationMode.frontendServer,
-                  indexBaseMode: indexBaseMode,
-                  useDebuggerModuleNames: useDebuggerModuleNames,
-                );
-              },
-              // https://github.com/dart-lang/sdk/issues/49277
-              skip: indexBaseMode == IndexBaseMode.base && Platform.isWindows
-                  ? 'Skipped on Windows when indexBaseMode is base. See issue: https://github.com/dart-lang/sdk/issues/49277'
-                  : null,
-            );
-          }
-        });
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/evaluate_parts_common.dart b/dwds/test/integration/evaluate_parts_common.dart
deleted file mode 100644
index 21c6155..0000000
--- a/dwds/test/integration/evaluate_parts_common.dart
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({
-  required TestSdkConfigurationProvider provider,
-  CompilationMode compilationMode = CompilationMode.buildDaemon,
-  IndexBaseMode indexBaseMode = IndexBaseMode.noBase,
-  bool useDebuggerModuleNames = false,
-}) {
-  if (compilationMode == CompilationMode.buildDaemon &&
-      indexBaseMode == IndexBaseMode.base) {
-    throw StateError(
-      'build daemon scenario does not support non-empty base in index file',
-    );
-  }
-
-  final testParts = TestProject.testParts(baseMode: indexBaseMode);
-
-  final context = TestContext(testParts, provider);
-
-  Future<void> onBreakPoint(
-    String isolate,
-    ScriptRef script,
-    String breakPointId,
-    Future<void> Function() body,
-  ) async {
-    Breakpoint? bp;
-    try {
-      final line = await context.findBreakpointLine(
-        breakPointId,
-        isolate,
-        script,
-      );
-      bp = await context.service.addBreakpointWithScriptUri(
-        isolate,
-        script.uri!,
-        line,
-      );
-      await body();
-    } finally {
-      // Remove breakpoint so it doesn't impact other tests or retries.
-      if (bp != null) {
-        await context.service.removeBreakpoint(isolate, bp.id!);
-      }
-    }
-  }
-
-  group('shared context with evaluation - evaluateInFrame', () {
-    late VmServiceInterface service;
-    late String isolateId;
-    late ScriptRef mainScript;
-    late ScriptRef part1Script;
-    late ScriptRef part2Script;
-    late ScriptRef part3Script;
-    late Stream<Event> stream;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          useDebuggerModuleNames: useDebuggerModuleNames,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: provider.canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-
-      service = context.service;
-      final vm = await service.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      isolateId = isolate.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      ScriptRef findScript(String path) {
-        return scripts.scripts!.firstWhere((e) => e.uri!.contains(path));
-      }
-
-      await service.streamListen(EventStreams.kDebug);
-      stream = service.onEvent(EventStreams.kDebug);
-
-      final packageName = testParts.packageName;
-
-      mainScript = findScript('package:$packageName/library.dart');
-      part1Script = findScript('package:$packageName/part1.dart');
-      part2Script = findScript('package:$packageName/part2.dart');
-      part3Script = findScript('package:$packageName/part3.dart');
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('evaluate expression in main library and parts', () async {
-      // Main library.
-      await onBreakPoint(isolateId, mainScript, 'Concatenate1', () async {
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        final result = await context.service.evaluateInFrame(
-          isolateId,
-          event.topFrame!.index!,
-          'a.substring(2, 4)',
-        );
-
-        expect(
-          result,
-          isA<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'valueAsString',
-            'll',
-          ),
-        );
-      });
-      await service.resume(isolateId);
-
-      // Part 1.
-      await onBreakPoint(isolateId, part1Script, 'Concatenate2', () async {
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        final result = await context.service.evaluateInFrame(
-          isolateId,
-          event.topFrame!.index!,
-          'a + b + 37',
-        );
-
-        expect(
-          result,
-          isA<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'valueAsString',
-            '42',
-          ),
-        );
-      });
-      await service.resume(isolateId);
-
-      // Part 2.
-      await onBreakPoint(isolateId, part2Script, 'Concatenate3', () async {
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        final result = await context.service.evaluateInFrame(
-          isolateId,
-          event.topFrame!.index!,
-          'a.length + b + 1',
-        );
-
-        expect(
-          result,
-          isA<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'valueAsString',
-            '42.42',
-          ),
-        );
-      });
-      await service.resume(isolateId);
-
-      // Part 3.
-      await onBreakPoint(isolateId, part3Script, 'Concatenate4', () async {
-        final event = await stream.firstWhere(
-          (event) => event.kind == EventKind.kPauseBreakpoint,
-        );
-
-        final result = await context.service.evaluateInFrame(
-          isolateId,
-          event.topFrame!.index!,
-          '(List.of(a)..add(b.keys.first)).toString()',
-        );
-
-        expect(
-          result,
-          isA<InstanceRef>().having(
-            (instance) => instance.valueAsString,
-            'valueAsString',
-            '[hello, world, foo]',
-          ),
-        );
-      });
-      await service.resume(isolateId);
-    });
-  });
-}
diff --git a/dwds/test/integration/events_amd_test.dart b/dwds/test/integration/events_amd_test.dart
deleted file mode 100644
index db87a0d..0000000
--- a/dwds/test/integration/events_amd_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:dwds/src/events.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'events_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  group('serve requests', () {
-    late HttpServer server;
-
-    setUp(() async {
-      setCurrentLogWriter();
-      server = await startHttpServer('localhost', port: 0);
-    });
-
-    tearDown(() async {
-      await server.close();
-    });
-
-    test('emits HTTP_REQUEST_EXCEPTION event', () async {
-      Future<void> throwAsyncException() async {
-        await Future<void>.delayed(const Duration(milliseconds: 100));
-        throw Exception('async error');
-      }
-
-      // The events stream is a broadcast stream so start listening
-      // before the action.
-      final events = expectLater(
-        pipe(eventStream),
-        emitsThrough(
-          matchesEvent(DwdsEventKind.httpRequestException, {
-            'server': 'FakeServer',
-            'exception': startsWith('Exception: async error'),
-          }),
-        ),
-      );
-
-      // Start serving requests with a failing handler in an error zone.
-      serveHttpRequests(
-        server,
-        (request) async {
-          unawaited(throwAsyncException());
-          return Future.error('error');
-        },
-        (e, s) {
-          emitEvent(DwdsEvent.httpRequestException('FakeServer', '$e:$s'));
-        },
-      );
-
-      // Send a request.
-      final client = HttpClient();
-      final request = await client.getUrl(
-        Uri.parse('http://localhost:${server.port}/foo'),
-      );
-
-      // Ignore the response.
-      final response = await request.close();
-      await response.drain<void>();
-
-      // Wait for expected events.
-      await events;
-    });
-  });
-
-  group('Frontend Server', () {
-    testWithDwds(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-
-  group('Build Daemon', () {
-    testWithDwds(
-      provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-}
diff --git a/dwds/test/integration/events_common.dart b/dwds/test/integration/events_common.dart
deleted file mode 100644
index c8e050d..0000000
--- a/dwds/test/integration/events_common.dart
+++ /dev/null
@@ -1,507 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:dwds/src/events.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-import 'package:webdriver/async_core.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testWithDwds({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-}) {
-  final context = TestContext(TestProject.test, provider);
-
-  group(
-    'with dwds',
-    () {
-      Future? initialEvents;
-      late Keyboard keyboard;
-      late Stream<DwdsEvent> events;
-      late VmService fakeClient;
-
-      /// Runs [action] and waits for an event matching [eventMatcher].
-      Future<T> expectEventDuring<T>(
-        Matcher eventMatcher,
-        Future<T> Function() action, {
-        Timeout? timeout,
-      }) async {
-        // The events stream is a broadcast stream so start listening
-        // before the action.
-        final events = expectLater(
-          pipe(context.testServer.dwds.events, timeout: timeout),
-          emitsThrough(eventMatcher),
-        );
-        final result = await action();
-        await events;
-        return result;
-      }
-
-      /// Runs [action] and waits for an event matching [eventMatcher].
-      Future<T> expectEventsDuring<T>(
-        List<Matcher> eventMatchers,
-        Future<T> Function() action, {
-        Timeout? timeout,
-      }) async {
-        // The events stream is a broadcast stream so start listening
-        // before the action.
-        final events = eventMatchers.map(
-          (matcher) => expectLater(
-            pipe(context.testServer.dwds.events, timeout: timeout),
-            emitsThrough(matcher),
-          ),
-        );
-        final result = await action();
-        await Future.wait(events);
-        return result;
-      }
-
-      setUpAll(() async {
-        setCurrentLogWriter(debug: provider.verbose);
-        initialEvents = expectLater(
-          pipe(eventStream, timeout: const Timeout.factor(5)),
-          emitsThrough(
-            matchesEvent(DwdsEventKind.compilerUpdateDependencies, {
-              if (compilationMode == CompilationMode.frontendServer)
-                'entrypoint': 'example/hello_world/main_module.bootstrap.js'
-              else
-                'entrypoint': 'hello_world/main.dart.bootstrap.js',
-              'elapsedMilliseconds': isNotNull,
-            }),
-          ),
-        );
-        await context.setUp(
-          testSettings: TestSettings(
-            compilationMode: compilationMode,
-            enableExpressionEvaluation: true,
-            moduleFormat: provider.ddcModuleFormat,
-            verboseCompiler: provider.verbose,
-            canaryFeatures: provider.canaryFeatures,
-          ),
-          debugSettings: TestDebugSettings.withDevToolsLaunch(context),
-        );
-        keyboard = context.webDriver.driver.keyboard;
-        events = context.testServer.dwds.events;
-        fakeClient = await context.connectFakeClient();
-      });
-
-      tearDownAll(() async {
-        await context.tearDown();
-      });
-
-      test('emits DEBUGGER_READY and DEVTOOLS_LOAD events', () async {
-        await expectEventsDuring([
-          matchesEvent(DwdsEventKind.debuggerReady, {
-            'elapsedMilliseconds': isNotNull,
-            'screen': equals('debugger'),
-          }),
-          matchesEvent(DwdsEventKind.devToolsLoad, {
-            'elapsedMilliseconds': isNotNull,
-            'screen': equals('debugger'),
-          }),
-        ], () => keyboard.sendChord([Keyboard.alt, 'd']));
-      }, skip: 'https://github.com/dart-lang/webdev/issues/2394');
-
-      test('emits DEVTOOLS_LAUNCH event', () async {
-        await expectEventDuring(
-          matchesEvent(DwdsEventKind.devtoolsLaunch, {}),
-          () => keyboard.sendChord([Keyboard.alt, 'd']),
-        );
-      });
-
-      test('events can be listened to multiple times', () async {
-        events.listen((_) {});
-        events.listen((_) {});
-      });
-
-      test('can emit event through service extension', () async {
-        final response = await expectEventDuring(
-          matchesEvent('foo-event', {'data': 1234}),
-          () => fakeClient.callServiceExtension(
-            'ext.dwds.emitEvent',
-            args: {
-              'type': 'foo-event',
-              'payload': {'data': 1234},
-            },
-          ),
-        );
-        expect(response.type, 'Success');
-      });
-
-      group('evaluate', () {
-        late VmServiceInterface service;
-        late String isolateId;
-        late String bootstrapId;
-
-        setUpAll(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-          final isolate = await service.getIsolate(vm.isolates!.first.id!);
-          isolateId = isolate.id!;
-          bootstrapId = isolate.rootLib!.id!;
-        });
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('emits EVALUATE events on evaluation success', () async {
-          final expression = "helloString('world')";
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.evaluate, {
-              'expression': expression,
-              'success': isTrue,
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.evaluate(isolateId, bootstrapId, expression),
-          );
-        });
-
-        test('emits COMPILER_UPDATE_DEPENDENCIES event', () async {
-          await initialEvents;
-        });
-
-        test('emits EVALUATE events on evaluation failure', () async {
-          final expression = 'some-bad-expression';
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.evaluate, {
-              'expression': expression,
-              'success': isFalse,
-              'error': isA<ErrorRef>(),
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.evaluate(isolateId, bootstrapId, expression),
-          );
-        });
-      });
-
-      group('evaluateInFrame', () {
-        late VmServiceInterface service;
-        late String isolateId;
-        late Stream<Event> stream;
-        late ScriptRef mainScript;
-
-        setUpAll(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-
-          isolateId = vm.isolates!.first.id!;
-          await service.streamListen('Debug');
-          stream = service.onEvent('Debug');
-          final scriptList = await service.getScripts(isolateId);
-          mainScript = scriptList.scripts!.firstWhere(
-            (script) => script.uri!.contains('main.dart'),
-          );
-        });
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('emits EVALUATE_IN_FRAME events on RPC error', () async {
-          final expression = 'some-bad-expression';
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.evaluateInFrame, {
-              'expression': expression,
-              'success': isFalse,
-              'exception': isA<RPCError>().having(
-                (e) => e.message,
-                'message',
-                contains('program is not paused'),
-              ),
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service
-                .evaluateInFrame(isolateId, 0, expression)
-                .catchError((_) => Future.value(Response())),
-          );
-        });
-
-        test('emits EVALUATE_IN_FRAME events on evaluation error', () async {
-          final line = await context.findBreakpointLine(
-            'callPrintCount',
-            isolateId,
-            mainScript,
-          );
-          final bp = await service.addBreakpoint(
-            isolateId,
-            mainScript.id!,
-            line,
-          );
-          // Wait for breakpoint to trigger.
-          await stream.firstWhere(
-            (event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-
-          // Evaluation succeeds and return ErrorRef containing compilation
-          // error, so event is marked as success.
-          final expression = 'some-bad-expression';
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.evaluateInFrame, {
-              'expression': expression,
-              'success': isFalse,
-              'error': isA<ErrorRef>(),
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service
-                .evaluateInFrame(isolateId, 0, expression)
-                .catchError((_) => Future.value(Response())),
-          );
-
-          await service.removeBreakpoint(isolateId, bp.id!);
-          await service.resume(isolateId);
-        });
-
-        test('emits EVALUATE_IN_FRAME events on evaluation success', () async {
-          final line = await context.findBreakpointLine(
-            'callPrintCount',
-            isolateId,
-            mainScript,
-          );
-          final bp = await service.addBreakpoint(
-            isolateId,
-            mainScript.id!,
-            line,
-          );
-          // Wait for breakpoint to trigger.
-          await stream.firstWhere(
-            (event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-
-          // Evaluation succeeds and return InstanceRef,
-          // so event is marked as success.
-          final expression = 'true';
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.evaluateInFrame, {
-              'expression': expression,
-              'success': isTrue,
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service
-                .evaluateInFrame(isolateId, 0, expression)
-                .catchError((_) => Future.value(Response())),
-          );
-
-          await service.removeBreakpoint(isolateId, bp.id!);
-          await service.resume(isolateId);
-        });
-      });
-
-      group('getSourceReport', () {
-        late VmServiceInterface service;
-        late String isolateId;
-        late ScriptRef mainScript;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-          isolateId = vm.isolates!.first.id!;
-          final scriptList = await service.getScripts(isolateId);
-
-          mainScript = scriptList.scripts!.firstWhere(
-            (script) => script.uri!.contains('main.dart'),
-          );
-        });
-
-        test('emits GET_SOURCE_REPORT events', () async {
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.getSourceReport, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.getSourceReport(isolateId, [
-              SourceReportKind.kPossibleBreakpoints,
-            ], scriptId: mainScript.id),
-          );
-        });
-      });
-
-      group('getScripts', () {
-        late VmServiceInterface service;
-        late String isolateId;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-          isolateId = vm.isolates!.first.id!;
-        });
-
-        test('emits GET_SCRIPTS events', () async {
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.getScripts, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.getScripts(isolateId),
-          );
-        });
-      });
-
-      group('getIsolate', () {
-        late VmServiceInterface service;
-        late String isolateId;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-          isolateId = vm.isolates!.first.id!;
-        });
-
-        test('emits GET_ISOLATE events', () async {
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.getIsolate, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.getIsolate(isolateId),
-          );
-        });
-      });
-
-      group('getVM', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('emits GET_VM events', () async {
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.getVM, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => context.service.getVM(),
-          );
-        });
-      });
-
-      group('hotRestart', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('emits HOT_RESTART event', () async {
-          final hotRestart = context.getRegisteredServiceExtension(
-            'hotRestart',
-          );
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.hotRestart, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => fakeClient.callServiceExtension(hotRestart!),
-          );
-        });
-      });
-
-      group('resume', () {
-        late VmServiceInterface service;
-        late String isolateId;
-
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-          service = context.service;
-          final vm = await service.getVM();
-          isolateId = vm.isolates!.first.id!;
-          await service.streamListen('Debug');
-          final stream = service.onEvent('Debug');
-          final scriptList = await service.getScripts(isolateId);
-          final mainScript = scriptList.scripts!.firstWhere(
-            (script) => script.uri!.contains('main.dart'),
-          );
-          final line = await context.findBreakpointLine(
-            'callPrintCount',
-            isolateId,
-            mainScript,
-          );
-          final bp = await service.addBreakpoint(
-            isolateId,
-            mainScript.id!,
-            line,
-          );
-          // Wait for breakpoint to trigger.
-          await stream.firstWhere(
-            (event) => event.kind == EventKind.kPauseBreakpoint,
-          );
-          await service.removeBreakpoint(isolateId, bp.id!);
-        });
-
-        tearDown(() async {
-          // We must resume execution in case a test left the isolate paused,
-          // but error 106 is expected if the isolate is already running.
-          try {
-            await service.resume(isolateId);
-          } on RPCError catch (e) {
-            if (e.code != 106) rethrow;
-          }
-        });
-
-        test('emits RESUME events', () async {
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.resume, {
-              'step': 'Into',
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => service.resume(isolateId, step: 'Into'),
-          );
-        });
-      });
-
-      group('fullReload', () {
-        setUp(() async {
-          setCurrentLogWriter(debug: provider.verbose);
-        });
-
-        test('emits FULL_RELOAD event', () async {
-          final fullReload = context.getRegisteredServiceExtension(
-            'fullReload',
-          );
-
-          await expectEventDuring(
-            matchesEvent(DwdsEventKind.fullReload, {
-              'elapsedMilliseconds': isNotNull,
-            }),
-            () => fakeClient.callServiceExtension(fullReload!),
-          );
-        });
-      });
-    },
-    // TODO(elliette): Re-enable (https://github.com/dart-lang/webdev/issues/1852).
-    skip: Platform.isWindows,
-    timeout: const Timeout.factor(2),
-  );
-}
-
-/// Matches event recursively.
-Matcher matchesEvent(String type, Map<String, Object> payload) {
-  return isA<DwdsEvent>()
-      .having((e) => e.type, 'type', type)
-      .having((e) => e.payload.keys, 'payload.keys', payload.keys)
-      .having((e) => e.payload.values, 'payload.values', payload.values);
-}
-
-/// Pipes the [stream] into a newly created stream.
-/// Returns the new stream which is closed on [timeout].
-Stream<DwdsEvent> pipe(Stream<DwdsEvent> stream, {Timeout? timeout}) {
-  final controller = StreamController<DwdsEvent>();
-  final defaultTimeout = const Timeout(Duration(seconds: 20));
-  timeout ??= defaultTimeout;
-  unawaited(
-    stream
-        .forEach(controller.add)
-        .timeout(defaultTimeout.merge(timeout).duration!)
-        .catchError((_) {})
-        .then((value) => controller.close()),
-  );
-  return controller.stream;
-}
diff --git a/dwds/test/integration/events_ddc_library_bundle_test.dart b/dwds/test/integration/events_ddc_library_bundle_test.dart
deleted file mode 100644
index 4f850e2..0000000
--- a/dwds/test/integration/events_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'events_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Frontend Server', () {
-    testWithDwds(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-
-  group('Build Daemon', () {
-    testWithDwds(
-      provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-}
diff --git a/dwds/test/integration/execution_context_test.dart b/dwds/test/integration/execution_context_test.dart
deleted file mode 100644
index 5ec431a..0000000
--- a/dwds/test/integration/execution_context_test.dart
+++ /dev/null
@@ -1,291 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/servers/extension_debugger.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:test/test.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/fakes.dart';
-
-void main() async {
-  const debug = false;
-
-  group('ExecutionContext', () {
-    setUpAll(() {
-      setCurrentLogWriter(debug: debug);
-    });
-
-    TestDebuggerConnection? debugger;
-    TestDebuggerConnection getDebugger() => debugger!;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: debug);
-      debugger = TestDebuggerConnection();
-    });
-
-    tearDown(() async {
-      await debugger?.close();
-    });
-
-    test('is created on devtools request', () async {
-      final debugger = getDebugger();
-      await debugger.createDebuggerExecutionContext(TestContextId.dartDefault);
-
-      // Expect the context ID to be set.
-      expect(await debugger.defaultContextId(), TestContextId.dartDefault);
-    });
-
-    test('clears context ID', () async {
-      final debugger = getDebugger();
-      await debugger.createDebuggerExecutionContext(TestContextId.dartDefault);
-
-      debugger.sendContextsClearedEvent();
-
-      // Expect non-dart context.
-      expect(await debugger.defaultContextId(), TestContextId.none);
-    });
-
-    test('finds dart context ID', () async {
-      final debugger = getDebugger();
-      await debugger.createDebuggerExecutionContext(TestContextId.none);
-
-      debugger.sendContextCreatedEvent(TestContextId.dartNormal);
-
-      // Expect dart context.
-      expect(await debugger.dartContextId(), TestContextId.dartNormal);
-    });
-
-    test('does not find dart context ID if not available', () async {
-      final debugger = getDebugger();
-      await debugger.createDebuggerExecutionContext(TestContextId.none);
-
-      // No context IDs received yet.
-      expect(await debugger.defaultContextId(), TestContextId.none);
-
-      debugger.sendContextCreatedEvent(TestContextId.dartLate);
-
-      // Expect no dart context.
-      // This mocks injected client still loading.
-      expect(await debugger.noContextId(), TestContextId.none);
-
-      // Expect dart context.
-      // This mocks injected client loading later for previously
-      // received context ID.
-      expect(await debugger.dartContextId(), TestContextId.dartLate);
-    });
-
-    test('works with stale contexts', () async {
-      final debugger = getDebugger();
-      await debugger.createDebuggerExecutionContext(TestContextId.none);
-
-      debugger.sendContextCreatedEvent(TestContextId.stale);
-
-      // Expect no dart context.
-      expect(await debugger.noContextId(), TestContextId.none);
-
-      debugger.sendContextsClearedEvent();
-      debugger.sendContextCreatedEvent(TestContextId.dartNormal);
-
-      // Expect dart context.
-      expect(await debugger.dartContextId(), TestContextId.dartNormal);
-    });
-  });
-}
-
-enum TestContextId {
-  none,
-  dartDefault,
-  dartNormal,
-  dartLate,
-  nonDart,
-  stale;
-
-  factory TestContextId.from(int? value) {
-    return switch (value) {
-      null => none,
-      0 => dartDefault,
-      1 => dartNormal,
-      2 => dartLate,
-      3 => nonDart,
-      4 => stale,
-      _ => throw StateError('$value is not a TestContextId'),
-    };
-  }
-
-  int? get id {
-    return switch (this) {
-      none => null,
-      dartDefault => 0,
-      dartNormal => 1,
-      dartLate => 2,
-      nonDart => 3,
-      stale => 4,
-    };
-  }
-}
-
-class TestExtensionDebugger extends ExtensionDebugger {
-  TestExtensionDebugger(FakeSseConnection super.sseConnection);
-
-  @override
-  Future<WipResponse> sendCommand(
-    String command, {
-    Map<String, dynamic>? params,
-  }) {
-    final id = params?['contextId'] as int?;
-    final response = super.sendCommand(command, params: params);
-
-    /// Mock stale contexts that cause the evaluation to throw.
-    if (command == 'Runtime.evaluate' &&
-        TestContextId.from(id) == TestContextId.stale) {
-      throw Exception('Stale execution context');
-    }
-    return response;
-  }
-}
-
-class TestDebuggerConnection {
-  late final TestExtensionDebugger extensionDebugger;
-  late final FakeSseConnection connection;
-
-  int _evaluateRequestId = 0;
-
-  TestDebuggerConnection() {
-    connection = FakeSseConnection();
-    extensionDebugger = TestExtensionDebugger(connection);
-  }
-
-  /// Create a new execution context in the debugger.
-  Future<void> createDebuggerExecutionContext(TestContextId contextId) {
-    _sendDevToolsRequest(contextId: contextId.id);
-    return _executionContext();
-  }
-
-  /// Flush the streams and close debugger connection.
-  Future<void> close() async {
-    unawaited(connection.controllerOutgoing.stream.any((e) => false));
-    unawaited(extensionDebugger.devToolsRequestStream.any((e) => false));
-
-    await connection.controllerIncoming.sink.close();
-    await connection.controllerOutgoing.sink.close();
-
-    await extensionDebugger.close();
-  }
-
-  /// Return the initial context ID from the DevToolsRequest.
-  Future<TestContextId> defaultContextId() async {
-    // Give the previous events time to propagate.
-    await Future<void>.delayed(const Duration(milliseconds: 100));
-    return TestContextId.from(await extensionDebugger.executionContext!.id);
-  }
-
-  /// Mock receiving dart context ID in the execution context.
-  ///
-  /// Note: dart context is detected by evaluation of
-  /// `window.$dartAppInstanceId` in that context returning
-  /// a non-null value.
-  Future<TestContextId> dartContextId() async {
-    // Try getting execution id.
-    final executionContextId = extensionDebugger.executionContext!.id;
-
-    // Give it time to send the evaluate request.
-    await Future<void>.delayed(const Duration(milliseconds: 100));
-
-    // Respond to the evaluate request.
-    _sendEvaluationResponse({
-      'result': {'value': 'dart'},
-    });
-
-    return TestContextId.from(await executionContextId);
-  }
-
-  /// Mock receiving non-dart context ID in the execution context.
-  ///
-  /// Note: dart context is detected by evaluation of
-  /// `window.$dartAppInstanceId` in that context returning
-  /// a null value.
-  Future<TestContextId> noContextId() async {
-    // Try getting execution id.
-    final executionContextId = extensionDebugger.executionContext!.id;
-
-    // Give it time to send the evaluate request.
-    await Future<void>.delayed(const Duration(milliseconds: 100));
-
-    // Respond to the evaluate request.
-    _sendEvaluationResponse({
-      'result': {'value': null},
-    });
-
-    return TestContextId.from(await executionContextId);
-  }
-
-  /// Send `Runtime.executionContextsCleared` event to the execution
-  /// context in the extension debugger.
-  void sendContextsClearedEvent() {
-    final extensionEvent = ExtensionEvent(
-      method: jsonEncode('Runtime.executionContextsCleared'),
-      params: jsonEncode({}),
-    );
-    connection.controllerIncoming.sink.add(jsonEncode(extensionEvent));
-  }
-
-  /// Send `Runtime.executionContextCreated` event to the execution
-  /// context in the extension debugger.
-  void sendContextCreatedEvent(TestContextId contextId) {
-    final extensionEvent = ExtensionEvent(
-      method: jsonEncode('Runtime.executionContextCreated'),
-      params: jsonEncode({
-        'context': {'id': '${contextId.id}'},
-      }),
-    );
-    connection.controllerIncoming.sink.add(jsonEncode(extensionEvent));
-  }
-
-  void _sendEvaluationResponse(Map<String, dynamic> response) {
-    // Respond to the evaluate request.
-    final extensionResponse = ExtensionResponse(
-      result: jsonEncode(response),
-      id: _evaluateRequestId++,
-      success: true,
-    );
-    connection.controllerIncoming.sink.add(jsonEncode(extensionResponse));
-  }
-
-  void _sendDevToolsRequest({int? contextId}) {
-    final devToolsRequest = DevToolsRequest(
-      contextId: contextId,
-      appId: 'app',
-      instanceId: '0',
-    );
-    connection.controllerIncoming.sink.add(jsonEncode(devToolsRequest));
-  }
-
-  Future<void> _executionContext() async {
-    final executionContext = await _waitForExecutionContext().timeout(
-      const Duration(milliseconds: 100),
-      onTimeout: () {
-        expect(fail, 'Timeout getting execution context');
-        return null;
-      },
-    );
-    expect(executionContext, isNotNull);
-  }
-
-  Future<ExecutionContext?> _waitForExecutionContext() async {
-    while (extensionDebugger.executionContext == null) {
-      await Future<void>.delayed(const Duration(milliseconds: 20));
-    }
-    return extensionDebugger.executionContext;
-  }
-}
diff --git a/dwds/test/integration/expression_compiler_service_common.dart b/dwds/test/integration/expression_compiler_service_common.dart
deleted file mode 100644
index 3b5482e..0000000
--- a/dwds/test/integration/expression_compiler_service_common.dart
+++ /dev/null
@@ -1,353 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/sdk_configuration.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/expression_compiler_service.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-import 'package:test/test.dart';
-
-ExpressionCompilerService get service => _service!;
-late ExpressionCompilerService? _service;
-
-HttpServer get server => _server!;
-late HttpServer? _server;
-
-StreamController<String> get output => _output!;
-late StreamController<String>? _output;
-
-void testAll({required CompilerOptions compilerOptions}) {
-  group('expression compiler service with fake asset server', () {
-    final logger = Logger('ExpressionCompilerServiceTest');
-    late Directory outputDir;
-
-    Future<void> stop() async {
-      await _service?.stop();
-      await _server?.close();
-      await _output?.close();
-      _service = null;
-      _server = null;
-      _output = null;
-    }
-
-    setUp(() async {
-      final systemTempDir = Directory.systemTemp;
-      outputDir = systemTempDir.createTempSync('foo bar');
-      final source = outputDir.uri.resolve('try.dart');
-      final packages = outputDir.uri.resolve('package_config.json');
-      final kernel = outputDir.uri.resolve('try.full.dill');
-      // Expression compiler service does not need any extra assets
-      // generated in the SDK, so we use the current SDK layout and
-      // configuration.
-      final executable = Platform.resolvedExecutable;
-      // redirect logs for testing
-      _output = StreamController<String>.broadcast();
-      output.stream.listen(printOnFailure);
-
-      configureLogWriter(
-        customLogWriter: (level, message, {error, loggerName, stackTrace}) {
-          final e = error == null ? '' : ': $error';
-          final s = stackTrace == null ? '' : ':\n$stackTrace';
-          output.add('[$level] $loggerName: $message$e$s');
-        },
-      );
-
-      // start asset server
-      _server = await startHttpServer('localhost');
-      final port = server.port;
-
-      // start expression compilation service
-      Response assetHandler(request) =>
-          Response(200, body: File.fromUri(kernel).readAsBytesSync());
-      _service = ExpressionCompilerService(
-        'localhost',
-        port,
-        verbose: false,
-        sdkConfigurationProvider: const DefaultSdkConfigurationProvider(),
-      );
-
-      await service.initialize(compilerOptions);
-
-      // setup asset server
-      serveHttpRequests(server, assetHandler, (e, s) {
-        logger.warning('Error serving requests', e, s);
-      });
-
-      // generate full dill
-      File.fromUri(source)
-        ..createSync()
-        ..writeAsStringSync('''void main() {
-          // breakpoint line
-        }''');
-
-      File.fromUri(packages)
-        ..createSync()
-        ..writeAsStringSync('''
-      {
-        "configVersion": 2,
-        "packages": [
-          {
-            "name": "try",
-            "rootUri": "./",
-            "packageUri": "./"
-          }
-        ]
-      }
-      ''');
-
-      final args = [
-        'compile',
-        'js-dev',
-        'try.dart',
-        '-o',
-        'try.js',
-        '--experimental-output-compiled-kernel',
-        '--multi-root',
-        '${outputDir.uri}',
-        '--multi-root-scheme',
-        'org-dartlang-app',
-        '--packages',
-        packages.path,
-      ];
-      final process =
-          await Process.start(
-            executable,
-            args,
-            workingDirectory: outputDir.path,
-          ).then((p) {
-            transformToLines(p.stdout).listen(output.add);
-            transformToLines(p.stderr).listen(output.add);
-            return p;
-          });
-      expect(
-        await process.exitCode,
-        0,
-        reason: 'failed running $executable with args $args',
-      );
-      expect(
-        File.fromUri(kernel).existsSync(),
-        true,
-        reason: 'failed to create full dill',
-      );
-    });
-
-    tearDown(() async {
-      await stop();
-      outputDir.deleteSync(recursive: true);
-    });
-
-    test('works with no errors', () async {
-      expect(output.stream, neverEmits(contains('[SEVERE]')));
-      expect(
-        output.stream,
-        emitsThrough(
-          contains(
-            '[INFO] ExpressionCompilerService: Updating dependencies...',
-          ),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(
-          contains('[INFO] ExpressionCompilerService: Updated dependencies.'),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(
-          contains('[FINEST] ExpressionCompilerService: Compiling "true" at'),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(
-          contains('[FINEST] ExpressionCompilerService: Compiled "true" to:'),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(contains('[INFO] ExpressionCompilerService: Stopped.')),
-      );
-      final result = await service.updateDependencies({
-        'try': ModuleInfo('try.full.dill', 'try.dill'),
-      });
-      expect(result, true, reason: 'failed to update dependencies');
-
-      final compilationResult = await service.compileExpressionToJs(
-        '0',
-        'org-dartlang-app:/try.dart',
-        'org-dartlang-app:/try.dart',
-        2,
-        1,
-        {},
-        {},
-        'try',
-        'true',
-      );
-
-      expect(
-        compilationResult,
-        isA<ExpressionCompilationResult>()
-            .having((r) => r.result, 'result', contains('return true;'))
-            .having((r) => r.isError, 'isError', false),
-      );
-
-      await stop();
-    });
-
-    test('can evaluate multiple expressions', () async {
-      expect(output.stream, neverEmits(contains('[SEVERE]')));
-      expect(
-        output.stream,
-        emitsThrough(
-          contains(
-            '[INFO] ExpressionCompilerService: Updating dependencies...',
-          ),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(
-          contains('[INFO] ExpressionCompilerService: Updated dependencies.'),
-        ),
-      );
-
-      expect(
-        output.stream,
-        emitsThrough(contains('[INFO] ExpressionCompilerService: Stopped.')),
-      );
-      final result = await service.updateDependencies({
-        'try': ModuleInfo('try.full.dill', 'try.dill'),
-      });
-      expect(result, true, reason: 'failed to update dependencies');
-
-      final compilationResult1 = await service.compileExpressionToJs(
-        '0',
-        'org-dartlang-app:/try.dart',
-        'org-dartlang-app:/try.dart',
-        2,
-        1,
-        {},
-        {},
-        'try',
-        'true',
-      );
-      final compilationResult2 = await service.compileExpressionToJs(
-        '0',
-        'org-dartlang-app:/try.dart',
-        'org-dartlang-app:/try.dart',
-        2,
-        1,
-        {},
-        {},
-        'try',
-        'false',
-      );
-
-      expect(
-        compilationResult1,
-        isA<ExpressionCompilationResult>()
-            .having((r) => r.result, 'result', contains('return true;'))
-            .having((r) => r.isError, 'isError', false),
-      );
-
-      expect(
-        compilationResult2,
-        isA<ExpressionCompilationResult>()
-            .having((r) => r.result, 'result', contains('return false;'))
-            .having((r) => r.isError, 'isError', false),
-      );
-
-      await stop();
-    });
-
-    test('can compile multiple expressions in parallel', () async {
-      expect(output.stream, neverEmits(contains('[SEVERE]')));
-      expect(
-        output.stream,
-        emitsThrough(
-          contains(
-            '[INFO] ExpressionCompilerService: Updating dependencies...',
-          ),
-        ),
-      );
-      expect(
-        output.stream,
-        emitsThrough(
-          contains('[INFO] ExpressionCompilerService: Updated dependencies.'),
-        ),
-      );
-
-      expect(
-        output.stream,
-        emitsThrough(contains('[INFO] ExpressionCompilerService: Stopped.')),
-      );
-      final result = await service.updateDependencies({
-        'try': ModuleInfo('try.full.dill', 'try.dill'),
-      });
-      expect(result, true, reason: 'failed to update dependencies');
-
-      final compilationResult1 = service.compileExpressionToJs(
-        '0',
-        'org-dartlang-app:/try.dart',
-        'org-dartlang-app:/try.dart',
-        2,
-        1,
-        {},
-        {},
-        'try',
-        'true',
-      );
-      final compilationResult2 = service.compileExpressionToJs(
-        '0',
-        'org-dartlang-app:/try.dart',
-        'org-dartlang-app:/try.dart',
-        2,
-        1,
-        {},
-        {},
-        'try',
-        'false',
-      );
-
-      final results = await Future.wait([
-        compilationResult1,
-        compilationResult2,
-      ]);
-
-      expect(
-        results[0],
-        isA<ExpressionCompilationResult>()
-            .having((r) => r.result, 'result', contains('return true;'))
-            .having((r) => r.isError, 'isError', false),
-      );
-
-      expect(
-        results[1],
-        isA<ExpressionCompilationResult>()
-            .having((r) => r.result, 'result', contains('return false;'))
-            .having((r) => r.isError, 'isError', false),
-      );
-
-      await stop();
-    });
-  });
-}
-
-Stream<String> transformToLines(Stream<List<int>> byteStream) {
-  return byteStream
-      .transform<String>(utf8.decoder)
-      .transform<String>(const LineSplitter());
-}
diff --git a/dwds/test/integration/expression_compiler_service_ddc_library_bundle_test.dart b/dwds/test/integration/expression_compiler_service_ddc_library_bundle_test.dart
deleted file mode 100644
index 53ce367..0000000
--- a/dwds/test/integration/expression_compiler_service_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:test/test.dart';
-
-import 'expression_compiler_service_common.dart';
-
-void main() async {
-  testAll(
-    compilerOptions: CompilerOptions(
-      moduleFormat: ModuleFormat.ddc,
-      canaryFeatures: true,
-      experiments: const <String>[],
-    ),
-  );
-}
diff --git a/dwds/test/integration/expression_evaluator_test.dart b/dwds/test/integration/expression_evaluator_test.dart
deleted file mode 100644
index 92a0be7..0000000
--- a/dwds/test/integration/expression_evaluator_test.dart
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-
-import 'package:dwds/src/debugging/debugger.dart';
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/skip_list.dart';
-import 'package:dwds/src/services/batched_expression_evaluator.dart';
-import 'package:dwds/src/services/expression_evaluator.dart';
-import 'package:dwds/src/utilities/shared.dart';
-
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart' hide LogRecord;
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/fakes.dart';
-import 'fixtures/utilities.dart';
-
-late ExpressionEvaluator? _evaluator;
-late ExpressionEvaluator? _batchedEvaluator;
-
-void main() async {
-  group('expression compiler service with fake asset server', () {
-    Future<void> stop() async {
-      _evaluator?.close();
-      _evaluator = null;
-      _batchedEvaluator?.close();
-      _batchedEvaluator = null;
-    }
-
-    late StreamController<DebuggerPausedEvent> pausedController;
-    late StreamController<Event> debugEventController;
-    late FakeChromeAppInspector inspector;
-    setUp(() async {
-      final assetReader = FakeAssetReader(sourceMap: '');
-      final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-        loadStrategy: FakeStrategy(assetReader),
-      );
-      setGlobalsForTesting(toolConfiguration: toolConfiguration);
-      final modules = FakeModules();
-
-      final webkitDebugger = FakeWebkitDebugger();
-      pausedController = StreamController<DebuggerPausedEvent>();
-      debugEventController = StreamController<Event>();
-      webkitDebugger.onPaused = pausedController.stream;
-
-      final root = 'fakeRoot';
-      final entry = 'fake_entrypoint';
-      final locations = Locations(assetReader, modules, root);
-      await locations.initialize(entry);
-
-      final skipLists = SkipLists(root);
-      final debugger = await Debugger.create(
-        webkitDebugger,
-        (_, e) => debugEventController.sink.add(e),
-        locations,
-        skipLists,
-        root,
-      );
-      inspector = FakeChromeAppInspector(
-        webkitDebugger,
-        fakeIsolate: simpleIsolate,
-      );
-      debugger.updateInspector(inspector);
-
-      _evaluator = ExpressionEvaluator(
-        entry,
-        inspector,
-        debugger,
-        locations,
-        modules,
-        FakeExpressionCompiler(),
-      );
-      _batchedEvaluator = BatchedExpressionEvaluator(
-        entry,
-        inspector,
-        debugger,
-        locations,
-        modules,
-        FakeExpressionCompiler(),
-      );
-    });
-
-    tearDown(() async {
-      await stop();
-    });
-
-    group('evaluator', () {
-      late ExpressionEvaluator evaluator;
-
-      setUp(() async {
-        evaluator = _evaluator!;
-      });
-
-      test('can evaluate expression', () async {
-        final result = await evaluator.evaluateExpression(
-          '1',
-          'main.dart',
-          'true',
-          {},
-        );
-        expect(
-          result,
-          const TypeMatcher<RemoteObject>().having(
-            (o) => o.value,
-            'value',
-            'true',
-          ),
-        );
-      });
-
-      test('can evaluate expression in frame with null scope', () async {
-        // Verify that we don't get the internal error.
-        // More extensive testing of 'evaluateExpressionInFrame' is done in
-        // evaluation tests for frontend server and build daemon.
-        await expectLater(
-          evaluator.evaluateExpressionInFrame('1', 0, 'true', null),
-          throwsRPCErrorWithMessage(
-            'Cannot evaluate on a call frame when the program is not paused',
-          ),
-        );
-      });
-
-      test('cannot evaluate expression in async frame ', () async {
-        // Add a DebuggerPausedEvent with no frames provoke an error.
-        pausedController.sink.add(
-          DebuggerPausedEvent({
-            'method': '',
-            'params': {
-              'reason': 'other',
-              'callFrames': <Map<String, dynamic>>[],
-            },
-          }),
-        );
-
-        await debugEventController.stream.firstWhere(
-          (e) => e.kind == EventKind.kPauseInterrupted,
-        );
-
-        // Verify that we get the internal error.
-        final result = await evaluator.evaluateExpressionInFrame(
-          '20',
-          0,
-          'true',
-          null,
-        );
-        expect(
-          result,
-          isA<RemoteObject>()
-              .having((o) => o.json['type'], 'type', 'AsyncFrameError')
-              .having(
-                (o) => o.json['value'],
-                'value',
-                'Expression evaluation in async frames is not supported. '
-                    'No frame with index 0.',
-              ),
-        );
-      });
-
-      test('can evaluate expression in frame with empty scope', () async {
-        // Verify that we don't get the internal error.
-        // More extensive testing of 'evaluateExpressionInFrame' is done in
-        // evaluation tests for frontend server and build daemon.
-        await expectLater(
-          evaluator.evaluateExpressionInFrame('1', 0, 'true', {}),
-          throwsRPCErrorWithMessage(
-            'Cannot evaluate on a call frame when the program is not paused',
-          ),
-        );
-      });
-
-      test('returns error if closed', () async {
-        evaluator.close();
-        final result = await evaluator.evaluateExpression(
-          '1',
-          'main.dart',
-          'true',
-          {},
-        );
-        expect(
-          result,
-          const TypeMatcher<RemoteObject>()
-              .having((o) => o.type, 'type', 'InternalError')
-              .having((o) => o.value, 'value', contains('evaluator closed')),
-        );
-      });
-    });
-
-    group('batched evaluator', () {
-      late ExpressionEvaluator evaluator;
-
-      setUp(() async {
-        evaluator = _batchedEvaluator!;
-      });
-
-      test('can evaluate expression', () async {
-        final result = await evaluator.evaluateExpression(
-          '1',
-          'main.dart',
-          'true',
-          {},
-        );
-        expect(
-          result,
-          const TypeMatcher<RemoteObject>().having(
-            (o) => o.value,
-            'value',
-            'true',
-          ),
-        );
-      });
-
-      test('retries failed batched expression', () async {
-        safeUnawaited(
-          evaluator.evaluateExpression('2', 'main.dart', 'true', {}),
-        );
-
-        await evaluator.evaluateExpression('2', 'main.dart', 'false', {});
-        expect(inspector.functionsCalled.length, 3);
-        expect(
-          inspector.functionsCalled[0].contains('return [ true, false ];'),
-          true,
-        );
-        expect(inspector.functionsCalled[1].contains('return true;'), true);
-        expect(inspector.functionsCalled[2].contains('return false;'), true);
-      });
-
-      test('returns error if closed', () async {
-        evaluator.close();
-        final result = await evaluator.evaluateExpression(
-          '1',
-          'main.dart',
-          'true',
-          {},
-        );
-        expect(
-          result,
-          const TypeMatcher<RemoteObject>()
-              .having((o) => o.type, 'type', 'InternalError')
-              .having((o) => o.value, 'value', contains('evaluator closed')),
-        );
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/extension_backend_test.dart b/dwds/test/integration/extension_backend_test.dart
deleted file mode 100644
index 41bdbad..0000000
--- a/dwds/test/integration/extension_backend_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2021, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-
-import 'package:async/src/stream_queue.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/servers/extension_backend.dart';
-import 'package:http/http.dart' as http;
-import 'package:shelf/src/request.dart';
-import 'package:shelf/src/response.dart';
-import 'package:test/test.dart';
-
-class MockSocketHandler implements SocketHandler {
-  static const mockResponse = 'Returned from MockSocketHandler';
-  @override
-  StreamQueue<SocketConnection> get connections =>
-      StreamQueue(const Stream.empty());
-
-  @override
-  FutureOr<Response> handler(Request request) {
-    return Response.ok(mockResponse);
-  }
-
-  @override
-  void shutdown() {}
-}
-
-void main() {
-  late ExtensionBackend extensionBackend;
-
-  setUpAll(() async {
-    extensionBackend = await ExtensionBackend.start(
-      MockSocketHandler(),
-      'localhost',
-    );
-  });
-  test('returns success statusCode', () async {
-    final result = await http.get(
-      Uri.parse(
-        'http://localhost:${extensionBackend.port}/$authenticationPath',
-      ),
-    );
-    expect(result.statusCode, 200);
-  });
-
-  test('returns expected authentication response', () async {
-    final result = await http.get(
-      Uri.parse(
-        'http://localhost:${extensionBackend.port}/$authenticationPath',
-      ),
-    );
-    expect(result.body, authenticationResponse);
-  });
-
-  test('delegates to the underlying socket handler', () async {
-    final result = await http.get(
-      Uri.parse('http://localhost:${extensionBackend.port}/somedummypath'),
-    );
-    expect(result.body, MockSocketHandler.mockResponse);
-  });
-}
diff --git a/dwds/test/integration/extension_debugger_test.dart b/dwds/test/integration/extension_debugger_test.dart
deleted file mode 100644
index 024ead4..0000000
--- a/dwds/test/integration/extension_debugger_test.dart
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/src/servers/extension_debugger.dart';
-import 'package:test/test.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/debugger_data.dart';
-import 'fixtures/fakes.dart';
-
-late FakeSseConnection connection;
-late ExtensionDebugger extensionDebugger;
-
-void main() async {
-  setUp(() async {
-    connection = FakeSseConnection();
-    extensionDebugger = ExtensionDebugger(connection);
-  });
-
-  tearDown(() {
-    connection.controllerIncoming.close();
-    connection.controllerOutgoing.close();
-  });
-
-  group('can receive', () {
-    test('an ExtensionResponse', () async {
-      final extensionResponse = ExtensionResponse(
-        id: 0,
-        success: true,
-        result: jsonEncode({
-          'result': {'value': 3.14},
-        }),
-      );
-      final resultCompleter = Completer<WipResponse>();
-      unawaited(
-        extensionDebugger
-            .sendCommand('Runtime.evaluate', params: {'expression': '\$pi'})
-            .then(resultCompleter.complete),
-      );
-      connection.controllerIncoming.sink.add(jsonEncode(extensionResponse));
-      final response = await resultCompleter.future;
-      expect(
-        (response.result!['result'] as Map<String, dynamic>)['value'],
-        3.14,
-      );
-    });
-
-    test('an ExtensionEvent', () async {
-      final extensionEvent = ExtensionEvent(
-        method: jsonEncode('Debugger.paused'),
-        params: jsonEncode(frames1Json[0]),
-      );
-      connection.controllerIncoming.sink.add(jsonEncode(extensionEvent));
-      final wipEvent = await extensionDebugger.onNotification.first;
-      expect(wipEvent.method, 'Debugger.paused');
-      expect(wipEvent.params, frames1Json[0]);
-    });
-
-    test('a BatchedEvents', () async {
-      final event1 = ExtensionEvent(
-        method: jsonEncode('Debugger.scriptParsed'),
-        params: jsonEncode(scriptParsedParams),
-      );
-      final event2 = ExtensionEvent(
-        method: jsonEncode('Debugger.scriptParsed'),
-        params: jsonEncode(scriptParsedParams),
-      );
-      final batch = BatchedEvents(events: [event1, event2]);
-      connection.controllerIncoming.sink.add(jsonEncode(batch));
-      final wipEvent = await extensionDebugger.onNotification.first;
-      expect(wipEvent.method, 'Debugger.scriptParsed');
-      expect(wipEvent.params, scriptParsedParams);
-    });
-
-    test('a DevToolsRequest', () async {
-      final devToolsRequest = DevToolsRequest(
-        appId: '3.14',
-        instanceId: '6.28',
-        tabUrl: 'pi/calculus',
-      );
-      connection.controllerIncoming.sink.add(jsonEncode(devToolsRequest));
-      final request = await extensionDebugger.devToolsRequestStream.first;
-      expect(request.tabUrl, 'pi/calculus');
-      expect(request.appId, '3.14');
-      expect(request.instanceId, '6.28');
-    });
-  });
-
-  group('can send', () {
-    test('a request with empty params', () async {
-      final extensionRequest = ExtensionRequest(
-        id: 0,
-        command: 'Debugger.pause',
-        commandParams: jsonEncode({}),
-      );
-      unawaited(extensionDebugger.pause());
-      final decoded = jsonDecode(
-        await connection.controllerOutgoing.stream.first,
-      );
-      final request = ExtensionRequest.fromJson(decoded as List<dynamic>);
-      expect(request, extensionRequest);
-    });
-
-    test('a request with some params', () async {
-      final params = {
-        'location': {'scriptId': '555', 'lineNumber': 28},
-      };
-      final extensionRequest = ExtensionRequest(
-        id: 0,
-        command: 'Debugger.setBreakpoint',
-        commandParams: jsonEncode(params),
-      );
-      unawaited(
-        extensionDebugger.sendCommand('Debugger.setBreakpoint', params: params),
-      );
-      final decoded = jsonDecode(
-        await connection.controllerOutgoing.stream.first,
-      );
-      final request = ExtensionRequest.fromJson(decoded as List<dynamic>);
-      expect(request, extensionRequest);
-    });
-  });
-  group('when closed', () {
-    test('DebugExtension.detached event closes the connection', () async {
-      final extensionEvent = ExtensionEvent(
-        method: jsonEncode('DebugExtension.detached'),
-        params: jsonEncode({}),
-      );
-
-      connection.controllerIncoming.sink.add(jsonEncode(extensionEvent));
-      // Expect the connection to receive a close event:
-      expect(await extensionDebugger.onClose.first, isNotNull);
-    });
-
-    test(
-      'gracefully handles trying to send events after the connection is closed',
-      () async {
-        // Close the connection:
-        final extensionEvent = ExtensionEvent(
-          method: jsonEncode('DebugExtension.detached'),
-          params: jsonEncode({}),
-        );
-        connection.controllerIncoming.sink.add(jsonEncode(extensionEvent));
-        // Wait for it to be closed:
-        await extensionDebugger.onClose.first;
-        // Try to send an event:
-        Future<void> callToSendCommand() => extensionDebugger.sendCommand(
-          'Debugger.setBreakpoint',
-          params: {
-            'location': {'scriptId': '555', 'lineNumber': 28},
-          },
-        );
-        // Should not throw any errors:
-        expect(callToSendCommand, returnsNormally);
-      },
-    );
-  });
-}
diff --git a/dwds/test/integration/fixtures/context.dart b/dwds/test/integration/fixtures/context.dart
deleted file mode 100644
index 632e7bd..0000000
--- a/dwds/test/integration/fixtures/context.dart
+++ /dev/null
@@ -1,957 +0,0 @@
-// Copyright (c) 2019, 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.
-
-// @skip_package_deps_validation
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:build_daemon/client.dart';
-import 'package:build_daemon/data/build_status.dart';
-import 'package:build_daemon/data/build_target.dart';
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/dart_web_debug_service.dart';
-import 'package:dwds/src/connections/app_connection.dart';
-import 'package:dwds/src/connections/debug_connection.dart';
-import 'package:dwds/src/debugging/webkit_debugger.dart';
-import 'package:dwds/src/loaders/build_runner_strategy_provider.dart';
-import 'package:dwds/src/loaders/frontend_server_strategy_provider.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/readers/proxy_server_asset_reader.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/expression_compiler_service.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:dwds_test_common/utilities.dart';
-import 'package:file/local.dart';
-import 'package:http/http.dart';
-import 'package:http/io_client.dart';
-import 'package:logging/logging.dart' as logging;
-import 'package:path/path.dart' as p;
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:shelf/shelf.dart';
-import 'package:shelf_proxy/shelf_proxy.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service/vm_service_io.dart';
-import 'package:webdriver/async_io.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import '../../frontend_server_common/devfs.dart';
-import '../../frontend_server_common/resident_runner.dart';
-import 'project.dart';
-import 'server.dart';
-import 'utilities.dart';
-
-final _exeExt = Platform.isWindows ? '.exe' : '';
-
-const isRPCError = TypeMatcher<RPCError>();
-const isSentinelException = TypeMatcher<SentinelException>();
-
-final Matcher throwsRPCError = throwsA(isRPCError);
-final Matcher throwsSentinelException = throwsA(isSentinelException);
-
-Matcher isRPCErrorWithMessage(String message) => isA<RPCError>().having(
-  (RPCError e) => e.message,
-  'message',
-  contains(message),
-);
-Matcher throwsRPCErrorWithMessage(String message) =>
-    throwsA(isRPCErrorWithMessage(message));
-
-Matcher isRPCErrorWithCode(int code) =>
-    isA<RPCError>().having((RPCError e) => e.code, 'code', equals(code));
-Matcher throwsRPCErrorWithCode(int code) => throwsA(isRPCErrorWithCode(code));
-
-enum CompilationMode {
-  buildDaemon(false, true, false),
-  frontendServer(true, false, false),
-  buildDaemonAndFrontendServer(true, true, true);
-
-  final bool usesFrontendServer;
-  final bool usesBuildDaemon;
-  final bool usesDdcModulesOnly;
-
-  const CompilationMode(
-    this.usesFrontendServer,
-    this.usesBuildDaemon,
-    this.usesDdcModulesOnly,
-  );
-}
-
-class TestContext {
-  final TestProject project;
-  final TestSdkConfigurationProvider sdkConfigurationProvider;
-
-  String get appUrl => _appUrl!;
-  late String? _appUrl;
-
-  WipConnection get tabConnection => _tabConnection!;
-  late WipConnection? _tabConnection;
-
-  TestServer get testServer => _testServer!;
-  TestServer? _testServer;
-
-  Dwds? get dwds => _testServer?.dwds;
-
-  BuildDaemonClient get daemonClient => _daemonClient!;
-  BuildDaemonClient? _daemonClient;
-
-  ResidentWebRunner get webRunner => _webRunner!;
-  ResidentWebRunner? _webRunner;
-
-  WebDriver get webDriver => _webDriver!;
-  WebDriver? _webDriver;
-
-  Process get chromeDriver => _chromeDriver!;
-  Process? _chromeDriver;
-
-  WebkitDebugger get webkitDebugger => _webkitDebugger!;
-  late WebkitDebugger? _webkitDebugger;
-
-  Handler get assetHandler => _assetHandler!;
-  late Handler? _assetHandler;
-
-  Client get client => _client!;
-  Client? _client;
-
-  ExpressionCompilerService? ddcService;
-
-  int get port => _port!;
-  late int? _port;
-
-  Directory get outputDir => _outputDir!;
-  Directory? _outputDir;
-
-  late WipConnection extensionConnection;
-  late AppConnection appConnection;
-  late DebugConnection debugConnection;
-
-  final _logger = logging.Logger('Context');
-
-  final _serviceNameToMethod = <String, String?>{};
-
-  late LocalFileSystem frontendServerFileSystem;
-
-  late String _hostname;
-
-  /// Internal VM service.
-  ///
-  /// Prefer using [vmService] instead in tests when possible, to include
-  /// testing of the VmServerConnection (bypassed when using [service]).
-  ChromeProxyService get service => fetchChromeProxyService(debugConnection);
-
-  /// External VM service.
-  VmService get vmService => debugConnection.vmService;
-
-  TestContext(this.project, this.sdkConfigurationProvider);
-
-  Future<void> setUp({
-    TestSettings testSettings = const TestSettings(),
-    TestAppMetadata appMetadata = const TestAppMetadata.externalApp(),
-    TestDebugSettings debugSettings =
-        const TestDebugSettings.noDevToolsLaunch(),
-  }) async {
-    try {
-      // Build settings to return from load strategy.
-      final buildSettings = TestBuildSettings(
-        appEntrypoint: project.dartEntryFilePackageUri,
-        canaryFeatures: testSettings.canaryFeatures,
-        isFlutterApp: testSettings.isFlutterApp,
-        experiments: testSettings.experiments,
-      );
-
-      // Make sure configuration was created correctly.
-      final sdkLayout = sdkConfigurationProvider.sdkLayout;
-      final configuration = await sdkConfigurationProvider.configuration;
-      configuration.validate();
-      await project.setUp();
-
-      DartUri.currentDirectory = project.absolutePackageDirectory;
-
-      _logger.info(
-        'Serving: ${project.directoryToServe}/${project.filePathToServe}',
-      );
-      _logger.info('Project: ${project.absolutePackageDirectory}');
-      _logger.info('Packages: ${project.packageConfigFile}');
-      _logger.info('Entry: ${project.dartEntryFilePath}');
-
-      configureLogWriter();
-
-      _client = IOClient(
-        HttpClient()
-          ..maxConnectionsPerHost = 200
-          ..idleTimeout = const Duration(seconds: 30)
-          ..connectionTimeout = const Duration(seconds: 30),
-      );
-
-      final systemTempDir = Directory.systemTemp;
-      _outputDir = systemTempDir.createTempSync('foo bar');
-
-      final chromeDriverPort = await findUnusedPort();
-      final chromeDriverUrlBase = 'wd/hub';
-      try {
-        _chromeDriver = await Process.start('chromedriver$_exeExt', [
-          '--port=$chromeDriverPort',
-          '--url-base=$chromeDriverUrlBase',
-        ]);
-        final stdOutLines = chromeDriver.stdout
-            .transform(utf8.decoder)
-            .transform(const LineSplitter())
-            .asBroadcastStream();
-
-        final stdErrLines = chromeDriver.stderr
-            .transform(utf8.decoder)
-            .transform(const LineSplitter())
-            .asBroadcastStream();
-
-        // Sometimes ChromeDriver can be slow to startup.
-        // This was seen on a github actions run:
-        // > 11:22:59.924700: ChromeDriver stdout: Starting ChromeDriver
-        // >                  139.0.7258.154 ([...]) on port 38107
-        // > [...]
-        // > 11:23:00.237350: ChromeDriver stdout: ChromeDriver was started
-        // >                  successfully on port 38107.
-        // Where in the 300+ ms it took before it was actually ready to accept
-        // a connection we had tried - and failed - to connect.
-        // We therefore wait until ChromeDriver reports that it has started
-        // successfully.
-
-        final chromeDriverStartup = Completer<void>();
-        stdOutLines.listen((line) {
-          if (!chromeDriverStartup.isCompleted &&
-              line.contains('was started successfully')) {
-            chromeDriverStartup.complete();
-          }
-          _logger.finest('ChromeDriver stdout: $line');
-        });
-        stdErrLines.listen(
-          (line) => _logger.warning('ChromeDriver stderr: $line'),
-        );
-
-        await chromeDriverStartup.future;
-      } catch (e) {
-        throw StateError(
-          'Could not start ChromeDriver. Is it installed?\nError: $e',
-        );
-      }
-
-      await Process.run(sdkLayout.dartPath, [
-        'pub',
-        'upgrade',
-      ], workingDirectory: project.absolutePackageDirectory);
-
-      ExpressionCompiler? expressionCompiler;
-      AssetReader assetReader;
-      Stream<BuildResults> buildResults;
-      LoadStrategy loadStrategy;
-      var basePath = '';
-      var filePathToServe = project.filePathToServe;
-
-      // Start the HTTP server and save its used port.
-      final httpServer = await startHttpServer('localhost');
-      _port = httpServer.port;
-
-      final reloadedSourcesUri = Uri.parse(
-        'http://localhost:$_port/${WebDevFS.reloadedSourcesFileName}',
-      );
-
-      switch (testSettings.compilationMode) {
-        case CompilationMode.buildDaemon:
-          {
-            final options = [
-              if (testSettings.enableExpressionEvaluation) ...[
-                '--define',
-                'build_web_compilers|ddc=generate-full-dill=true',
-              ],
-              for (final experiment in buildSettings.experiments)
-                '--enable-experiment=$experiment',
-              if (buildSettings.canaryFeatures) ...[
-                '--define',
-                'build_web_compilers|ddc=canary=true',
-                '--define',
-                'build_web_compilers|sdk_js=canary=true',
-              ],
-              if (testSettings.moduleFormat == ModuleFormat.ddc) ...[
-                '--define',
-                'build_web_compilers|ddc=ddc-library-bundle=true',
-                '--define',
-                'build_web_compilers|sdk_js=ddc-library-bundle=true',
-                '--define',
-                'build_web_compilers|entrypoint=ddc-library-bundle=true',
-                '--define',
-                'build_web_compilers|entrypoint_marker=ddc-library-bundle=true',
-              ],
-              '--verbose',
-            ];
-            _daemonClient = await connectClient(
-              sdkLayout.dartPath,
-              project.absolutePackageDirectory,
-              options,
-              (log) {
-                final record = log.toLogRecord();
-                final name = record.loggerName == ''
-                    ? ''
-                    : '${record.loggerName}: ';
-                _logger.log(
-                  record.level,
-                  '$name${record.message}',
-                  record.error,
-                  record.stackTrace,
-                );
-              },
-            );
-            daemonClient.registerBuildTarget(
-              DefaultBuildTarget((b) => b..target = project.directoryToServe),
-            );
-            daemonClient.startBuild();
-
-            await waitForSuccessfulBuild();
-
-            final assetServerPort = daemonPort(
-              project.absolutePackageDirectory,
-            );
-            _assetHandler = _createBuildRunnerProxyHandler(assetServerPort);
-            if (testSettings.moduleFormat == ModuleFormat.ddc &&
-                buildSettings.canaryFeatures) {
-              _assetHandler = _handleReloadedSources(_assetHandler!);
-            }
-            assetReader = ProxyServerAssetReader(
-              assetServerPort,
-              root: project.directoryToServe,
-            );
-
-            if (testSettings.enableExpressionEvaluation) {
-              ddcService = ExpressionCompilerService(
-                'localhost',
-                _port!,
-                verbose: testSettings.verboseCompiler,
-                sdkConfigurationProvider: sdkConfigurationProvider,
-              );
-              expressionCompiler = ddcService;
-            }
-
-            loadStrategy = switch ((
-              testSettings.moduleFormat,
-              buildSettings.canaryFeatures,
-            )) {
-              (ModuleFormat.ddc, true) =>
-                BuildRunnerDdcLibraryBundleStrategyProvider(
-                  testSettings.reloadConfiguration,
-                  assetReader,
-                  buildSettings,
-                  reloadedSourcesUri: reloadedSourcesUri,
-                ).strategy,
-              (ModuleFormat.ddc, false) => throw Exception(
-                'Unsupported DDC configuration: build daemon + canary (false) '
-                '+ DDC module format ${testSettings.moduleFormat.name}.',
-              ),
-
-              _ => BuildRunnerRequireStrategyProvider(
-                testSettings.reloadConfiguration,
-                assetReader,
-                buildSettings,
-              ).strategy,
-            };
-
-            buildResults = daemonClient.buildResults;
-          }
-          break;
-        case CompilationMode.frontendServer:
-          {
-            filePathToServe = webCompatiblePath([
-              project.directoryToServe,
-              project.filePathToServe,
-            ]);
-
-            _logger.info('Serving: $filePathToServe');
-
-            final entry = p.toUri(
-              p.join(project.webAssetsPath, project.dartEntryFileName),
-            );
-            frontendServerFileSystem = const LocalFileSystem();
-            final packageUriMapper = await PackageUriMapper.create(
-              frontendServerFileSystem,
-              project.packageConfigFile,
-              useDebuggerModuleNames: testSettings.useDebuggerModuleNames,
-            );
-
-            final compilerOptions = TestCompilerOptions(
-              experiments: buildSettings.experiments,
-              canaryFeatures: buildSettings.canaryFeatures,
-              moduleFormat: testSettings.moduleFormat,
-            );
-
-            _webRunner = ResidentWebRunner(
-              mainUri: entry,
-              urlTunneler: debugSettings.urlEncoder,
-              projectDirectory: Directory(project.absolutePackageDirectory).uri,
-              packageConfigFile: project.packageConfigFile,
-              packageUriMapper: packageUriMapper,
-              fileSystemRoots: [
-                Directory(project.absolutePackageDirectory).uri,
-              ],
-              fileSystemScheme: 'org-dartlang-app',
-              outputPath: outputDir.path,
-              compilerOptions: compilerOptions,
-              sdkLayout: sdkLayout,
-              verbose: testSettings.verboseCompiler,
-            );
-
-            final assetServerPort = await findUnusedPort();
-            _hostname = appMetadata.hostname;
-            await webRunner.run(
-              frontendServerFileSystem,
-              hostname: _hostname,
-              port: assetServerPort,
-              index: filePathToServe,
-            );
-
-            if (testSettings.enableExpressionEvaluation) {
-              expressionCompiler = webRunner.expressionCompiler;
-            }
-
-            basePath = webRunner.devFS!.assetServer.basePath;
-            assetReader = webRunner.devFS!.assetServer;
-            _assetHandler = webRunner.devFS!.assetServer.handleRequest;
-            loadStrategy = switch (testSettings.moduleFormat) {
-              ModuleFormat.amd => FrontendServerRequireStrategyProvider(
-                testSettings.reloadConfiguration,
-                assetReader,
-                packageUriMapper,
-                () async => {},
-                buildSettings,
-              ).strategy,
-              ModuleFormat.ddc =>
-                buildSettings.canaryFeatures
-                    ? FrontendServerDdcLibraryBundleStrategyProvider(
-                        testSettings.reloadConfiguration,
-                        assetReader,
-                        packageUriMapper,
-                        () async => {},
-                        buildSettings,
-                        reloadedSourcesUri: reloadedSourcesUri,
-                      ).strategy
-                    : FrontendServerDdcStrategyProvider(
-                        testSettings.reloadConfiguration,
-                        assetReader,
-                        packageUriMapper,
-                        () async => {},
-                        buildSettings,
-                      ).strategy,
-              _ => throw Exception(
-                'Unsupported DDC module format '
-                '${testSettings.moduleFormat.name}.',
-              ),
-            };
-            buildResults = const Stream<BuildResults>.empty();
-          }
-          break;
-        case CompilationMode.buildDaemonAndFrontendServer:
-          {
-            final options = [
-              if (testSettings.enableExpressionEvaluation) ...[
-                '--define',
-                'build_web_compilers|ddc=generate-full-dill=true',
-              ],
-              for (final experiment in buildSettings.experiments)
-                '--enable-experiment=$experiment',
-              '--define',
-              'build_web_compilers|ddc=canary=true',
-              '--define',
-              'build_web_compilers|sdk_js=canary=true',
-              '--define',
-              'build_web_compilers|sdk_js=web-hot-reload=true',
-              '--define',
-              'build_web_compilers|entrypoint=web-hot-reload=true',
-              '--define',
-              'build_web_compilers|entrypoint_marker=web-hot-reload=true',
-              '--define',
-              'build_web_compilers|entrypoint_marker=web-assets-path='
-                  '${project.webAssetsPath}',
-              '--define',
-              'build_web_compilers|ddc=web-hot-reload=true',
-              '--define',
-              'build_web_compilers|ddc_modules=web-hot-reload=true',
-              '--verbose',
-            ];
-            _daemonClient = await connectClient(
-              sdkLayout.dartPath,
-              project.absolutePackageDirectory,
-              options,
-              (log) {
-                final record = log.toLogRecord();
-                final name = record.loggerName == ''
-                    ? ''
-                    : '${record.loggerName}: ';
-                _logger.log(
-                  record.level,
-                  '$name${record.message}',
-                  record.error,
-                  record.stackTrace,
-                );
-              },
-            );
-            daemonClient.registerBuildTarget(
-              DefaultBuildTarget((b) => b..target = project.directoryToServe),
-            );
-            daemonClient.startBuild();
-
-            await waitForSuccessfulBuild();
-
-            final assetServerPort = daemonPort(
-              project.absolutePackageDirectory,
-            );
-            _assetHandler = _createBuildRunnerProxyHandler(assetServerPort);
-            if (testSettings.moduleFormat == ModuleFormat.ddc &&
-                buildSettings.canaryFeatures) {
-              _assetHandler = _handleReloadedSources(_assetHandler!);
-            }
-            assetReader = ProxyServerAssetReader(
-              assetServerPort,
-              root: project.directoryToServe,
-            );
-
-            if (testSettings.enableExpressionEvaluation) {
-              ddcService = ExpressionCompilerService(
-                'localhost',
-                _port!,
-                verbose: testSettings.verboseCompiler,
-                sdkConfigurationProvider: sdkConfigurationProvider,
-              );
-              expressionCompiler = ddcService;
-            }
-            frontendServerFileSystem = const LocalFileSystem();
-            final packageUriMapper = await PackageUriMapper.create(
-              frontendServerFileSystem,
-              project.packageConfigFile,
-              useDebuggerModuleNames: testSettings.useDebuggerModuleNames,
-            );
-            loadStrategy = switch ((
-              testSettings.moduleFormat,
-              buildSettings.canaryFeatures,
-            )) {
-              (ModuleFormat.ddc, true) =>
-                FrontendServerDdcLibraryBundleStrategyProvider(
-                  testSettings.reloadConfiguration,
-                  assetReader,
-                  packageUriMapper,
-                  () async => {},
-                  buildSettings,
-                  injectScriptLoad: false,
-                  reloadedSourcesUri: reloadedSourcesUri,
-                ).strategy,
-              _ => throw Exception(
-                'Unsupported DDC module format when compiling with Frontend '
-                'Server + build_runner ${testSettings.moduleFormat.name}.',
-              ),
-            };
-            buildResults = const Stream<BuildResults>.empty();
-          }
-          break;
-      }
-
-      final debugPort = await findUnusedPort();
-      if (testSettings.launchChrome) {
-        // If the environment variable DWDS_DEBUG_CHROME is set to the string
-        // true then Chrome will be launched with a UI rather than headless.
-        // If the extension is enabled, then Chrome will be launched with a UI
-        // since headless Chrome does not support extensions.
-        final enableDebugExtension = debugSettings.enableDebugExtension;
-        final headless =
-            Platform.environment['DWDS_DEBUG_CHROME'] != 'true' &&
-            !enableDebugExtension;
-        if (enableDebugExtension) {
-          await _buildDebugExtension();
-        }
-        final capabilities = Capabilities.chrome
-          ..addAll({
-            Capabilities.chromeOptions: {
-              'args': [
-                // --disable-gpu speeds up the tests that use ChromeDriver when
-                // they are run on GitHub Actions.
-                '--disable-gpu',
-                'remote-debugging-port=$debugPort',
-                if (enableDebugExtension)
-                  '--load-extension=debug_extension/prod_build',
-                if (headless) '--headless',
-              ],
-            },
-          });
-        _webDriver = await createDriver(
-          spec: WebDriverSpec.JsonWire,
-          desired: capabilities,
-          uri: Uri.parse(
-            'http://127.0.0.1:$chromeDriverPort/$chromeDriverUrlBase/',
-          ),
-        );
-      }
-
-      // The debugger tab must be enabled and connected before certain
-      // listeners in DWDS or `main` is run.
-      final tabConnectionCompleter = Completer<void>();
-      final appConnectionCompleter = Completer<void>();
-      final connection = ChromeConnection('localhost', debugPort);
-
-      // TODO(srujzs): In the case of the frontend server, it doesn't make sense
-      // that we initialize a new HTTP server instead of reusing the one in
-      // `TestAssetServer`. We should instead use that one to align with Flutter
-      // tools.
-      _testServer = await TestServer.start(
-        debugSettings: debugSettings.copyWith(
-          expressionCompiler: expressionCompiler,
-        ),
-        appMetadata: appMetadata,
-        port: port,
-        assetHandler: assetHandler,
-        assetReader: assetReader,
-        strategy: loadStrategy,
-        target: project.directoryToServe,
-        buildResults: buildResults,
-        chromeConnection: () async => connection,
-        httpServer: httpServer,
-      );
-
-      _testServer!.dwds.connectedApps.listen((connection) async {
-        // Ensure that we've established a tab connection before running main.
-        await tabConnectionCompleter.future;
-        if (testSettings.autoRun) {
-          connection.runMain();
-        }
-
-        // We may reuse the app connection, so only save it the first time
-        // it's encountered.
-        if (!appConnectionCompleter.isCompleted) {
-          appConnection = connection;
-          appConnectionCompleter.complete();
-        }
-      });
-
-      _appUrl = basePath.isEmpty
-          ? 'http://localhost:$port/$filePathToServe'
-          : 'http://localhost:$port/$basePath/$filePathToServe';
-
-      if (testSettings.launchChrome) {
-        await _webDriver?.get(appUrl);
-        _tabConnection = await _getTabConnection(connection, appUrl);
-        tabConnectionCompleter.complete();
-
-        if (debugSettings.enableDebugExtension) {
-          final extensionTab = await _fetchDartDebugExtensionTab(connection);
-          extensionConnection = await extensionTab.connect();
-          await extensionConnection.runtime.enable();
-        }
-
-        await appConnectionCompleter.future;
-        if (debugSettings.enableDebugging && !testSettings.waitToDebug) {
-          await startDebugging();
-        }
-        _webkitDebugger = WebkitDebugger(WipDebugger(tabConnection));
-      } else {
-        // No tab needs to be discovered, so fulfill the relevant completer.
-        tabConnectionCompleter.complete();
-      }
-    } catch (e, s) {
-      _logger.severe('Failed to setup the service, $e:$s');
-      await tearDown();
-      rethrow;
-    }
-  }
-
-  /// Creates a VM service connection connected to the debug URI.
-  ///
-  /// This can be used to test behavior that should be available to a client
-  /// connected to DWDS.
-  Future<VmService> connectFakeClient() async {
-    final fakeClient = await vmServiceConnectUri(debugConnection.uri);
-
-    fakeClient.onEvent(EventStreams.kService).listen(_handleServiceEvent);
-    await fakeClient.streamListen(EventStreams.kService);
-
-    return fakeClient;
-  }
-
-  /// Returns the service extension method given the [extensionName].
-  ///
-  /// The extension be called by a client created with [connectFakeClient].
-  String? getRegisteredServiceExtension(String extensionName) {
-    if (_serviceNameToMethod.isEmpty) {
-      throw StateError('''
-        No registered service extensions. Did you call connectFakeClient?
-      ''');
-    }
-
-    return _serviceNameToMethod[extensionName];
-  }
-
-  void _handleServiceEvent(Event e) {
-    if (e.kind == EventKind.kServiceRegistered) {
-      final serviceName = e.service!;
-      _serviceNameToMethod[serviceName] = e.method;
-    }
-  }
-
-  Future<void> startDebugging() async {
-    debugConnection = await testServer.dwds.debugConnection(appConnection);
-  }
-
-  Future<void> tearDown() async {
-    await _webRunner?.stop();
-    await _webDriver?.quit(closeSession: true);
-    _chromeDriver?.kill();
-    DartUri.currentDirectory = p.current;
-    await _daemonClient?.close();
-    await ddcService?.stop();
-    await _testServer?.stop();
-    _client?.close();
-    await _outputDir?.delete(recursive: true);
-    stopLogWriter();
-    await project.tearDown();
-
-    // clear the state for next setup
-    _webDriver = null;
-    _chromeDriver = null;
-    _daemonClient = null;
-    ddcService = null;
-    _webRunner = null;
-    _testServer = null;
-    _client = null;
-    _outputDir = null;
-  }
-
-  /// Given a list of edits, use file IO to write them to the file system.
-  ///
-  /// If `file` has the same name as the project's entry file name, that file
-  /// will be edited. Otherwise, it's assumed to be a library file.
-  // TODO(srujzs): It's possible we may want a library file with the same name
-  // as the entry file, but this function doesn't allow that. Potentially
-  // support that.
-  Future<void> makeEdits(List<Edit> edits) async {
-    // `dart:io`'s `stat` on Windows does not have millisecond precision so we
-    // need to make sure we wait long enough that modifications result in a
-    // timestamp that is guaranteed to be after the previous compile.
-    // TODO(https://github.com/dart-lang/sdk/issues/51937): Remove once this bug
-    // is fixed.
-    if (Platform.isWindows) {
-      await Future<void>.delayed(const Duration(seconds: 1));
-    }
-    _reloadedSources.clear();
-    for (var (:file, :originalString, :newString) in edits) {
-      if (file == project.dartEntryFileName) {
-        file = project.dartEntryFilePath;
-      } else {
-        file = project.dartLibFilePath(file);
-      }
-      final f = File(file);
-      final fileContents = f.readAsStringSync();
-      f.writeAsStringSync(fileContents.replaceAll(originalString, newString));
-
-      _updateReloadedSources(file);
-    }
-  }
-
-  /// Updates the reloaded_sources.json manifest file for a running test.
-  ///
-  /// This logic essentially replicates the build system's naming conventions
-  /// for DDC's generated code. DWDS itself uses the metadata file, but this
-  /// isn't available for our test fixtures.
-  /// Rules:
-  /// - Entrypoints (served): web/main.dart -> main
-  /// - Entrypoints (nested): test/hello_world/main.dart -> hello_world/main
-  /// - Library files: lib/path/to/some_file.dart
-  ///     -> packages/`package`/path/to/some_file
-  void _updateReloadedSources(String absolutePath) {
-    final relativePath = p.relative(
-      absolutePath,
-      from: project.absolutePackageDirectory,
-    );
-    final relativeUrl = p.toUri(relativePath).path;
-
-    String moduleName;
-    String libUri;
-    String srcPath;
-
-    if (relativeUrl.startsWith('lib/')) {
-      final pathInLib = relativeUrl.substring(4);
-      moduleName =
-          'packages/${project.packageName}/${p.withoutExtension(pathInLib)}';
-      libUri = 'package:${project.packageName}/$pathInLib';
-      srcPath = moduleName;
-    } else if (absolutePath == project.dartEntryFilePath) {
-      moduleName = p.withoutExtension(relativeUrl);
-      libUri = project.dartEntryFilePackageUri.toString();
-
-      final servePath = '${project.directoryToServe}/';
-      if (relativeUrl.startsWith(servePath)) {
-        // e.g. web/main.dart -> main
-        srcPath = p.withoutExtension(relativeUrl.substring(servePath.length));
-      } else {
-        // e.g. example/hello_world/main.dart -> example/hello_world/main
-        srcPath = moduleName;
-      }
-    } else {
-      throw StateError(
-        "Unhandled file path in test context's reloaded_sources.json: "
-        " $absolutePath. Only entrypoints and files in 'lib/' are supported.",
-      );
-    }
-
-    _reloadedSources.add(
-      WebDevFS.createReloadedSourceEntry(
-        src: '/$srcPath.ddc.js',
-        module: moduleName,
-        libraries: [libUri],
-      ),
-    );
-  }
-
-  /// Contains contents of the reloaded_sources.json manifest file.
-  ///
-  /// Used by the DDC Library Bundle module system to record changed files for
-  /// hot restart/reload.
-  final _reloadedSources = <Map<String, Object>>[];
-
-  void addLibraryFile({required String libFileName, required String contents}) {
-    final file = File(project.dartLibFilePath(libFileName));
-    // Library folder may not exist yet, so create it.
-    file.createSync(recursive: true);
-    file.writeAsStringSync(contents);
-    _updateReloadedSources(file.path);
-  }
-
-  Handler _createBuildRunnerProxyHandler(int assetServerPort) {
-    return proxyHandler(
-      'http://localhost:$assetServerPort/${project.directoryToServe}/',
-      client: client,
-    );
-  }
-
-  /// Wraps a handler to serve the reloaded_sources.json file for
-  /// reloads/restarts in the DDC Library Bundle module system.
-  Handler _handleReloadedSources(Handler proxy) {
-    return (request) {
-      final path = request.url.path;
-      if (path.endsWith(WebDevFS.reloadedSourcesFileName)) {
-        return shelf.Response.ok(jsonEncode(_reloadedSources));
-      }
-      return proxy(request);
-    };
-  }
-
-  Future<void> recompile({required bool fullRestart}) async {
-    await webRunner.rerun(
-      fullRestart: fullRestart,
-      fileServerUri: Uri.parse('http://${testServer.host}:${testServer.port}'),
-    );
-    return;
-  }
-
-  Future<void> waitForSuccessfulBuild({
-    Duration? timeout,
-    bool propagateToBrowser = false,
-  }) async {
-    // Wait for the build until the timeout is reached:
-    await daemonClient.buildResults
-        .firstWhere(
-          (BuildResults results) => results.results.any(
-            (BuildResult result) => result.status == BuildStatus.succeeded,
-          ),
-        )
-        .timeout(timeout ?? const Duration(seconds: 60));
-
-    if (propagateToBrowser) {
-      // Allow change to propagate to the browser.
-      // Windows, or at least Travis on Windows, seems to need more time.
-      // TODO: Wait for an explicit finish signal instead of adding this delay.
-      final delay = Platform.isWindows
-          ? const Duration(seconds: 5)
-          : const Duration(seconds: 2);
-      await Future<void>.delayed(delay);
-    }
-  }
-
-  Future<void> _buildDebugExtension() async {
-    final process = await Process.run('tool/build_extension.sh', [
-      'prod',
-    ], workingDirectory: absolutePath(pathFromDwds: 'debug_extension'));
-    print(process.stdout);
-  }
-
-  Future<WipConnection> _getTabConnection(
-    ChromeConnection connection,
-    String appUrl,
-  ) async {
-    final tab = await connection.getTab(
-      (t) => t.url == appUrl,
-      retryFor: const Duration(seconds: 5),
-    );
-    if (tab == null) {
-      throw StateError(
-        'Unable to connect to tab after retrying for 5 seconds.',
-      );
-    }
-    final tabConnection = await tab.connect();
-    await tabConnection.runtime.enable();
-    await tabConnection.debugger.enable();
-    return tabConnection;
-  }
-
-  Future<ChromeTab> _fetchDartDebugExtensionTab(
-    ChromeConnection connection,
-  ) async {
-    const retries = 5;
-    for (var i = 0; i < retries; i++) {
-      if (i > 0) {
-        await Future<void>.delayed(const Duration(milliseconds: 500));
-      }
-      final extensionTabs = (await connection.getTabs()).where((tab) {
-        return tab.isChromeExtension;
-      });
-      for (final tab in extensionTabs) {
-        final tabConnection = await tab.connect();
-        final response = await tabConnection.runtime.evaluate(
-          'window.isDartDebugExtension',
-        );
-        if (response.value == true) {
-          return tab;
-        }
-      }
-    }
-    throw StateError('No extension installed.');
-  }
-
-  /// Finds the line number in [scriptRef] matching [breakpointId].
-  ///
-  /// A breakpoint ID is found by looking for a line that ends with a comment
-  /// of exactly this form: `// Breakpoint: <id>`.
-  ///
-  /// Throws if it can't find the matching line.
-  Future<int> findBreakpointLine(
-    String breakpointId,
-    String isolateId,
-    ScriptRef scriptRef,
-  ) async {
-    final script = await debugConnection.vmService.getObject(
-      isolateId,
-      scriptRef.id!,
-    ) as Script;
-    final lines = LineSplitter.split(script.source!).toList();
-    final lineNumber = lines.indexWhere(
-      (l) => l.endsWith('// Breakpoint: $breakpointId'),
-    );
-    if (lineNumber == -1) {
-      throw StateError(
-        'Unable to find breakpoint in ${scriptRef.uri} with id '
-        '$breakpointId',
-      );
-    }
-    return lineNumber + 1;
-  }
-}
-
-typedef Edit = ({String file, String originalString, String newString});
diff --git a/dwds/test/integration/fixtures/debugger_data.dart b/dwds/test/integration/fixtures/debugger_data.dart
deleted file mode 100644
index 04768bc..0000000
--- a/dwds/test/integration/fixtures/debugger_data.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// Contains hard-coded test data usable for tests.
-library;
-
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-// ignore_for_file: prefer_single_quotes
-
-/// Stack frames as they would be in a Chrome 'Debugger.paused' event.
-///
-/// This is taken from a real run, but truncated to two levels of scope and one
-/// level of stack.
-List<WipCallFrame> frames1 = frames1Json.map(WipCallFrame.new).toList();
-
-List<Map<String, dynamic>> frames1Json = [
-  {
-    "callFrameId": "{\"ordinal\":0,\"injectedScriptId\":2}",
-    "functionName": "",
-    "functionLocation": {
-      "scriptId": "69",
-      "lineNumber": 88,
-      "columnNumber": 72,
-    },
-    "location": {"scriptId": "69", "lineNumber": 37, "columnNumber": 0},
-    "url": "http://127.0.0.1:8081/foo.ddc.js",
-    "scopeChain": [
-      {
-        "type": "local",
-        "object": {
-          "type": "object",
-          "className": "Object",
-          "description": "Object",
-          "objectId": "{\"injectedScriptId\":2,\"id\":3}",
-        },
-        "startLocation": {
-          "scriptId": "69",
-          "lineNumber": 88,
-          "columnNumber": 72,
-        },
-        "endLocation": {"scriptId": "69", "lineNumber": 93, "columnNumber": 7},
-      },
-      {
-        "type": "closure",
-        "object": {
-          "type": "object",
-          "className": "Object",
-          "description": "Object",
-          "objectId": "{\"injectedScriptId\":2,\"id\":4}",
-        },
-        "name": "main",
-        "startLocation": {
-          "scriptId": "69",
-          "lineNumber": 74,
-          "columnNumber": 48,
-        },
-        "endLocation": {"scriptId": "69", "lineNumber": 100, "columnNumber": 5},
-      },
-      {
-        "type": "closure",
-        "name": "load__some_module",
-        "object": {
-          "type": "object",
-          "className": "Object",
-          "description": "Object",
-          "objectId": "{\"injectedScriptId\":2,\"id\":5}",
-        },
-        "startLocation": {
-          "scriptId": "69",
-          "lineNumber": 0,
-          "columnNumber": 29,
-        },
-        "endLocation": {"scriptId": "69", "lineNumber": 126, "columnNumber": 1},
-      },
-      {
-        "type": "global",
-        "object": {
-          "type": "object",
-          "className": "Window",
-          "description": "Window",
-          "objectId": "{\"injectedScriptId\":2,\"id\":6}",
-        },
-      },
-    ],
-    "this": {"type": "undefined"},
-  },
-];
-
-/// Data in the form returned from getProperties called twice on successive
-/// elements of a scope chain.
-///
-/// It has two variables named 'a' and 'b' in the first scope.
-List<WipResponse> variables1 = [
-  WipResponse({
-    'id': 1,
-    'result': {'result': <Map<String, dynamic>>[]},
-  }),
-  WipResponse({
-    'id': 2,
-    'result': {
-      'result': [
-        {
-          'name': 'a',
-          'value': {'type': 'string', 'value': 'foo'},
-        },
-        {
-          'name': 'b',
-          'value': {'type': 'string', 'value': 'bar'},
-        },
-      ],
-    },
-  }),
-  WipResponse({
-    'id': 3,
-    'result': {'result': <Map<String, dynamic>>[]},
-  }),
-  // Fake that the SDK is loaded.
-  WipResponse({
-    'id': 4,
-    'result': {
-      'result': [
-        {'name': 'dart', 'value': null},
-        {'name': 'core', 'value': null},
-      ],
-    },
-  }),
-  WipResponse({
-    'id': 5,
-    'result': {'result': <Map<String, dynamic>>[]},
-  }),
-  WipResponse({
-    'id': 6,
-    'result': {'result': <Map<String, dynamic>>[]},
-  }),
-];
-
-/// Sample data for a Debugger.scriptParsed event
-Map<String, Object> scriptParsedParams = {
-  "endColumn": 0,
-  "endLine": 53,
-  "executionContextAuxData": {
-    "frameId": "75DC0B9DAB420DD67036D4560E614998",
-    "isDefault": true,
-    "type": "default",
-  },
-  "executionContextId": 7,
-  "hasSourceURL": false,
-  "hash": "1b7029ad6e8a77da7fe7c0741479c0394f01b0f9",
-  "isLiveEdit": false,
-  "isModule": false,
-  "length": 2732,
-  "scriptId": "146",
-  "sourceMapURL": "main.ddc.js.map",
-  "startColumn": 0,
-  "startLine": 0,
-  "url": "http://localhost:8080/main.ddc.js",
-};
diff --git a/dwds/test/integration/fixtures/fakes.dart b/dwds/test/integration/fixtures/fakes.dart
deleted file mode 100644
index 0b90d0e..0000000
--- a/dwds/test/integration/fixtures/fakes.dart
+++ /dev/null
@@ -1,485 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/debugging/dart_runtime_debugger.dart';
-import 'package:dwds/src/debugging/execution_context.dart';
-import 'package:dwds/src/debugging/inspector.dart';
-import 'package:dwds/src/debugging/instance.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:dwds/src/debugging/modules.dart';
-import 'package:dwds/src/debugging/remote_debugger.dart';
-import 'package:dwds/src/debugging/webkit_debugger.dart';
-import 'package:dwds/src/handlers/socket_connections.dart';
-import 'package:dwds/src/loaders/require.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/utilities/objects.dart';
-import 'package:shelf/shelf.dart' as shelf;
-import 'package:vm_service/vm_service.dart';
-
-/// A library of fake/stub implementations of our classes and their supporting
-/// classes (e.g. WipConnection) for unit testing.
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'debugger_data.dart';
-import 'utilities.dart';
-
-/// Constructs a trivial Isolate we can use when we need to provide one but
-/// don't want go through initialization.
-Isolate get simpleIsolate => Isolate(
-  id: '1',
-  number: '1',
-  name: 'fake',
-  libraries: [],
-  exceptionPauseMode: 'abc',
-  breakpoints: [],
-  pauseOnExit: false,
-  pauseEvent: null,
-  startTime: 0,
-  livePorts: 0,
-  runnable: false,
-  isSystemIsolate: false,
-  isolateFlags: [],
-);
-
-class FakeChromeAppInspector extends FakeInspector
-    implements ChromeAppInspector {
-  FakeChromeAppInspector(this._remoteDebugger, {required super.fakeIsolate});
-  final WebkitDebugger _remoteDebugger;
-
-  @override
-  Future<RemoteObject> callFunction(
-    String function,
-    Iterable<String> argumentIds,
-  ) async {
-    functionsCalled.add(function);
-    return RemoteObject({'type': 'string', 'value': 'true'});
-  }
-
-  @override
-  Future<InstanceRef?> instanceRefFor(Object value) async =>
-      ChromeAppInstanceHelper.kNullInstanceRef;
-
-  @override
-  Future<Obj> getObject(String objectId, {int? offset, int? count}) async =>
-      Obj.parse({})!;
-
-  @override
-  Future<List<Property>> getProperties(
-    String objectId, {
-    int? offset,
-    int? count,
-    int? length,
-  }) async {
-    final response = await _remoteDebugger.sendCommand(
-      'Runtime.getProperties',
-      params: {'objectId': objectId, 'ownProperties': true},
-    );
-    final result = response.result?['result'] as List<dynamic>? ?? [];
-    return result
-        .map<Property>((Object? each) => Property(each as Map<String, dynamic>))
-        .toList();
-  }
-
-  @override
-  bool isDisplayableObject(Object? object) => true;
-
-  @override
-  bool isNativeJsError(InstanceRef instanceRef) => false;
-}
-
-class FakeInspector implements AppInspector {
-  final List<String> functionsCalled = [];
-  FakeInspector({required this.fakeIsolate});
-
-  Isolate fakeIsolate;
-
-  @override
-  Object noSuchMethod(Invocation invocation) {
-    throw UnsupportedError('This is a fake');
-  }
-
-  @override
-  Future<void> initialize({ModifiedModuleReport? modifiedModuleReport}) async {}
-
-  @override
-  Future<ScriptList> getScripts() async => ScriptList(scripts: []);
-
-  @override
-  Future<ScriptRef> scriptRefFor(String uri) async =>
-      ScriptRef(id: 'fake', uri: 'fake://uri');
-
-  @override
-  ScriptRef? scriptWithId(String? scriptId) => null;
-
-  @override
-  Isolate get isolate => fakeIsolate;
-
-  @override
-  IsolateRef get isolateRef => IsolateRef(
-    id: fakeIsolate.id,
-    number: fakeIsolate.number,
-    name: fakeIsolate.name,
-    isSystemIsolate: fakeIsolate.isSystemIsolate,
-  );
-}
-
-class FakeSseConnection implements SseSocketConnection {
-  /// A [StreamController] for incoming messages on SSE connection.
-  final controllerIncoming = StreamController<String>();
-
-  /// A [StreamController] for outgoing messages on SSE connection.
-  final controllerOutgoing = StreamController<String>();
-
-  @override
-  bool get isInKeepAlivePeriod => false;
-
-  @override
-  StreamSink<String> get sink => controllerOutgoing.sink;
-
-  @override
-  Stream<String> get stream => controllerIncoming.stream;
-
-  @override
-  void shutdown() {}
-}
-
-class FakeModules implements Modules {
-  final String _library;
-  final String _module;
-  final String _path;
-
-  FakeModules({
-    this._library = 'main.dart',
-    this._module = 'main',
-    this._path = 'web/main.dart',
-  });
-
-  @override
-  Future<void> initialize(
-    String entrypoint, {
-    ModifiedModuleReport? modifiedModuleReport,
-  }) async {}
-
-  @override
-  Future<Uri> libraryForSource(String serverPath) async => Uri(path: _library);
-
-  @override
-  Future<Uri> libraryOrPartForSource(String serverPath) async =>
-      Uri(path: _library);
-
-  @override
-  Future<String> moduleForSource(String serverPath) async => _module;
-
-  @override
-  Future<Set<String>> sourcesForModule(String module) async => {_path};
-
-  @override
-  Future<Map<String, String>> modules() async => {_path: _module};
-
-  @override
-  Future<String> moduleForLibrary(String libraryUri) async => _module;
-
-  @override
-  Future<String?> getRuntimeScriptIdForModule(
-    String entrypoint,
-    String module,
-  ) async => null;
-}
-
-class FakeWebkitDebugger implements WebkitDebugger {
-  final Map<String, WipScript>? _scripts;
-  @override
-  Future disable() async => null;
-
-  @override
-  Future enable() async => null;
-
-  FakeWebkitDebugger({this._scripts}) {
-    final buildSettings = TestBuildSettings.dart(
-      appEntrypoint: Uri.parse('package:fakeapp/main.dart'),
-    );
-    setGlobalsForTesting(
-      toolConfiguration: TestToolConfiguration.withLoadStrategy(
-        loadStrategy: RequireStrategy(
-          ReloadConfiguration.none,
-          (_) async => {},
-          (_) async => {},
-          (_, _) async => null,
-          (MetadataProvider _, String _) async => '',
-          (MetadataProvider _, String _) async => '',
-          (String _) => '',
-          (MetadataProvider _) async => <String, ModuleInfo>{},
-          FakeAssetReader(),
-          buildSettings,
-        ),
-      ),
-    );
-  }
-
-  @override
-  Stream<T> eventStream<T>(String method, WipEventTransformer<T> transformer) =>
-      Stream.empty();
-
-  @override
-  Future<String> getScriptSource(String scriptId) async => '';
-
-  Stream<WipDomain>? get onClosed => null;
-
-  @override
-  Stream<GlobalObjectClearedEvent> get onGlobalObjectCleared =>
-      const Stream.empty();
-
-  @override
-  late Stream<DebuggerPausedEvent> onPaused;
-
-  @override
-  Stream<DebuggerResumedEvent> get onResumed => const Stream.empty();
-
-  @override
-  Stream<ScriptParsedEvent> get onScriptParsed => const Stream.empty();
-
-  @override
-  Stream<TargetCrashedEvent> get onTargetCrashed => const Stream.empty();
-
-  @override
-  Future<WipResponse> pause() async => fakeWipResponse;
-
-  @override
-  Future<WipResponse> resume() async => fakeWipResponse;
-
-  @override
-  Map<String, WipScript> get scripts => _scripts!;
-
-  List<WipResponse> results = variables1;
-  int resultsReturned = 0;
-
-  @override
-  Future<WipResponse> sendCommand(
-    String command, {
-    Map<String, dynamic>? params,
-  }) async {
-    // Force the results that we expect for looking up the variables.
-    if (command == 'Runtime.getProperties') {
-      return results[resultsReturned++];
-    }
-    return fakeWipResponse;
-  }
-
-  @override
-  Future<WipResponse> setPauseOnExceptions(PauseState state) async =>
-      fakeWipResponse;
-
-  @override
-  Future<WipResponse> removeBreakpoint(String breakpointId) async =>
-      fakeWipResponse;
-
-  @override
-  Future<WipResponse> stepInto({Map<String, dynamic>? params}) async =>
-      fakeWipResponse;
-
-  @override
-  Future<WipResponse> stepOut() async => fakeWipResponse;
-
-  @override
-  Future<WipResponse> stepOver({Map<String, dynamic>? params}) async =>
-      fakeWipResponse;
-
-  @override
-  Stream<ConsoleAPIEvent> get onConsoleAPICalled => const Stream.empty();
-
-  @override
-  Stream<ExceptionThrownEvent> get onExceptionThrown => const Stream.empty();
-
-  @override
-  Future<void> close() async {}
-
-  @override
-  Stream<WipConnection> get onClose => const Stream.empty();
-
-  @override
-  Future<RemoteObject> evaluate(
-    String expression, {
-    bool? returnByValue,
-    int? contextId,
-  }) async => RemoteObject({});
-
-  @override
-  Future<RemoteObject> evaluateOnCallFrame(
-    String callFrameId,
-    String expression,
-  ) async {
-    return RemoteObject(<String, dynamic>{});
-  }
-
-  @override
-  Future<List<WipBreakLocation>> getPossibleBreakpoints(
-    WipLocation start,
-  ) async => [];
-
-  @override
-  Future<WipResponse> enablePage() async => fakeWipResponse;
-
-  @override
-  Future<WipResponse> pageReload() async => fakeWipResponse;
-
-  @override
-  Future<void> Function()? onReconnect;
-}
-
-/// Fake execution context that is needed for id only
-class FakeExecutionContext extends ExecutionContext {
-  @override
-  Future<int> get id async {
-    return 0;
-  }
-
-  FakeExecutionContext();
-}
-
-class FakeStrategy extends LoadStrategy {
-  final BuildSettings _buildSettings;
-
-  FakeStrategy(
-    super.assetReader, {
-    super.packageConfigPath,
-    BuildSettings? buildSettings,
-  }) : _buildSettings =
-           buildSettings ??
-           TestBuildSettings.dart(
-             appEntrypoint: Uri.parse('package:myapp/main.dart'),
-           );
-
-  @override
-  Future<String> bootstrapFor(String entrypoint) async => 'dummy_bootstrap';
-
-  @override
-  shelf.Handler get handler =>
-      (request) => (request.url.path == 'someDummyPath')
-      ? shelf.Response.ok('some dummy response')
-      : shelf.Response.notFound('someDummyPath');
-
-  @override
-  BuildSettings get buildSettings => _buildSettings;
-
-  @override
-  String get id => 'dummy-id';
-
-  @override
-  String get moduleFormat => 'dummy-format';
-
-  @override
-  String get loadLibrariesModule => '';
-
-  @override
-  String get loadModuleSnippet => '';
-
-  @override
-  late final DartRuntimeDebugger dartRuntimeDebugger = DartRuntimeDebugger(
-    loadStrategy: this,
-    useLibraryBundleExpression: false,
-  );
-
-  @override
-  ReloadConfiguration get reloadConfiguration => ReloadConfiguration.none;
-
-  @override
-  String? g3RelativePath(String absolutePath) => null;
-
-  @override
-  String loadClientSnippet(String clientScript) => 'dummy-load-client-snippet';
-
-  @override
-  Future<String?> moduleForServerPath(
-    String entrypoint,
-    String serverPath,
-  ) async => '';
-
-  @override
-  Future<String> serverPathForModule(String entrypoint, String module) async =>
-      '';
-
-  @override
-  Future<String> sourceMapPathForModule(
-    String entrypoint,
-    String module,
-  ) async => '';
-
-  @override
-  String? serverPathForAppUri(String appUri) => '';
-
-  @override
-  MetadataProvider metadataProviderFor(String entrypoint) =>
-      createProvider(entrypoint, FakeAssetReader());
-
-  @override
-  Future<Map<String, ModuleInfo>> moduleInfoForEntrypoint(String entrypoint) =>
-      throw UnimplementedError();
-}
-
-class FakeAssetReader implements AssetReader {
-  String? metadata;
-  final String? _dartSource;
-  final String? _sourceMap;
-  FakeAssetReader({this.metadata, this._dartSource, this._sourceMap});
-
-  @override
-  String get basePath => '';
-
-  @override
-  Future<String> dartSourceContents(String serverPath) {
-    return _throwUnimplementedOrReturnContents(_dartSource);
-  }
-
-  @override
-  Future<String> metadataContents(String serverPath) {
-    return _throwUnimplementedOrReturnContents(metadata);
-  }
-
-  @override
-  Future<String> sourceMapContents(String serverPath) {
-    return _throwUnimplementedOrReturnContents(_sourceMap);
-  }
-
-  @override
-  Future<void> close() async {}
-
-  Future<String> _throwUnimplementedOrReturnContents(String? contents) async {
-    if (contents == null) throw UnimplementedError();
-    return contents;
-  }
-}
-
-class FakeExpressionCompiler implements ExpressionCompiler {
-  @override
-  Future<ExpressionCompilationResult> compileExpressionToJs(
-    String isolateId,
-    String libraryUri,
-    String scriptUri,
-    int line,
-    int column,
-    Map<String, String> jsModules,
-    Map<String, String> jsFrameValues,
-    String moduleName,
-    String expression,
-  ) async => ExpressionCompilationResult(expression, false);
-
-  @override
-  Future<bool> updateDependencies(Map<String, ModuleInfo> modules) async =>
-      true;
-
-  @override
-  Future<void> initialize(CompilerOptions options) async {}
-}
-
-final fakeWipResponse = WipResponse({
-  'id': 1,
-  'result': {'fake': ''},
-});
-
-final fakeFailingWipResponse = WipResponse({'result': 'Error: Bad request'});
diff --git a/dwds/test/integration/fixtures/main.dart.dill.json b/dwds/test/integration/fixtures/main.dart.dill.json
deleted file mode 100644
index 751bc10..0000000
--- a/dwds/test/integration/fixtures/main.dart.dill.json
+++ /dev/null
@@ -1 +0,0 @@
-{"/web/main.dart.lib.js":{"code":[0,2929],"sourcemap":[0,373]},"/packages/webdev_example_app/message.dart.lib.js":{"code":[2929,3844],"sourcemap":[373,568]},"/packages/path/src/path_set.dart.lib.js":{"code":[3844,97029],"sourcemap":[568,24042]},"/packages/path/src/path_exception.dart.lib.js":{"code":[97029,98717],"sourcemap":[24042,24277]},"/packages/path/src/characters.dart.lib.js":{"code":[98717,100285],"sourcemap":[24277,24602]},"/packages/path/src/utils.dart.lib.js":{"code":[100285,102035],"sourcemap":[24602,25191]}}
\ No newline at end of file
diff --git a/dwds/test/integration/fixtures/main.dart.dill.map b/dwds/test/integration/fixtures/main.dart.dill.map
deleted file mode 100644
index 58a3895..0000000
--- a/dwds/test/integration/fixtures/main.dart.dill.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYwB,IAAtB,WAAM;AAKJ,IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,uCAAC,WAAW;IAChE;AACkD,IAAnD,AAAS,AAAK,kCAAO,wBAAe,YAAO;AAEvC,gBAAQ;AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;;EAEzB","file":"main.dart.lib.js"}{"version":3,"sourceRoot":"","sources":["message.dart"],"names":[],"mappings":";;;;;;;;;MAEM,eAAO;YAAG,WAAO,SAAS","file":"../../../../../../../../packages/webdev_example_app/message.dart.lib.js"}{"version":3,"sourceRoot":"","sources":["path_set.dart","path_map.dart","style.dart","internal_style.dart","style/windows.dart","style/url.dart","parsed_path.dart","style/posix.dart","context.dart","../path.dart"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6BuC;AACd,MAArB,AAAQ,OAAD,IAAC,OAAR,UAAc,gBAAN;AACR,YAAO,sCACK,SAAC,OAAO;AACd,cAAI,AAAM,KAAD,IAAI,MAAM,MAAO,AAAM,MAAD,IAAI;AACnC,cAAI,AAAM,KAAD,IAAI,MAAM,MAAO;AAC1B,gBAAO,AAAQ,QAAD,QAAQ,KAAK,EAAE,KAAK;+CAE1B,QAAC,QAAS,AAAK,IAAD,IAAI,OAAO,IAAI,AAAQ,OAAD,MAAM,IAAI,+BAC5C,QAAC,QAAc,AAAU,OAAf,IAAI,gBAAc,AAAK,IAAD,IAAI;IACtD;;AAMiC,YAAA,AAAO;IAAQ;;AAE9B,YAAA,AAAO;IAAM;;yBAEf;AAAU,YAAA,AAAO,kBAAI,KAAK;IAAC;;gCAEd;AAAa,YAAA,AAAO,qBAAO,QAAQ;IAAC;;AAE7C,YAAA,AAAO;IAAS;;AAEpB,YAAA,AAAO;IAAO;aAET;AAAU,YAAA,AAAO,uBAAS,KAAK;IAAC;gBAEnB;AAAU,YAAA,AAAO,0BAAY,KAAK;IAAC;eAElC;AAAU,YAAA,AAAO,yBAAW,KAAK;IAAC;iBAEhC;AAAU,YAAA,AAAO,2BAAa,KAAK;IAAC;WAEpD;AAAY,YAAA,AAAO,qBAAO,OAAO;IAAC;WAEpC;AAAU,YAAA,AAAO,qBAAO,KAAK;IAAC;cAEjB;AAAa,YAAA,AAAO,wBAAU,QAAQ;IAAC;gBAEjD;AAAyB,YAAA,AAAO,0BAAY,IAAI;IAAC;cAEvC;AAAa,YAAA,AAAO,wBAAU,QAAQ;IAAC;gBAEjD;AAAyB,YAAA,AAAO,0BAAY,IAAI;IAAC;;2BAEzC;AAAU,YAAA,AAAO,oBAAM,KAAK;IAAC;;AAEpC,YAAA,AAAO;IAAO;;;QA9DlB;IAAmB,eAAE,yBAAQ,OAAO;AAAvD;;EAAwD;kCAQ5B;;QAAkB;IACjC,qBAAE,yBAAQ,OAAO,GAAG,UAAO,KAAK;AAD7C;;EAC8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBCAH;AACpB,QAArB,AAAQ,OAAD,IAAC,OAAR,UAAc,gBAAN;AACR,cAAO,wDACK,SAAC,OAAO;AACd,gBAAI,AAAM,KAAD,IAAI,MAAM,MAAO,AAAM,MAAD,IAAI;AACnC,gBAAI,AAAM,KAAD,IAAI,MAAM,MAAO;AAC1B,kBAAO,AAAQ,QAAD,QAAQ,KAAK,EAAE,KAAK;iDAE1B,QAAC,QAAS,AAAK,IAAD,IAAI,OAAO,IAAI,AAAQ,OAAD,MAAM,IAAI,+BAC5C,QAAC,QAAc,AAAU,OAAf,IAAI,gBAAc,AAAK,IAAD,IAAI;MACtD;;;UAtBmB;AAAY,uCAAM,4BAAQ,OAAO;;IAAE;2BAQ5B;;UAAkB;AACtC,6CAAM,4BAAQ,OAAO,GAAG,YAAO,KAAK;;IAAE;;;;;;;;;;;ACmB1C,UAAQ,AAAK,yBAAU,QAAQ,MAAa;AAC5C,WAAS,AAAK,AAAK,8BAAS,MAAM,MAAa;AAC/C,UAAI,AAAiB,AAAa,qBAApB,yBAAuB,QAAQ,MAAa;AAC1D,YAAa;IACf;;AAMuB,yCAAe;IAAK;;AAgCtB;IAAI;;;;EAC3B;;;;;;;;;MAxEqB,kBAAK;YAAG;;MAOR,oBAAO;YAAG;;MAQV,gBAAG;YAAG;;MAMN,qBAAQ;YAAG;;;;YCSR;AAChB,mBAAS,gBAAW,IAAI;AAC5B,UAAW,aAAP,MAAM,IAAG,GAAG,MAAO,AAAK,KAAD,aAAW,GAAG,MAAM;AAC/C,uBAAO,oBAAe,IAAI,KAAI,AAAI,IAAA,QAAC,KAAK;IAC1C;sBAW6B;AACvB,qBAAW,AAAQ,mBAAM,IAAI;AAIjC,oBAAI,iBAAY,AAAK,IAAD,cAAY,AAAK,AAAO,IAAR,UAAU,MAAK,AAAS,AAAO,QAAR,OAAK;AAChE,YAAO,8BAAkB,QAAQ;IACnC;mBAOwB,WAAe;AAAc,YAAA,AAAU,UAAD,IAAI,SAAS;;eAMpD,OAAc;AAAU,YAAA,AAAM,MAAD,IAAI,KAAK;;yBAEhC;AAAa,qBAAQ;;qBAEnB;AAAS,iBAAI;;;;;EAC9C;;;;;;;;;;;;;;;;;;;;IClEQ;;;;;;IACA;;;;;;IACA;;;;;;IAIA;;;;;;IACA;;;;;;IACA;;;;;;IACA;;;;;;sBAEwB;AAAS,YAAA,AAAK,KAAD,YAAU;IAAI;gBAEpC;AACjB,YAAA,AAAS,AAAe,SAAhB,WAAmB,AAAS,QAAD;IAAmB;mBAE/B;AACzB,UAAI,AAAK,IAAD,YAAU,MAAO;AACzB,YAAO,YAAC,iBAAY,AAAK,IAAD,cAAY,AAAK,AAAO,IAAR,UAAU;IACpD;eAEsB;UAAY;AAChC,UAAI,AAAK,IAAD,YAAU,MAAO;AACzB,UAAI,AAAK,AAAc,IAAf,cAAY,WAAmB,MAAO;AAC9C,UAAI,AAAK,AAAc,IAAf,cAAY;AAClB,YAAI,AAAK,AAAO,IAAR,UAAU,KAAK,AAAK,IAAD,cAAY,WAAuB,MAAO;AAGjE,oBAAQ,AAAK,IAAD,WAAS,MAAM;AAC/B,YAAI,AAAM,KAAD,GAAG;AAC2B,UAArC,QAAQ,AAAK,IAAD,WAAS,MAAM,AAAM,KAAD,GAAG;AACnC,cAAI,AAAM,KAAD,GAAG,GAAG,MAAO,MAAK;;AAE7B,cAAO,AAAK,KAAD;;AAIb,UAAI,AAAK,AAAO,IAAR,UAAU,GAAG,MAAO;AAE5B,qBAAK,mBAAa,AAAK,IAAD,cAAY,MAAK,MAAO;AAE9C,UAAI,AAAK,IAAD,cAAY,WAAmB,MAAO;AAE9C,qBAAK,iBAAY,AAAK,IAAD,cAAY,MAAK,MAAO;AAC7C,YAAO;IACT;mBAE2B;AAAS,YAAA,AAAiB,iBAAN,IAAI,MAAK;IAAC;oBAE3B;AACxB,mBAAS,gBAAW,IAAI;AAC5B,UAAI,AAAO,MAAD,KAAI,GAAG,MAAO,AAAI,KAAA,QAAC;AAC7B,YAAO;IACT;gBAEuB;AACrB,UAAI,AAAI,GAAD,YAAW,MAAM,AAAI,GAAD,YAAW;AACqB,QAAzD,WAAM,2BAAc,AAAoC,kBAA9B,GAAG;;AAG3B,iBAAO,AAAI,GAAD;AACd,UAAI,AAAI,AAAK,GAAN,UAAS;AAId,YAAI,AAAK,AAAO,IAAR,WAAW,KAAK,AAAK,IAAD,cAAY,kBAAQ,oBAAc,IAAI,EAAE;AACjC,UAAjC,OAAO,AAAK,IAAD,gBAAc,KAAK;;;AAIH,QAA7B,OAAO,AAAsB,kBAAf,AAAI,GAAD,kBAAO,IAAI;;AAE9B,YAAW,0BAAgB,AAAK,IAAD,cAAY,KAAK;IAClD;sBAE6B;AACvB,mBAAoB,6BAAM,IAAI,EAAE;AACpC,UAAI,AAAO,AAAK,MAAN,mBAAiB;AAKrB,wBAAY,AAAO,AAAK,AAAY,MAAlB,cAAY,cAAY,QAAC,QAAS,AAAK,IAAD,KAAI;AAC1B,QAAtC,AAAO,AAAM,MAAP,gBAAc,GAAG,AAAU,SAAD;AAEhC,sBAAI,AAAO,MAAD;AAGY,UAApB,AAAO,AAAM,MAAP,aAAW;;AAGnB,cAAO,wBACK,cAAc,AAAU,SAAD,wBAAsB,AAAO,MAAD;;AAQ/D,sBAAI,AAAO,AAAM,MAAP,+BAAkB,AAAO,MAAD;AACZ,UAApB,AAAO,AAAM,MAAP,aAAW;;AAMiD,QADpE,AAAO,AACF,MADC,gBACM,GAAG,AAAO,AAAK,AAAoB,MAA1B,mBAAiB,KAAK,iBAAe,MAAM;AAEhE,cAAO,wBAAY,sBAAsB,AAAO,MAAD;;IAEnD;mBAEwB,WAAe;AACrC,UAAI,AAAU,SAAD,IAAI,SAAS,EAAE,MAAO;AAGnC,UAAI,AAAU,SAAD,SAAiB,MAAO,AAAU,UAAD;AAC9C,UAAI,AAAU,SAAD,SAAqB,MAAO,AAAU,UAAD;AAIlD,UAAc,cAAV,SAAS,iBAAG,SAAS,iBAAmB,MAAO;AAG/C,uBAAuB,cAAV,SAAS;AAC1B,YAAO,AAAW,AAAgB,WAAjB,UAAoB,AAAW,UAAD;IACjD;eAEuB,OAAc;AACnC,UAAI,AAAU,KAAK,IAAE,KAAK,EAAG,MAAO;AACpC,UAAI,AAAM,KAAD,YAAW,AAAM,KAAD,SAAS,MAAO;AACzC,eAAS,IAAI,GAAG,AAAE,CAAD,GAAG,AAAM,KAAD,SAAS,IAAA,AAAC,CAAA;AACjC,uBAAK,oBAAe,AAAM,KAAD,cAAY,CAAC,GAAG,AAAM,KAAD,cAAY,CAAC;AACzD,gBAAO;;;AAGX,YAAO;IACT;yBAE6B;AAC3B,UAAI,AAAS,QAAD,SAAiB;AAC7B,UAAa,aAAT,QAAQ,QAAiB,MAAO,SAAQ;AAC5C,UAAa,aAAT,QAAQ,QAAiB,MAAO,SAAQ;AAC5C,YAAgB,eAAT,QAAQ;IACjB;qBAE+B;AAAS,YAAA,AAAK,KAAD;IAAc;;;IAnJpD,aAAO;IACP,kBAAY;IACZ;IAIA,yBAAmB,gBAAO;IAC1B,8BAAwB,gBAAO;IAC/B,oBAAc,gBAAO;IACrB,4BAAsB,gBAAO;;EAXrB;;;;;;;;;;;;;;;;;;;;;;;;;MAJV,qBAAa;;;;;;;;;;;;;ICCX;;;;;;IACA;;;;;;IACA;;;;;;IAIA;;;;;;IACA;;;;;;IACA;;;;;;IACA;;;;;;sBAEwB;AAAS,YAAA,AAAK,KAAD,YAAU;IAAI;gBAEpC;AAAa,YAAA,AAAS,SAAD;IAAe;mBAE9B;AACzB,UAAI,AAAK,IAAD,YAAU,MAAO;AAGzB,qBAAK,iBAAY,AAAK,IAAD,cAAY,AAAK,AAAO,IAAR,UAAU,MAAK,MAAO;AAI3D,YAAO,AAAK,AAAgB,KAAjB,YAAU,UAAU,AAAiB,gBAAN,IAAI,MAAK,AAAK,IAAD;IACzD;eAEsB;UAAY;AAChC,UAAI,AAAK,IAAD,YAAU,MAAO;AACzB,oBAAI,iBAAY,AAAK,IAAD,cAAY,MAAK,MAAO;AAE5C,eAAS,IAAI,GAAG,AAAE,CAAD,GAAG,AAAK,IAAD,SAAS,IAAA,AAAC,CAAA;AAC5B,uBAAW,AAAK,IAAD,cAAY,CAAC;AAChC,sBAAI,iBAAY,QAAQ,IAAG,MAAO;AAClC,YAAI,AAAS,QAAD;AACV,cAAI,AAAE,CAAD,KAAI,GAAG,MAAO;AAInB,cAAI,AAAK,IAAD,cAAY,MAAM,AAAE,CAAD,GAAG,IAAI,AAAM,IAAN,AAAE,CAAD,GAAI;AACnC,sBAAQ,AAAK,IAAD,WAAS,KAAK,CAAC;AAC/B,cAAI,AAAM,KAAD,IAAI,GAAG,MAAO,AAAK,KAAD;AAI3B,yBAAK,SAAS,KAAI,AAAK,AAAO,IAAR,UAAU,AAAM,KAAD,GAAG,GAAG,MAAO,MAAK;AACvD,eAAK,AAAK,IAAD,cAAY,YAAY,MAAO,MAAK;AAC7C,yBAAK,oBAAc,IAAI,EAAE,AAAM,KAAD,GAAG,KAAI,MAAO,MAAK;AACjD,gBAAO,AAAK,AAAO,KAAR,YAAW,AAAM,KAAD,GAAG,IAAI,AAAM,KAAD,GAAG,IAAI,AAAM,KAAD,GAAG;;;AAI1D,YAAO;IACT;mBAE2B;AACvB,YAAA,AAAK,AAAW,KAAZ,2BAAe,iBAAY,AAAK,IAAD,cAAY;IAAG;oBAExB;AAAS,2CAAe,IAAI,KAAI,MAAM;IAAI;gBAEjD;AAAQ,YAAI,eAAJ,GAAG;IAAW;sBAEhB;AAAS,YAAI,gBAAM,IAAI;IAAC;sBACxB;AAAS,YAAI,gBAAM,IAAI;IAAC;;;IA9D/C,cAAO;IACP,mBAAY;IACZ;IAIA,0BAAmB,gBAAO;IAC1B,+BAAwB,gBAAO;IAC/B,qBAAc,gBAAO;IACrB,6BAAsB,gBAAO;;EAXzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICDI;;;;;;IAMP;;;;;;IAKF;;;;;;IAIQ;;;;;;IAOA;;;;;;;AAIW,YAAA,AAAiB,gCAAC;IAAE;;AAGrB,YAAA,AAAK,cAAG;IAAI;iBAEH,MAAoB;AAE9C,iBAAO,AAAM,KAAD,SAAS,IAAI;AACzB,2BAAiB,AAAM,KAAD,gBAAgB,IAAI;AAC9C,UAAI,IAAI,IAAI,MAAM,AAAkC,OAA3B,AAAK,IAAD,aAAW,AAAK,IAAD;AAGxC,kBAAgB;AAChB,uBAAqB;AAErB,kBAAQ;AAEZ,UAAI,AAAK,IAAD,2BAAe,AAAM,KAAD,aAAa,AAAK,IAAD,cAAY;AAChC,QAAvB,AAAW,UAAD,OAAK,AAAI,IAAA,QAAC;AACX,QAAT,QAAQ;;AAEU,QAAlB,AAAW,UAAD,OAAK;;AAGjB,eAAS,IAAI,KAAK,EAAE,AAAE,CAAD,GAAG,AAAK,IAAD,SAAS,IAAA,AAAC,CAAA;AACpC,sBAAI,AAAM,KAAD,aAAa,AAAK,IAAD,cAAY,CAAC;AACF,UAAnC,AAAM,KAAD,OAAK,AAAK,IAAD,aAAW,KAAK,EAAE,CAAC;AACV,UAAvB,AAAW,UAAD,OAAK,AAAI,IAAA,QAAC,CAAC;AACR,UAAb,QAAQ,AAAE,CAAD,GAAG;;;AAKhB,UAAI,AAAM,KAAD,GAAG,AAAK,IAAD;AACkB,QAAhC,AAAM,KAAD,OAAK,AAAK,IAAD,aAAW,KAAK;AACZ,QAAlB,AAAW,UAAD,OAAK;;AAGjB,YAAkB,+BAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU;IACpE;;AAMM,iBAAO,AAAK;AACe,MAA/B,AAAK,IAAD;AACJ,oBAAI,AAAK,AAAM,IAAP,mBAAgB,MAAO,AAAK,cAAG,OAAO,KAAK;AACnD,YAAO,AAAK,AAAM,KAAP;IACb;;AAEuC,YAAA,AAAiB,gCAAC;IAAE;;AAGvD,YAAiB,WAAjB,AAAM,6BAAe,AAAM,AAAK,sBAAG,MAAM,AAAW,2BAAQ;IAAG;;AAGjE,uBAAO,AAAM,4BAAc,AAAM,AAAK,sBAAG;AACrB,QAAlB,AAAM;AACiB,QAAvB,AAAW;;AAEb,oBAAI,AAAW,+BAAY,AAAU,AAA4B,uBAAT,aAAlB,AAAW,4BAAS,GAAK;IACjE;;UAEqB;AAEf,2BAAiB;AACjB,qBAAmB;AACvB,eAAS,OAAQ;AACf,YAAI,AAAK,IAAD,KAAI,OAAO,AAAK,IAAD,KAAI;cAEpB,KAAI,AAAK,IAAD,KAAI;AAEjB,wBAAI,AAAS,QAAD;AACW,YAArB,AAAS,QAAD;;AAGQ,YAAhB,iBAAA,AAAc,cAAA;;;AAGgD,UAAhE,AAAS,QAAD,iBAAK,YAAY,IAAG,AAAM,4BAAiB,IAAI,IAAI,IAAI;;;AAKnE,qBAAK;AACqD,QAAxD,AAAS,QAAD,aAAW,GAAQ,sBAAO,cAAc,EAAE;;AAIpD,oBAAI,AAAS,QAAD,0BAAa;AACN,QAAjB,AAAS,QAAD,OAAK;;AAIX,0BAAc,wBACd,AAAS,QAAD,WAAS,QAAC,KAAM,AAAM,iDACpB;AAKD,MAJb,AAAc,aAAD,UACT,GACkC,UAAlC,8BAAc,AAAS,QAAD,4BAAe,AAAM,0BAAe,cACpD,AAAM,uBACN;AAEM,MAAhB,aAAQ,QAAQ;AACU,MAA1B,kBAAa,aAAa;AAG1B,UAAI,aAAQ,QAAc,YAAN,YAAe;AACjC,sBAAI,YAAY,GAAE,AAAyB,YAAlB,AAAK;AACG,QAAjC,YAAO,AAAK,uBAAW,KAAK;;AAEJ,MAA1B;IACF;;AAGM,oBAAU;AACd,UAAI,aAAQ,MAAM,AAAQ,AAAW,OAAZ,OAAO;AAChC,eAAS,IAAI,GAAG,AAAE,CAAD,gBAAG,AAAM,sBAAQ,IAAA,AAAC,CAAA;AACL,QAA5B,AAAQ,OAAD,OAAO,AAAU,uBAAC,CAAC;AACH,QAAvB,AAAQ,OAAD,OAAO,AAAK,kBAAC,CAAC;;AAEO,MAA9B,AAAQ,OAAD,OAAO,AAAW;AAEzB,YAAO,AAAQ,QAAD;IAChB;;AAQM,iBAAO,AAAM,uBAAU,QAAC,KAAM,AAAE,CAAD,KAAI,8BAAY,cAAM;AAEzD,UAAI,AAAK,IAAD,IAAI,MAAM,MAAO,uBAAC,IAAI;AAC9B,UAAI,AAAK,IAAD,KAAI,MAAM,MAAO,uBAAC,MAAM;AAE5B,oBAAU,AAAK,IAAD,eAAa;AAI/B,UAAI,AAAQ,OAAD,IAAI,GAAG,MAAO,uBAAC,IAAI,EAAE;AAEhC,YAAO,uBAAC,AAAK,IAAD,aAAW,GAAG,OAAO,GAAG,AAAK,IAAD,aAAW,OAAO;IAC5D;;AAEsB,YAAW,+BAC7B,YAAO,WAAM,qBAAqB,oBAAK,aAAa,oBAAK;IAAY;;wCA1GhE,OAAY,MAAW,gBAAqB,OAAY;IAAxD;IAAY;IAAW;IAAqB;IAAY;;EAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICjEtE;;;;;;IACA;;;;;;IACA;;;;;;IAIA;;;;;;IACA;;;;;;IACA;;;;;;IACA;;;;;;sBAEwB;AAAS,YAAA,AAAK,KAAD,YAAU;IAAI;gBAEpC;AAAa,YAAA,AAAS,SAAD;IAAe;mBAE9B;AACvB,YAAA,AAAK,AAAW,KAAZ,4BAAgB,iBAAY,AAAK,IAAD,cAAY,AAAK,AAAO,IAAR,UAAU;IAAG;eAE/C;UAAY;AAChC,UAAI,AAAK,IAAD,2BAAe,iBAAY,AAAK,IAAD,cAAY,MAAK,MAAO;AAC/D,YAAO;IACT;mBAE2B;AAAS;IAAK;oBAEX;AAAS;IAAI;gBAEpB;AACrB,UAAI,AAAI,AAAO,GAAR,YAAW,MAAM,AAAI,AAAO,GAAR,YAAW;AACpC,cAAW,0BAAgB,AAAI,GAAD;;AAEyB,MAAzD,WAAM,2BAAc,AAAoC,kBAA9B,GAAG;IAC/B;sBAE6B;AACvB,mBAAoB,6BAAM,IAAI,EAAE;AACpC,oBAAI,AAAO,AAAM,MAAP;AAIqB,QAA7B,AAAO,AAAM,MAAP,gBAAc,sBAAC,IAAI;YACpB,eAAI,AAAO,MAAD;AAGK,QAApB,AAAO,AAAM,MAAP,aAAW;;AAGnB,YAAO,wBAAY,sBAAsB,AAAO,MAAD;IACjD;;;IAhDM,eAAO;IACP,oBAAY;IACZ;IAIA,2BAAmB,gBAAO;IAC1B,gCAAwB,gBAAO;IAC/B,sBAAc,gBAAO;IACrB,8BAAsB;;EAXhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IC4CQ;;;;;;;UA3BG;UAAc;AACnC,UAAI,AAAQ,OAAD,IAAI;AACb,YAAI,AAAM,KAAD,IAAI;AACQ,UAAnB,UAAY;;AAEC,UAAb,UAAU;;;AAId,UAAI,AAAM,KAAD,IAAI;AACW,QAAtB,QAAc;YACT,MAAU,gCAAN,KAAK;AAEC,QADf,WAAM,2BAAc,iDAChB;;AAGN,YAAe,wBAAQ,gCAAN,KAAK,GAAmB,OAAO;IAClD;;AAiBsB,YAAA,AAAS,oBAAG,OAAO,kBAAa;IAAO;;AAIrC,YAAA,AAAM;IAAS;aAShB,OACX,cACD,cACA,cACA,cACA,cACA;AAEyD,MADlE,yBACI,YAAY,sBAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AAIhE,UAAI,AAAM,KAAD,IAAI,kBAAQ,gBAAW,KAAK,iBAAM,oBAAe,KAAK;AAC7D,cAAO,MAAK;;AAGd,YAAO,WAAK,cAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACtE;aAWuB;AAAS,YAAA,AAAa,cAAN,IAAI;IAAU;6BAUd;AACnC,YAAA,AAAa,cAAN,IAAI;IAA0B;YAUnB;AAChB,mBAAS,aAAO,IAAI;AACS,MAAjC,AAAO,MAAD;AACN,oBAAI,AAAO,AAAM,MAAP,mBAAgB,MAAO,AAAO,AAAK,OAAN,SAAS,OAAO,MAAM,AAAO,MAAD;AACnE,UAAI,AAAO,AAAM,AAAO,MAAd,oBAAiB;AACzB,cAAO,AAAO,AAAK,OAAN,SAAS,OAAO,MAAM,AAAO,MAAD;;AAElB,MAAzB,AAAO,AAAM,MAAP;AACwB,MAA9B,AAAO,AAAW,MAAZ;AAC2B,MAAjC,AAAO,MAAD;AACN,YAAc,eAAP,MAAM;IACf;cAewB;AAAS,YAAA,AAAa,cAAN,IAAI;IAAW;eAkB9B;AAAS,YAAA,AAAK,KAAD,aAAW,GAAG,AAAM,sBAAW,IAAI;IAAE;eAcpD;AAAS,YAAuB,cAAvB,AAAM,sBAAW,IAAI,KAAI;IAAC;eAMnC;AAAS,wBAAC,AAAK,gBAAW,IAAI;IAAC;mBAU3B;AAAS,YAAA,AAAM,2BAAe,IAAI;IAAC;SAe3C,OACP,cACD,cACA,cACA,cACA,cACA,cACA;AACL,kBAAgB,sBAClB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK;AAEwB,MAA/B,yBAAiB,QAAQ,KAAK;AAC9B,YAAO,cAAQ,AAAM,KAAD,SAAO,QAAC,QAAS,AAAK,IAAD,IAAI;IAC/C;YAgBgC;AAC1B,mBAAS;AACT,2BAAiB;AACjB,yCAA+B;AAEnC,iBAAiB,AAAM,KAAD,SAAO,QAAC,QAAS,AAAK,IAAD,KAAI;eAAtC;AACP,sBAAI,AAAK,oBAAe,IAAI,MAAK,4BAA4B;AAGvD,uBAAS,aAAO,IAAI;AACpB,qBAAO,AAAO,MAAD;AAE6C,UAD9D,AAAO,MAAD,QACF,AAAK,IAAD,aAAW,GAAG,AAAM,sBAAW,IAAI,cAAa;AACxD,wBAAI,AAAM,0BAAe,AAAO,MAAD;AACS,YAAtC,AAAO,AAAU,MAAX,mBAAY,GAAK,AAAM;;AAEjB,UAAd,AAAO,MAAD;AACyB,UAA/B,AAAO,MAAD,OAAc,cAAP,MAAM;cACd,eAAI,AAAK,gBAAW,IAAI;AAC4B,UAAzD,+BAA+B,WAAC,AAAK,oBAAe,IAAI;AAE1C,UAAd,AAAO,MAAD;AACY,UAAlB,AAAO,MAAD,OAAO,IAAI;;AAEjB,cAAI,AAAK,IAAD,2BAAe,AAAM,6BAAkB,AAAI,IAAA,QAAC;gBAE7C,eAAI,cAAc;AACA,YAAvB,AAAO,MAAD,OAAO;;AAGG,UAAlB,AAAO,MAAD,OAAO,IAAI;;AAKwB,QAA3C,iBAAiB,AAAM,0BAAe,IAAI;;AAG5C,YAAO,AAAO,OAAD;IACf;UAoB0B;AACpB,mBAAS,aAAO,IAAI;AAE6C,MAArE,AAAO,MAAD,SAAS,AAAO,AAAM,AAAiC,MAAxC,eAAa,QAAC,QAAS,AAAK,IAAD;AAChD,UAAI,AAAO,MAAD,SAAS,MAAM,AAAO,AAAM,AAAsB,MAA7B,gBAAc,GAAG,AAAO,MAAD;AACtD,YAAO,AAAO,OAAD;IACf;iBAc2B;AACJ,MAArB,OAAO,cAAS,IAAI;AACpB,uBAAI,YAAe,oCAAY,0BAAoB,IAAI,IAAG,MAAO,KAAI;AAEjE,mBAAS,aAAO,IAAI;AACY,MAApC,AAAO,MAAD,0BAAyB;AAC/B,YAAc,eAAP,MAAM;IACf;cAUwB;AACtB,qBAAK,0BAAoB,IAAI,IAAG,MAAO,KAAI;AAEvC,mBAAS,aAAO,IAAI;AACN,MAAlB,AAAO,MAAD;AACN,YAAc,eAAP,MAAM;IACf;0BAGgC;AAC1B,kBAAQ;AACR,sBAAY,AAAK,IAAD;AAChB;AACA;AAKA,iBAAO,AAAM,sBAAW,IAAI;AAChC,UAAI,IAAI,KAAI;AACE,QAAZ,QAAQ,IAAI;AACU,QAAtB;AAIA,YAAU,YAAN,YAAe;AACjB,mBAAS,IAAI,GAAG,AAAE,CAAD,gBAAG,IAAI,GAAE,IAAA,AAAC,CAAA;AACzB,gBAAI,AAAS,AAAI,SAAJ,QAAC,CAAC,UAAkB,MAAO;;;;AAK9C,eAAS,IAAI,KAAK,EAAI,aAAF,CAAC,iBAAG,AAAU,SAAD,YAAS,IAAC,aAAD,CAAC;AACrC,uBAAW,AAAS,SAAA,QAAC,CAAC;AAC1B,sBAAI,AAAM,uBAAY,QAAQ;AAE5B,cAAU,YAAN,YAAe,yBAAW,AAAS,QAAD,SAAiB,MAAO;AAG9D,cAAI,QAAQ,IAAI,kBAAQ,AAAM,uBAAY,QAAQ,IAAG,MAAO;AAM5D,cAAI,AAAS,QAAD,YACP,AAAiB,gBAAD,IAAI,QACjB,AAAiB,gBAAD,qBAChB,AAAM,uBAAY,gBAAgB;AACxC,kBAAO;;;AAIgB,QAA3B,mBAAmB,QAAQ;AACR,QAAnB,WAAW,QAAQ;;AAIrB,UAAI,AAAS,QAAD,IAAI,MAAM,MAAO;AAG7B,oBAAI,AAAM,uBAAY,QAAQ,IAAG,MAAO;AAGxC,UAAI,AAAS,QAAD,YACP,AAAiB,gBAAD,IAAI,kBACjB,AAAM,uBAAY,gBAAgB,MAClC,AAAiB,gBAAD;AACtB,cAAO;;AAGT,YAAO;IACT;aAkCuB;;UAAc;AAEnC,UAAI,AAAK,IAAD,IAAI,kBAAQ,AAAK,gBAAW,IAAI,IAAG,MAAO,AAAK,gBAAU,IAAI;AAEvB,MAA9C,OAAO,AAAK,IAAD,IAAI,OAAO,eAAU,cAAS,IAAI;AAG7C,oBAAI,AAAK,gBAAW,IAAI,gBAAK,AAAK,gBAAW,IAAI;AAC/C,cAAO,AAAK,gBAAU,IAAI;;AAK5B,oBAAI,AAAK,gBAAW,IAAI,gBAAK,AAAK,oBAAe,IAAI;AACzB,QAA1B,OAAO,AAAK,cAAS,IAAI;;AAK3B,oBAAI,AAAK,gBAAW,IAAI,gBAAK,AAAK,gBAAW,IAAI;AACsB,QAArE,WAAM,qCAAc,AAAgD,yCAApB,IAAI,4BAAS,IAAI;;AAG/D,6BAAa,aAAO,IAAI,GAAG;AAC3B,8BAAa,aAAO,IAAI,GAAG;AAE/B,oBAAI,AAAW,AAAM,UAAP,wBAAqB,AAAW,AAAK,AAAI,UAAV,cAAO,OAAM;AACxD,cAAkB,eAAX,UAAU;;AAOnB,UAAI,AAAW,UAAD,SAAS,AAAW,UAAD,UAC3B,AAAW,AAAK,UAAN,SAAS,QAAQ,AAAW,AAAK,UAAN,SAAS,mBAC3C,AAAM,sBAAW,AAAW,UAAD,OAAO,AAAW,UAAD;AACnD,cAAkB,eAAX,UAAU;;AAInB,uBAAO,AAAW,AAAM,UAAP,kCACb,AAAW,AAAM,UAAP,kCACV,AAAM,sBAAW,AAAW,AAAK,UAAN,cAAO,IAAI,AAAW,AAAK,UAAN,cAAO;AAC7B,QAA5B,AAAW,AAAM,UAAP,kBAAgB;AACO,QAAjC,AAAW,AAAW,UAAZ,uBAAqB;AACH,QAA5B,AAAW,AAAM,UAAP,kBAAgB;AACO,QAAjC,AAAW,AAAW,UAAZ,uBAAqB;;AAMjC,oBAAI,AAAW,AAAM,UAAP,wBAAqB,AAAW,AAAK,AAAI,UAAV,cAAO,OAAM;AACa,QAArE,WAAM,qCAAc,AAAgD,yCAApB,IAAI,4BAAS,IAAI;;AAEM,MAAzE,AAAW,AAAM,UAAP,mBAAiB,GAAQ,sBAAO,AAAW,AAAM,UAAP,iBAAe;AACtC,MAA7B,AAAW,AAAU,UAAX,mBAAY,GAAK;AAE6C,MADxE,AAAW,AACN,UADK,wBACK,GAAQ,sBAAO,AAAW,AAAM,UAAP,iBAAe,AAAM;AAG7D,oBAAI,AAAW,AAAM,UAAP,mBAAgB,MAAO;AAIrC,UAA4B,aAAxB,AAAW,AAAM,UAAP,mBAAgB,KAAK,AAAW,AAAM,AAAK,UAAZ,kBAAe;AAC7B,QAA7B,AAAW,AAAM,UAAP;AAIC,eAHX,AAAW,UAAD;QACN;QACA;QACA,WAAI;;;AAIU,MAApB,AAAW,UAAD,QAAQ;AACmB,MAArC,AAAW,UAAD;AAEV,YAAkB,eAAX,UAAU;IACnB;aAQqB,QAAe;AAChC,YAAiC,aAAjC,wBAAkB,MAAM,EAAE,KAAK,GAAmB;IAAM;WAOzC,OAAc;AAC7B,YAAgC,aAAhC,wBAAkB,KAAK,EAAE,KAAK,GAAmB;IAAK;wBAMnB,QAAe;AAIhD,6BAAmB,gBAAW,MAAM;AACpC,4BAAkB,gBAAW,KAAK;AACtC,oBAAI,gBAAgB,gBAAK,eAAe;AACf,QAAvB,QAAQ,cAAS,KAAK;AACtB,sBAAI,AAAM,0BAAe,MAAM,IAAG,AAAyB,SAAhB,cAAS,MAAM;YACrD,eAAI,eAAe,gBAAK,gBAAgB;AACpB,QAAzB,SAAS,cAAS,MAAM;AACxB,sBAAI,AAAM,0BAAe,KAAK,IAAG,AAAuB,QAAf,cAAS,KAAK;YAClD,eAAI,eAAe,eAAI,gBAAgB;AACxC,kCAAsB,AAAM,0BAAe,KAAK;AAChD,mCAAuB,AAAM,0BAAe,MAAM;AAEtD,sBAAI,mBAAmB,gBAAK,oBAAoB;AACvB,UAAvB,QAAQ,cAAS,KAAK;cACjB,eAAI,oBAAoB,gBAAK,mBAAmB;AAC5B,UAAzB,SAAS,cAAS,MAAM;;;AAIxB,mBAAS,4BAAsB,MAAM,EAAE,KAAK;AAChD,uBAAI,MAAM,EAAkB,qCAAc,MAAO,OAAM;AAEhD;AACP;AAC+C,QAA7C,WAAW,AAAK,cAAS,KAAK,SAAQ,MAAM;;YACpB;AAAxB;AAGA,gBAAqB;;;;AAGvB,qBAAK,AAAK,gBAAW,QAAQ,IAAG,MAAqB;AACrD,UAAI,AAAS,QAAD,KAAI,KAAK,MAAqB;AAC1C,UAAI,AAAS,QAAD,KAAI,MAAM,MAAqB;AAC3C,YAAQ,AAAS,AAAO,AACU,SADlB,WAAW,KACnB,AAAS,QAAD,cAAY,mBACpB,AAAM,uBAAY,AAAS,QAAD,cAAY,OAC1B,kCACA;IACtB;4BAI2C,QAAe;;AAGxD,UAAI,AAAO,MAAD,KAAI,KAAK,AAAW,SAAF;AAExB,6BAAmB,AAAM,sBAAW,MAAM;AAC1C,4BAAkB,AAAM,sBAAW,KAAK;AAQ5C,UAAI,gBAAgB,IAAI,eAAe,EAAE,MAAqB;AAM9D,eAAS,IAAI,GAAG,AAAE,CAAD,gBAAG,gBAAgB,GAAE,IAAA,AAAC,CAAA;AACjC,6BAAiB,AAAO,MAAD,cAAY,CAAC;AACpC,4BAAgB,AAAM,KAAD,cAAY,CAAC;AACtC,uBAAK,AAAM,0BAAe,cAAc,EAAE,aAAa;AACrD,gBAAqB;;;AAOrB;AAGA;AAGA,wBAAc,gBAAgB;AAC9B,uBAAa,eAAe;AAChC,aAAmB,aAAZ,WAAW,IAAG,AAAO,MAAD,WAAsB,aAAX,UAAU,IAAG,AAAM,KAAD;AAClD,6BAAiB,AAAO,MAAD,cAAY,WAAW;AAC9C,4BAAgB,AAAM,KAAD,cAAY,UAAU;AAC/C,sBAAI,AAAM,0BAAe,cAAc,EAAE,aAAa;AACpD,wBAAI,AAAM,uBAAY,cAAc;AACD,YAAjC,sBAAsB,WAAW;;AAGN,UAA7B,eAAe,cAAc;AAChB,UAAb,cAAW,aAAX,WAAW;AACC,UAAZ,aAAU,aAAV,UAAU;AACV;;AAIF,sBAAI,AAAM,uBAAY,cAAc,gBAChC,AAAM,uBAAY,YAAY;AACC,UAAjC,sBAAsB,WAAW;AACpB,UAAb,cAAW,aAAX,WAAW;AACX;cACK,eAAI,AAAM,uBAAY,aAAa,gBACtC,AAAM,uBAAY,YAAY;AACpB,UAAZ,aAAU,aAAV,UAAU;AACV;;AASF,YAAI,AAAe,cAAD,qBAAoB,AAAM,uBAAY,YAAY;AACrD,UAAb,cAAW,aAAX,WAAW;AAIX,cAAI,AAAY,WAAD,KAAI,AAAO,MAAD,SAAS;AACa,UAA/C,iBAAiB,AAAO,MAAD,cAAY,WAAW;AAG9C,wBAAI,AAAM,uBAAY,cAAc;AACD,YAAjC,sBAAsB,WAAW;AACpB,YAAb,cAAW,aAAX,WAAW;AACX;;AAKF,cAAI,AAAe,cAAD;AACH,YAAb,cAAW,aAAX,WAAW;AACX,gBAAI,AAAY,WAAD,KAAI,AAAO,MAAD,qBACrB,AAAM,uBAAY,AAAO,MAAD,cAAY,WAAW;AACjD,oBAAqB;;;;AAU3B,YAAI,AAAc,aAAD,qBAAoB,AAAM,uBAAY,YAAY;AACrD,UAAZ,aAAU,aAAV,UAAU;AACV,cAAI,AAAW,UAAD,KAAI,AAAM,KAAD,SAAS;AACY,UAA5C,gBAAgB,AAAM,KAAD,cAAY,UAAU;AAE3C,wBAAI,AAAM,uBAAY,aAAa;AACrB,YAAZ,aAAU,aAAV,UAAU;AACV;;AAGF,cAAI,AAAc,aAAD;AACH,YAAZ,aAAU,aAAV,UAAU;AACV,gBAAI,AAAW,UAAD,KAAI,AAAM,KAAD,qBACnB,AAAM,uBAAY,AAAM,KAAD,cAAY,UAAU;AAC/C,oBAAqB;;;;AASvB,6BAAiB,qBAAe,KAAK,EAAE,UAAU;AACrD,yBAAI,cAAc,EAAmB;AACnC,gBAAqB;;AAGnB,8BAAkB,qBAAe,MAAM,EAAE,WAAW;AACxD,yBAAI,eAAe,EAAmB;AACpC,gBAAqB;;AAGvB,cAAqB;;AASvB,UAAI,AAAW,UAAD,KAAI,AAAM,KAAD;AACrB,YAAI,AAAY,WAAD,KAAI,AAAO,MAAD,qBACrB,AAAM,uBAAY,AAAO,MAAD,cAAY,WAAW;AAChB,UAAjC,sBAAsB,WAAW;;AAEwB,UAAzD,AAAoB,mBAAD,IAAC,OAApB,sBAAwB,mBAAS,GAAoB,aAAjB,gBAAgB,IAAG,KAAnC;;AAGlB,wBACA,qBAAe,MAAM,GAAsB,KAApB,mBAAmB,QAAnB,OAAwC,aAAjB,gBAAgB,IAAG;AACrE,YAAc,YAAV,SAAS,EAAmB,gCAAQ,MAAqB;AAC7D,cAAiB,aAAV,SAAS,EAAmB,oCACf,qCACA;;AAMlB,sBAAY,qBAAe,KAAK,EAAE,UAAU;AAShD,UAAc,YAAV,SAAS,EAAmB,gCAAQ,MAAqB;AAQ7D,UAAc,YAAV,SAAS,EAAmB;AAC9B,cAAqB;;AASvB,YAAwD,WAAhD,AAAM,uBAAY,AAAM,KAAD,cAAY,UAAU,iBAC7C,AAAM,uBAAY,YAAY,KAClB,+BACA;IACtB;qBAeqC,MAAU;AACzC,kBAAQ;AACR,wBAAc;AACd,cAAI,KAAK;AACb,aAAS,aAAF,CAAC,IAAG,AAAK,IAAD;AAEb,eAAS,aAAF,CAAC,IAAG,AAAK,IAAD,qBAAW,AAAM,uBAAY,AAAK,IAAD,cAAY,CAAC;AACxD,UAAH,IAAC,aAAD,CAAC;;AAIH,YAAI,AAAE,CAAD,KAAI,AAAK,IAAD,SAAS;AAGlB,oBAAQ,CAAC;AACb,eAAS,aAAF,CAAC,IAAG,AAAK,IAAD,sBAAY,AAAM,uBAAY,AAAK,IAAD,cAAY,CAAC;AACzD,UAAH,IAAC,aAAD,CAAC;;AAIH,YAAM,AAAQ,aAAV,CAAC,iBAAG,KAAK,MAAI,KAAK,AAAK,AAAkB,IAAnB,cAAY,KAAK;cAEpC,KAAM,AAAQ,aAAV,CAAC,iBAAG,KAAK,MAAI,KACpB,AAAK,AAAkB,IAAnB,cAAY,KAAK,YACrB,AAAK,AAAsB,IAAvB,cAAkB,aAAN,KAAK,IAAG;AAEnB,UAAP,QAAA,AAAK,KAAA;AAGL,cAAI,AAAM,KAAD,GAAG,GAAG;AAIf,cAAI,AAAM,KAAD,KAAI,GAAG,AAAkB,cAAJ;;AAGvB,UAAP,QAAA,AAAK,KAAA;;AAIP,YAAI,AAAE,CAAD,KAAI,AAAK,IAAD,SAAS;AAGnB,QAAH,IAAC,aAAD,CAAC;;AAGH,UAAI,AAAM,KAAD,GAAG,GAAG,MAAsB;AACrC,UAAI,AAAM,KAAD,KAAI,GAAG,MAAsB;AACtC,UAAI,WAAW,EAAE,MAAsB;AACvC,YAAsB;IACxB;SAMgB;AAGO,MAArB,OAAO,cAAS,IAAI;AAEhB,mBAAS,gBAAU,IAAI;AAC3B,UAAI,MAAM,IAAI,MAAM,MAAO,OAAM;AAE7B,mBAAS,aAAO,IAAI;AACN,MAAlB,AAAO,MAAD;AACN,YAAO,iBAAiB,cAAP,MAAM;IACzB;gBAMqB;AACf,iBAAO;AACP,sBAAY;AACZ,yBAAe;AACnB,eAAS,IAAI,GAAG,AAAE,CAAD,GAAG,AAAK,IAAD,SAAS,IAAA,AAAC,CAAA;AAC5B,uBAAW,AAAM,gCAAqB,AAAK,IAAD,cAAY,CAAC;AAK3D,sBAAI,AAAM,uBAAY,QAAQ;AACT,UAAnB,eAAe;AACf;;AAGF,YAAI,AAAS,QAAD,WAAoB,YAAY;AAQ1C,cAAI,AAAE,AAAI,CAAL,GAAG,MAAK,AAAK,IAAD,SAAS;AAEtB,qBAAO,AAAK,IAAD,cAAY,AAAE,CAAD,GAAG;AAI/B,wBAAI,AAAM,uBAAY,IAAI,IAAG;AAM7B,eAAK,SAAS,IACV,AAAK,IAAD,YACH,AAAE,AAAI,CAAL,GAAG,MAAK,AAAK,IAAD,qBACV,AAAM,uBAAY,AAAK,IAAD,cAAY,AAAE,CAAD,GAAG;AAC5C,kBAAO;;;AAKM,QAAjB,OAAA,AAAK,IAAD,GAAI;AACE,QAAV,OAAA,AAAK,IAAD,GAAI;AACQ,QAAhB,OAAK,CAAL,IAAI,gBAAI,QAAQ;AACI,QAApB,eAAe;AACE,QAAjB,YAAY;;AAEd,YAAO,KAAI;IACb;qBAK+B;AACzB,mBAAS,aAAO,IAAI;AAExB,eAAS,IAAwB,aAApB,AAAO,AAAM,MAAP,mBAAgB,GAAG,AAAE,CAAD,IAAI,GAAG,IAAA,AAAC,CAAA;AAC7C,YAAI,AAAO,AAAK,AAAI,MAAV,cAAO,CAAC;AACiC,UAAjD,AAAO,AAAK,MAAN,cAAO,CAAC,EAAI,AAAO,MAAD;AACxB;;;AAIJ,YAAc,eAAP,MAAM;IACf;iBAa2B,MAAa;AACpC,YAAuB,cAAvB,sBAAiB,IAAI,kBAAI,SAAS;;YAsBvB;AAAQ,YAAA,AAAM,wBAAY,kBAAU,GAAG;IAAE;UAkBvC;AACf,oBAAI,gBAAW,IAAI;AACjB,cAAO,AAAM,8BAAkB,IAAI;;AAEnC,cAAO,AAAM,8BAAkB,UAAK,cAAS,IAAI;;IAErD;cA2BiB;AACX,qBAAW,kBAAU,GAAG;AAC5B,UAAI,AAAS,AAAO,QAAR,YAAW,UAAgB,YAAN,YAAe;AAC9C,cAAgB,eAAT,QAAQ;YACV,KAAI,AAAS,QAAD,YAAW,UAC1B,AAAS,QAAD,YAAW,mBACnB,YAAe;AACjB,cAAgB,eAAT,QAAQ;;AAGb,iBAAO,eAAU,aAAQ,QAAQ;AACjC,gBAAM,cAAS,IAAI;AAKvB,YAAyB,cAAlB,AAAW,WAAL,GAAG,2BAAW,AAAY,WAAN,IAAI,cAAW,IAAI,GAAG,GAAG;IAC5D;aAEyB;AAAS,YAAW,8BAAM,IAAI,EAAE;IAAM;;;IA9+BnD,gBAAiB,gCAAT;IACL,kBAAE;;EAAI;iCAEN,OAAY;IAAZ;IAAY;;EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmiCvB;;;;;;;AAIQ;IAAI;;;IAFC;;EAAK;;;;;;;;;MAflB,gCAAS;;;MAIT,6BAAM;;;MAIN,kCAAW;;;MAGX,gCAAS;;;;;;;;;;IA8BT;;;;;;;AAIQ;IAAI;;;IAFA;;EAAK;;;;;;;;;MAlBjB,4BAAM;;;MAKN,2BAAK;;;MAGL,+BAAS;;;MAMT,kCAAY;;;;;AAnmCC,UAAQ;EAAW;yCAuhCjC;AACZ,QAAQ,OAAJ,GAAG,cAAY,MAAW,gBAAM,GAAG;AACvC,QAAQ,YAAJ,GAAG,GAAS,MAAO,IAAG;AAC8C,IAAxE,WAAoB,6BAAM,GAAG,EAAE,OAAO;EACxC;uDAI6B,QAAqB;AAChD,aAAS,IAAI,GAAG,AAAE,CAAD,gBAAG,AAAK,IAAD,YAAS,IAAA,AAAC,CAAA;AAEhC,UAAI,AAAI,AAAI,IAAJ,QAAC,CAAC,KAAK,QAAQ,AAAI,IAAA,QAAC,AAAE,CAAD,GAAG,MAAM,MAAM;AAExC;AACJ,oBAAK,UAAU,AAAK,IAAD,WAAiB,aAAR,OAAO,KAAI,GAAG,UAAO,aAAP,OAAO;AAC/C,YAAI,AAAI,IAAA,QAAS,aAAR,OAAO,IAAG,MAAM,MAAM;;AAI7B,oBAAU;AACW,MAAzB,AAAQ,OAAD,OAAiB,SAAR,MAAM;AAIN,MAHhB,AAAQ,OAAD,OAAO,AACT,AACA,AACA,IAHa,QACR,OAAO,qBACR,QAAC,OAAQ,AAAI,GAAD,IAAI,OAAO,SAAS,AAAQ,gBAAL,GAAG,oCACrC;AACsD,MAAhE,AAAQ,OAAD,OAAO,AAAiD,sBAAtC,AAAE,CAAD,GAAG,KAAE,kCAAqB,CAAC;AACd,MAAvC,WAAM,2BAAc,AAAQ,OAAD;;EAE/B;qCC37BuB,OACP,cACD,cACA,cACA,cACA,cACA;AACX,UAAA,AAAQ,wBAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;EAAC;qCAU9C;AAAS,UAAA,AAAQ,wBAAS,IAAI;EAAC;qEAUf;AACnC,UAAA,AAAQ,wCAAyB,IAAI;EAAC;mCAqBpB;AAAS,UAAA,AAAQ,uBAAQ,IAAI;EAAC;uCAe5B;AAAS,UAAA,AAAQ,yBAAU,IAAI;EAAC;yCAkB/B;AAAS,UAAA,AAAQ,0BAAW,IAAI;EAAC;yCAcnC;AAAS,UAAA,AAAQ,0BAAW,IAAI;EAAC;yCAMjC;AAAS,UAAA,AAAQ,0BAAW,IAAI;EAAC;iDAU7B;AAAS,UAAA,AAAQ,8BAAe,IAAI;EAAC;6BAe7C,OACH,cACD,cACA,cACA,cACA,cACA,cACA;AACX,UAAA,AAAQ,oBAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;EAAC;mCAiBxC;AAAU,UAAA,AAAQ,uBAAQ,KAAK;EAAC;+BAuBtC;AAAS,UAAA,AAAQ,qBAAM,IAAI;EAAC;6CAc3B;AAAS,UAAA,AAAQ,4BAAa,IAAI;EAAC;uCAUtC;AAAS,UAAA,AAAQ,yBAAU,IAAI;EAAC;qCA4BjC;QAAc;AACjC,UAAA,AAAQ,wBAAS,IAAI,SAAQ,IAAI;EAAC;qCAOjB,QAAe;AAAU,UAAA,AAAQ,wBAAS,MAAM,EAAE,KAAK;EAAC;iCAO1D,OAAc;AAAU,UAAA,AAAQ,sBAAO,KAAK,EAAE,KAAK;EAAC;6BAOvD;AAAS,UAAA,AAAQ,oBAAK,IAAI;EAAC;qDAKZ;AAAS,UAAA,AAAQ,gCAAiB,IAAI;EAAC;6CAW3C,MAAa;AACpC,UAAA,AAAQ,4BAAa,IAAI,EAAE,SAAS;EAAC;mCAoB1B;AAAQ,UAAA,AAAQ,uBAAQ,GAAG;EAAC;+BAsB1B;AAAS,UAAA,AAAQ,qBAAM,IAAI;EAAC;uCAsB5B;AAAQ,UAAA,AAAQ,yBAAU,GAAG;EAAC;;;AAlY5B,YAAA,AAAQ;IAAK;;AAU1B;AACJ;AACgB,QAAd,MAAU;;;AACV;AACA,cAAI,kBAAY,MAAM,MAAO;AACtB,UAAP;;;;AAKF,UAAQ,YAAJ,GAAG,EAAI,wBAAiB,MAAO;AACd,MAArB,wBAAkB,GAAG;AAErB,UAAmB,YAAT,uBAAkB;AACY,QAAtC,iBAA4B,cAAjB,AAAI,GAAD,SAAS;AACvB,cAAO;;AAEH,mBAAO,AAAI,GAAD;AAGV,wBAAY,AAAK,AAAO,IAAR,UAAU;AAC9B,cAAO,AAAI,AAAY,AAAO,IAAnB,QAAC,SAAS,MAAK,OAAO,AAAI,AAAY,IAAZ,QAAC,SAAS,MAAK;AACW,QAA/D,iBAAW,AAAU,SAAD,KAAI,IAAI,IAAI,GAAG,AAAK,IAAD,aAAW,GAAG,SAAS;AAC9D,cAAO;;IAEX;;AAewB,YAAA,AAAQ;IAAS;;;MAvE3B,WAAK;YAAG,6BAAqB;;MAG7B,aAAO;YAAG,6BAAqB;;MAM/B,SAAG;YAAG,6BAAqB;;MAO3B,aAAO;YAAG;;MA6CpB,qBAAe;;;;MAMZ,cAAQ","file":"../../../../../../../../../../../packages/path/src/path_set.dart.lib.js"}{"version":3,"sourceRoot":"","sources":["path_exception.dart"],"names":[],"mappings":";;;;;;;;;IAOS;;;;;;;AAIc,YAAA,AAAyB,8BAAR;IAAQ;;;IAF3B;;EAAQ","file":"../../../../../../../../../../../packages/path/src/path_exception.dart.lib.js"}{"version":3,"sourceRoot":"","sources":["characters.dart"],"names":[],"mappings":";;;;;;;;MAKM,eAAI;;;MACJ,gBAAK;;;MACL,iBAAM;;;MACN,gBAAK;;;MACL,eAAI;;;MACJ,eAAI;;;MACJ,gBAAK;;;MACL,iBAAM;;;MACN,iBAAM;;;MACN,iBAAM;;;MACN,iBAAM;;;MACN,oBAAS","file":"../../../../../../../../../../../packages/path/src/characters.dart.lib.js"}{"version":3,"sourceRoot":"","sources":["utils.dart"],"names":[],"mappings":";;;;;;;;6CAQsB;AAClB,UAAM,AAAyC,cAA9C,IAAI,WAAyB,aAAL,IAAI,WACvB,aAAL,IAAI,WAAyB,aAAL,IAAI;EAAiB;uCAG/B;AAAS,UAAK,AAAc,cAAnB,IAAI,WAAuB,aAAL,IAAI;EAAc;+CAI1C,MAAU;AAClC,QAAI,AAAK,AAAO,IAAR,UAAgB,aAAN,KAAK,IAAG,GAAG,MAAO;AACpC,mBAAK,mBAAa,AAAK,IAAD,cAAY,KAAK,KAAI,MAAO;AAClD,QAAI,AAAK,IAAD,cAAkB,aAAN,KAAK,IAAG,WAAmB,MAAO;AACtD,QAAI,AAAK,AAAO,IAAR,YAAiB,aAAN,KAAK,IAAG,GAAG,MAAO;AACrC,UAAO,AAAK,AAAsB,KAAvB,cAAkB,aAAN,KAAK,IAAG;EACjC","file":"../../../../../../../../../../../packages/path/src/utils.dart.lib.js"}
\ No newline at end of file
diff --git a/dwds/test/integration/fixtures/project.dart b/dwds/test/integration/fixtures/project.dart
deleted file mode 100644
index 3322800..0000000
--- a/dwds/test/integration/fixtures/project.dart
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds_test_common/utilities.dart';
-import 'package:io/io.dart';
-import 'package:path/path.dart' as p;
-import 'package:yaml/yaml.dart';
-
-enum IndexBaseMode { noBase, base }
-
-/// Project definitions from projects defined in webdev/fixtures.
-class TestProject {
-  final String packageName;
-  final String packageDirectory;
-  final String webAssetsPath;
-  final String dartEntryFileName;
-  final String htmlEntryFileName;
-
-  late Directory _fixturesCopy;
-
-  /// The top level directory in which we run the test server, e.g.
-  /// "/tmp/_test".
-  String get absolutePackageDirectory =>
-      p.join(_fixturesCopy.absolute.path, packageDirectory);
-
-  /// The directory to build and serve, e.g. "example".
-  String get directoryToServe => p.split(webAssetsPath).first;
-
-  /// The path to the HTML file to serve, relative to the [directoryToServe],
-  /// e.g. "hello_world/index.html".
-  String get filePathToServe {
-    final pathParts = p
-        .split(webAssetsPath)
-        .where((pathPart) => pathPart != directoryToServe);
-    return webCompatiblePath([...pathParts, htmlEntryFileName]);
-  }
-
-  /// The path to the Dart entry file, e.g,
-  /// "/tmp/_test/example/hello_world/main.dart":
-  String get dartEntryFilePath => p.joinAll([
-    _fixturesCopy.absolute.path,
-    packageDirectory,
-    webAssetsPath,
-    dartEntryFileName,
-  ]);
-
-  /// The URI for the package_config.json is located in:
-  /// `<project directory>/.dart_tool/package_config`
-  Uri get packageConfigFile => p.toUri(
-    p.join(absolutePackageDirectory, '.dart_tool', 'package_config.json'),
-  );
-
-  /// The package URI of the Dart entry file, e.g,
-  /// "org-dartlang-app:example/hello_world/main.dart":
-  Uri get dartEntryFilePackageUri => Uri.parse(
-    'org-dartlang-app:///${p.join(webAssetsPath, dartEntryFileName)}',
-  );
-
-  TestProject.testPackage({IndexBaseMode baseMode = IndexBaseMode.noBase})
-    : this._(
-        packageName: '_test_package',
-        packageDirectory: '_test_package',
-        webAssetsPath: 'web',
-        dartEntryFileName: 'main.dart',
-        htmlEntryFileName: baseMode == IndexBaseMode.base
-            ? 'base_index.html'
-            : 'index.html',
-      );
-
-  static final testCircular1 = TestProject._(
-    packageName: '_test_circular1',
-    packageDirectory: '_test_circular1',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  TestProject.testCircular2({IndexBaseMode baseMode = IndexBaseMode.noBase})
-    : this._(
-        packageName: '_test_circular2',
-        packageDirectory: '_test_circular2',
-        webAssetsPath: 'web',
-        dartEntryFileName: 'main.dart',
-        htmlEntryFileName: baseMode == IndexBaseMode.base
-            ? 'base_index.html'
-            : 'index.html',
-      );
-
-  TestProject.testParts({IndexBaseMode baseMode = IndexBaseMode.noBase})
-    : this._(
-        packageName: '_test_parts',
-        packageDirectory: '_test_parts',
-        webAssetsPath: 'web',
-        dartEntryFileName: 'main.dart',
-        htmlEntryFileName: baseMode == IndexBaseMode.base
-            ? 'base_index.html'
-            : 'index.html',
-      );
-
-  static final test = TestProject._(
-    packageName: '_test',
-    packageDirectory: '_test',
-    webAssetsPath: webCompatiblePath(['example', 'hello_world']),
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testScopes = TestProject._(
-    packageName: '_test',
-    packageDirectory: '_test',
-    webAssetsPath: webCompatiblePath(['example', 'scopes']),
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'scopes.html',
-  );
-
-  static final testAppendBody = TestProject._(
-    packageName: '_test',
-    packageDirectory: '_test',
-    webAssetsPath: webCompatiblePath(['example', 'append_body']),
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testExperiment = TestProject._(
-    packageName: '_experiment',
-    packageDirectory: '_experiment',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testDotShorthands = TestProject._(
-    packageName: '_test_dot_shorthands',
-    packageDirectory: '_test_dot_shorthands',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testHotRestart1 = TestProject._(
-    packageName: '_test_hot_restart1',
-    packageDirectory: '_test_hot_restart1',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  /// This series of hot restart tests is divided across multiple packages in
-  /// order to test correctness when only a subset of libraries are updated.
-  static final testHotRestart2 = TestProject._(
-    packageName: '_test_hot_restart2',
-    packageDirectory: '_test_hot_restart2',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testHotRestartBreakpoints = TestProject._(
-    packageName: '_test_hot_restart_breakpoints',
-    packageDirectory: '_test_hot_restart_breakpoints',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testHotReload = TestProject._(
-    packageName: '_test_hot_reload',
-    packageDirectory: '_test_hot_reload',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  static final testHotReloadBreakpoints = TestProject._(
-    packageName: '_test_hot_reload_breakpoints',
-    packageDirectory: '_test_hot_reload_breakpoints',
-    webAssetsPath: 'web',
-    dartEntryFileName: 'main.dart',
-    htmlEntryFileName: 'index.html',
-  );
-
-  TestProject._({
-    required this.packageName,
-    required this.packageDirectory,
-    required this.webAssetsPath,
-    required this.dartEntryFileName,
-    required this.htmlEntryFileName,
-  });
-
-  static Future<void> _copyPackageAndPathDependenciesIntoTempDirectory(
-    Directory tempDirectory,
-    String packageDirectory,
-    Set<String> copiedPackageDirectories,
-  ) async {
-    // There may be cycles in dependencies, so check that we already copied this
-    // package.
-    if (copiedPackageDirectories.contains(packageDirectory)) return;
-    final currentPath = absolutePath(pathFromFixtures: packageDirectory);
-    final newPath = p.join(tempDirectory.absolute.path, packageDirectory);
-    Directory(newPath).createSync();
-    copyPathSync(currentPath, newPath);
-    copiedPackageDirectories.add(packageDirectory);
-    final pubspec = loadYaml(
-      File(p.join(currentPath, 'pubspec.yaml')).readAsStringSync(),
-    ) as Map;
-    final dependencies = pubspec['dependencies'] as Map? ?? {};
-    for (final dependency in dependencies.values) {
-      if (dependency is Map && dependency.containsKey('path')) {
-        final dependencyDirectory = Directory(
-          p.normalize(p.join(currentPath, dependency['path'] as String)),
-        );
-        // It may be okay to do some more complicated copying here for path
-        // dependencies that aren't immediately under `fixtures`, but for now,
-        // only support those that are.
-        assert(
-          dependencyDirectory.parent.path == Directory(currentPath).parent.path,
-          'Path dependency of $packageDirectory: '
-          '${dependencyDirectory.path} is not an immediate directory in '
-          '`fixtures`.',
-        );
-        await _copyPackageAndPathDependenciesIntoTempDirectory(
-          tempDirectory,
-          p.basename(dependencyDirectory.path),
-          copiedPackageDirectories,
-        );
-      }
-    }
-
-    // Clean up the project.
-    // Called when we need to rebuild sdk and the app from previous test
-    // configurations.
-    await Process.run('dart', [
-      'run',
-      'build_runner',
-      'clean',
-    ], workingDirectory: newPath);
-  }
-
-  Future<void> setUp() async {
-    // Verify that the web assets path has no starting slash.
-    assert(!webAssetsPath.startsWith('/'));
-    // Copy the package into a temporary directory to allow editing of files if
-    // needed.
-    final systemTempDir = Directory(
-      // Resolve symbolic links as build_daemon tests rely on paths matching
-      // between the client and the daemon.
-      Directory.systemTemp.resolveSymbolicLinksSync(),
-    );
-    _fixturesCopy = systemTempDir.createTempSync();
-    await _copyPackageAndPathDependenciesIntoTempDirectory(
-      _fixturesCopy,
-      packageDirectory,
-      {},
-    );
-  }
-
-  /// Delete the copy of the project.
-  Future<void> tearDown() async {
-    try {
-      _fixturesCopy.deleteSync(recursive: true);
-    } on FileSystemException catch (_) {
-      // On Windows, the build daemon process might still be accessing the
-      // working directory, so try again with an exponential backoff.
-      var seconds = 1;
-      final maxAttempts = 3;
-      for (var attempt = 0; attempt < maxAttempts; attempt++) {
-        try {
-          _fixturesCopy.deleteSync(recursive: true);
-          break;
-        } on FileSystemException catch (_) {
-          await Future<void>.delayed(Duration(seconds: seconds));
-          seconds *= 2;
-        }
-      }
-    }
-  }
-
-  /// The path to the Dart specified file in the 'lib' directory, e.g,
-  /// "/tmp/_test/lib/library.dart":
-  String dartLibFilePath(String dartLibFileName) => p.joinAll([
-    _fixturesCopy.absolute.path,
-    packageDirectory,
-    'lib',
-    dartLibFileName,
-  ]);
-}
diff --git a/dwds/test/integration/fixtures/server.dart b/dwds/test/integration/fixtures/server.dart
deleted file mode 100644
index 29c455d..0000000
--- a/dwds/test/integration/fixtures/server.dart
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2019, 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.
-
-// @skip_package_deps_validation
-
-import 'dart:io';
-
-import 'package:build_daemon/data/build_status.dart' as daemon;
-import 'package:dwds/asset_reader.dart';
-import 'package:dwds/dart_web_debug_service.dart';
-import 'package:dwds/data/build_result.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/utilities/server.dart';
-import 'package:logging/logging.dart';
-import 'package:shelf/shelf.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-Logger _logger = Logger('TestServer');
-
-Handler _interceptFavicon(Handler handler) {
-  return (request) async {
-    if (request.url.pathSegments.isNotEmpty &&
-        request.url.pathSegments.last == 'favicon.ico') {
-      return Response.ok('');
-    }
-    return handler(request);
-  };
-}
-
-class TestServer {
-  final HttpServer _server;
-  final String target;
-  final Dwds dwds;
-  final Stream<BuildResult> buildResults;
-  final AssetReader assetReader;
-
-  TestServer._(
-    this.target,
-    this._server,
-    this.dwds,
-    this.buildResults,
-    this.assetReader,
-  );
-
-  String get host => _server.address.host;
-  int get port => _server.port;
-
-  Future<void> stop() async {
-    await dwds.stop();
-    await _server.close(force: true);
-  }
-
-  static Future<TestServer> start({
-    required DebugSettings debugSettings,
-    required AppMetadata appMetadata,
-    required Handler assetHandler,
-    required AssetReader assetReader,
-    required LoadStrategy strategy,
-    required String target,
-    required Stream<daemon.BuildResults> buildResults,
-    required Future<ChromeConnection> Function() chromeConnection,
-    int? port,
-    HttpServer? httpServer,
-  }) async {
-    var pipeline = const Pipeline();
-
-    pipeline = pipeline.addMiddleware(_interceptFavicon);
-
-    final filteredBuildResults = buildResults.asyncMap<BuildResult>((results) {
-      final result = results.results.firstWhere(
-        (result) => result.target == target,
-      );
-      switch (result.status) {
-        case daemon.BuildStatus.started:
-          return BuildResult(status: BuildStatus.started);
-        case daemon.BuildStatus.failed:
-          return BuildResult(status: BuildStatus.failed);
-        case daemon.BuildStatus.succeeded:
-          return BuildResult(status: BuildStatus.succeeded);
-        default:
-          break;
-      }
-      throw StateError('Unexpected Daemon build result: $result');
-    });
-
-    final toolConfiguration = ToolConfiguration(
-      loadStrategy: strategy,
-      debugSettings: debugSettings,
-      appMetadata: appMetadata,
-    );
-
-    final dwds = await Dwds.start(
-      assetReader: assetReader,
-      buildResults: filteredBuildResults,
-      chromeConnection: chromeConnection,
-      toolConfiguration: toolConfiguration,
-    );
-
-    final server = httpServer ?? await startHttpServer('localhost', port: port);
-    var cascade = Cascade();
-
-    cascade = cascade.add(dwds.handler).add(assetHandler);
-
-    serveHttpRequests(
-      server,
-      pipeline
-          .addMiddleware(_logRequests)
-          .addMiddleware(dwds.middleware)
-          .addHandler(cascade.handler),
-      (e, s) {
-        _logger.warning('Error handling requests', e, s);
-      },
-    );
-
-    return TestServer._(
-      target,
-      server,
-      dwds,
-      filteredBuildResults,
-      assetReader,
-    );
-  }
-
-  /// [Middleware] that logs all requests, inspired by [logRequests].
-  static Handler _logRequests(Handler innerHandler) {
-    return (Request request) async {
-      final watch = Stopwatch()..start();
-      try {
-        final response = await innerHandler(request);
-        final logFn = response.statusCode >= 500
-            ? _logger.warning
-            : _logger.finest;
-        final msg = _requestLabel(
-          response.statusCode,
-          request.requestedUri,
-          request.method,
-          watch.elapsed,
-        );
-        logFn(msg);
-        return response;
-      } catch (error, stackTrace) {
-        if (error is HijackException) rethrow;
-        final msg = _requestLabel(
-          500,
-          request.requestedUri,
-          request.method,
-          watch.elapsed,
-        );
-        _logger.severe(msg, error, stackTrace);
-        rethrow;
-      }
-    };
-  }
-
-  static String _requestLabel(
-    int statusCode,
-    Uri requestedUri,
-    String method,
-    Duration elapsedTime,
-  ) {
-    return '$elapsedTime '
-        '$method [$statusCode] '
-        '${requestedUri.path}${_formatQuery(requestedUri.query)}';
-  }
-
-  static String _formatQuery(String query) {
-    return query == '' ? '' : '?$query';
-  }
-}
diff --git a/dwds/test/integration/fixtures/utilities.dart b/dwds/test/integration/fixtures/utilities.dart
deleted file mode 100644
index 7ca7244..0000000
--- a/dwds/test/integration/fixtures/utilities.dart
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright (c) 2019, 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.
-
-// @skip_package_deps_validation
-
-import 'dart:io';
-
-import 'package:build_daemon/client.dart';
-import 'package:build_daemon/constants.dart';
-import 'package:build_daemon/data/server_log.dart';
-import 'package:dds/devtools_server.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/loaders/strategy.dart';
-import 'package:dwds/src/servers/devtools.dart';
-import 'package:dwds/src/services/expression_compiler.dart';
-
-import 'context.dart';
-import 'fakes.dart';
-
-/// Connects to the `build_runner` daemon.
-Future<BuildDaemonClient> connectClient(
-  String dartPath,
-  String workingDirectory,
-  List<String> options,
-  void Function(ServerLog) logHandler,
-) => BuildDaemonClient.connect(workingDirectory, [
-  dartPath,
-  'run',
-  'build_runner',
-  'daemon',
-  ...options,
-], logHandler: logHandler);
-
-/// Returns the port of the daemon asset server.
-int daemonPort(String workingDirectory) {
-  final portFile = File(_assetServerPortFilePath(workingDirectory));
-  if (!portFile.existsSync()) {
-    throw Exception('Unable to read daemon asset port file.');
-  }
-  return int.parse(portFile.readAsStringSync());
-}
-
-String _assetServerPortFilePath(String workingDirectory) =>
-    '${daemonWorkspace(workingDirectory)}/.asset_server_port';
-
-/// Retries a callback function with a delay until the result is the
-/// [expectedResult] (if provided) or is not null.
-Future<T> retryFn<T>(
-  T Function() callback, {
-  int retryCount = 3,
-  int delayInMs = 1000,
-  String failureMessage = 'Function did not succeed after retries.',
-  T? expectedResult,
-}) async {
-  if (retryCount == 0) {
-    throw Exception(failureMessage);
-  }
-
-  await Future<void>.delayed(Duration(milliseconds: delayInMs));
-  try {
-    final result = callback();
-    if (expectedResult != null && result == expectedResult) return result;
-    if (expectedResult == null && result != null) return result;
-  } catch (_) {
-    // Ignore any exceptions.
-  }
-
-  return retryFn<T>(
-    callback,
-    retryCount: retryCount - 1,
-    delayInMs: delayInMs,
-    failureMessage: failureMessage,
-  );
-}
-
-/// Retries an asynchronous callback function with a delay until the result is
-/// non-null.
-Future<T> retryFnAsync<T>(
-  Future<T> Function() callback, {
-  int retryCount = 3,
-  int delayInMs = 1000,
-  String failureMessage = 'Function did not succeed after retries.',
-}) async {
-  if (retryCount == 0) {
-    throw Exception(failureMessage);
-  }
-
-  await Future<void>.delayed(Duration(milliseconds: delayInMs));
-  try {
-    final result = await callback();
-    if (result != null) return result;
-  } catch (_) {
-    // Ignore any exceptions.
-  }
-
-  return retryFnAsync<T>(
-    callback,
-    retryCount: retryCount - 1,
-    delayInMs: delayInMs,
-    failureMessage: failureMessage,
-  );
-}
-
-class TestDebugSettings extends DebugSettings {
-  TestDebugSettings.withDevToolsLaunch(
-    TestContext context, {
-    bool serveFromDds = false,
-  }) : super(
-         // ignore: deprecated_member_use_from_same_package
-         devToolsLauncher: serveFromDds
-             ? null
-             : (hostname) async {
-                 final server = await DevToolsServer().serveDevTools(
-                   hostname: hostname,
-                   enableStdinCommands: false,
-                   customDevToolsPath: context
-                       .sdkConfigurationProvider
-                       .sdkLayout
-                       .devToolsDirectory,
-                 );
-                 if (server == null) {
-                   throw StateError('DevTools server could not be started.');
-                 }
-                 return DevTools(server.address.host, server.port, server);
-               },
-         ddsConfiguration: DartDevelopmentServiceConfiguration(
-           serveDevTools: serveFromDds,
-         ),
-       );
-
-  const TestDebugSettings.noDevToolsLaunch()
-    : super(enableDevToolsLaunch: false);
-
-  TestDebugSettings._({
-    required super.enableDebugging,
-    required super.enableDebugExtension,
-    required super.useSseForDebugBackend,
-    required super.useSseForDebugProxy,
-    required super.useSseForInjectedClient,
-    required super.spawnDds,
-    required super.ddsPort,
-    required super.enableDevToolsLaunch,
-    required super.launchDevToolsInNewWindow,
-    required super.emitDebugEvents,
-    required super.devToolsLauncher,
-    required super.expressionCompiler,
-    required super.urlEncoder,
-    required super.ddsConfiguration,
-  });
-
-  TestDebugSettings copyWith({
-    bool? enableDebugging,
-    bool? enableDebugExtension,
-    bool? useSse,
-    bool? spawnDds,
-    int? ddsPort,
-    bool? enableDevToolsLaunch,
-    bool? launchDevToolsInNewWindow,
-    bool? emitDebugEvents,
-    DevToolsLauncher? devToolsLauncher,
-    ExpressionCompiler? expressionCompiler,
-    UrlEncoder? urlEncoder,
-    DartDevelopmentServiceConfiguration? ddsConfiguration,
-  }) {
-    return TestDebugSettings._(
-      enableDebugging: enableDebugging ?? this.enableDebugging,
-      enableDebugExtension: enableDebugExtension ?? this.enableDebugExtension,
-      useSseForDebugProxy: useSse ?? useSseForDebugProxy,
-      useSseForDebugBackend: useSse ?? useSseForDebugBackend,
-      useSseForInjectedClient: useSse ?? useSseForInjectedClient,
-      // ignore: deprecated_member_use_from_same_package
-      spawnDds: spawnDds ?? this.spawnDds,
-      // ignore: deprecated_member_use_from_same_package
-      ddsPort: ddsPort ?? this.ddsPort,
-      enableDevToolsLaunch: enableDevToolsLaunch ?? this.enableDevToolsLaunch,
-      launchDevToolsInNewWindow:
-          launchDevToolsInNewWindow ?? this.launchDevToolsInNewWindow,
-      emitDebugEvents: emitDebugEvents ?? this.emitDebugEvents,
-      // ignore: deprecated_member_use_from_same_package
-      devToolsLauncher: devToolsLauncher ?? this.devToolsLauncher,
-      expressionCompiler: expressionCompiler ?? this.expressionCompiler,
-      urlEncoder: urlEncoder ?? this.urlEncoder,
-      ddsConfiguration: ddsConfiguration ?? this.ddsConfiguration,
-    );
-  }
-}
-
-class TestAppMetadata extends AppMetadata {
-  const TestAppMetadata({
-    super.isInternalBuild,
-    super.workspaceName,
-    super.hostname = 'localhost',
-  });
-
-  TestAppMetadata copyWith({
-    bool? isFlutterApp,
-    bool? isInternalBuild,
-    String? workspaceName,
-    String? hostname,
-  }) => TestAppMetadata(
-    isInternalBuild: isInternalBuild ?? this.isInternalBuild,
-    workspaceName: workspaceName ?? this.workspaceName,
-    hostname: hostname ?? this.hostname,
-  );
-
-  const TestAppMetadata.externalApp() : super(isInternalBuild: false);
-
-  const TestAppMetadata.internalApp() : super(isInternalBuild: true);
-}
-
-class TestToolConfiguration extends ToolConfiguration {
-  TestToolConfiguration.withDefaultLoadStrategy({
-    TestAppMetadata super.appMetadata = const TestAppMetadata.externalApp(),
-    TestDebugSettings super.debugSettings =
-        const TestDebugSettings.noDevToolsLaunch(),
-    TestBuildSettings buildSettings = const TestBuildSettings.dart(),
-  }) : super(loadStrategy: TestStrategy(FakeAssetReader(), buildSettings));
-
-  TestToolConfiguration.withLoadStrategy({
-    TestAppMetadata super.appMetadata = const TestAppMetadata.externalApp(),
-    TestDebugSettings super.debugSettings =
-        const TestDebugSettings.noDevToolsLaunch(),
-    required super.loadStrategy,
-  });
-}
-
-void setGlobalsForTesting({ToolConfiguration? toolConfiguration}) {
-  globalToolConfiguration =
-      toolConfiguration ?? TestToolConfiguration.withDefaultLoadStrategy();
-}
-
-void setGlobalsForTestingFromBuild({
-  TestBuildSettings buildSettings = const TestBuildSettings.dart(),
-}) {
-  globalToolConfiguration = TestToolConfiguration.withDefaultLoadStrategy(
-    buildSettings: buildSettings,
-  );
-}
-
-class TestStrategy extends FakeStrategy {
-  TestStrategy(super.assetReader, BuildSettings buildSettings)
-    : super(buildSettings: buildSettings);
-
-  @override
-  String serverPathForAppUri(String appUri) {
-    return 'foo';
-  }
-}
-
-/// Settings defining how to run the tests.
-class TestSettings {
-  // Scenario settings.
-  final ReloadConfiguration reloadConfiguration;
-  final bool autoRun;
-  final bool waitToDebug;
-  final bool enableExpressionEvaluation;
-  final bool verboseCompiler;
-  final bool launchChrome;
-
-  // Build settings.
-  final CompilationMode compilationMode;
-  final ModuleFormat moduleFormat;
-  final bool canaryFeatures;
-  final bool isFlutterApp;
-  final List<String> experiments;
-  final bool useDebuggerModuleNames;
-
-  const TestSettings({
-    this.reloadConfiguration = ReloadConfiguration.none,
-    this.autoRun = true,
-    this.waitToDebug = false,
-    this.enableExpressionEvaluation = false,
-    this.verboseCompiler = false,
-    this.launchChrome = true,
-    this.compilationMode = CompilationMode.buildDaemon,
-    this.moduleFormat = ModuleFormat.amd,
-    this.canaryFeatures = false,
-    this.isFlutterApp = false,
-    this.experiments = const <String>[],
-    this.useDebuggerModuleNames = false,
-  });
-}
-
-/// App build settings for tests.
-class TestBuildSettings extends BuildSettings {
-  const TestBuildSettings({
-    super.appEntrypoint,
-    super.canaryFeatures,
-    super.isFlutterApp,
-    super.experiments,
-  });
-
-  const TestBuildSettings.dart({Uri? appEntrypoint})
-    : this(appEntrypoint: appEntrypoint, isFlutterApp: false);
-
-  const TestBuildSettings.flutter({Uri? appEntrypoint})
-    : this(appEntrypoint: appEntrypoint, isFlutterApp: true);
-
-  TestBuildSettings copyWith({
-    Uri? appEntrypoint,
-    bool? canaryFeatures,
-    bool? isFlutterApp,
-    List<String>? experiments,
-  }) => TestBuildSettings(
-    appEntrypoint: appEntrypoint ?? this.appEntrypoint,
-    canaryFeatures: canaryFeatures ?? this.canaryFeatures,
-    isFlutterApp: isFlutterApp ?? this.isFlutterApp,
-    experiments: experiments ?? this.experiments,
-  );
-}
-
-class TestCompilerOptions extends CompilerOptions {
-  TestCompilerOptions({
-    required super.canaryFeatures,
-    super.experiments = const <String>[],
-    super.moduleFormat = ModuleFormat.amd,
-  });
-}
diff --git a/dwds/test/integration/handlers/asset_handler_amd_test.dart b/dwds/test/integration/handlers/asset_handler_amd_test.dart
deleted file mode 100644
index c5d84ba..0000000
--- a/dwds/test/integration/handlers/asset_handler_amd_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'asset_handler_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider(
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/handlers/asset_handler_common.dart b/dwds/test/integration/handlers/asset_handler_common.dart
deleted file mode 100644
index 7f3ba63..0000000
--- a/dwds/test/integration/handlers/asset_handler_common.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:shelf/shelf.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import '../fixtures/project.dart';
-import '../fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  group('Asset handler', () {
-    final context = TestContext(TestProject.test, provider);
-
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-    Future<void> readAsString(String path) async {
-      final request = Request('GET', Uri.parse('http://foo:0000/$path'));
-      final response = await context.assetHandler(request);
-      expect(response.statusCode, 200);
-      final result = await response.readAsString();
-      expect(
-        result,
-        isNotNull,
-        reason: 'Failed to read $path: ${response.statusCode}',
-      );
-    }
-
-    Future<void> readAsBytes(String path) async {
-      final request = Request('GET', Uri.parse('http://foo:0000/$path'));
-      final response = await context.assetHandler(request);
-      expect(response.statusCode, 200);
-      final result = await response.read().toList();
-      expect(
-        result,
-        isNotNull,
-        reason: 'Failed to read $path: ${response.statusCode}',
-      );
-    }
-
-    test('can read dill files', () async {
-      final path = 'hello_world/main.ddc.full.dill';
-      await readAsBytes(path);
-    });
-
-    test('can read large number of resources simultaneously', () async {
-      final n = 1000;
-      final futures = [
-        for (var i = 0; i < n; i++) readAsString('hello_world/main.ddc.js.map'),
-        for (var i = 0; i < n; i++) readAsString('hello_world/main.ddc.js'),
-        for (var i = 0; i < n; i++)
-          readAsBytes('hello_world/main.ddc.full.dill'),
-      ];
-
-      await expectLater(Future.wait(futures), completes);
-    });
-  });
-}
diff --git a/dwds/test/integration/handlers/asset_handler_ddc_library_bundle_test.dart b/dwds/test/integration/handlers/asset_handler_ddc_library_bundle_test.dart
deleted file mode 100644
index dbfe983..0000000
--- a/dwds/test/integration/handlers/asset_handler_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'asset_handler_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/handlers/injector_test.dart b/dwds/test/integration/handlers/injector_test.dart
deleted file mode 100644
index b791dea..0000000
--- a/dwds/test/integration/handlers/injector_test.dart
+++ /dev/null
@@ -1,415 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/src/handlers/injector.dart';
-import 'package:dwds/src/version.dart';
-import 'package:http/http.dart' as http;
-import 'package:shelf/shelf.dart';
-import 'package:shelf/shelf_io.dart' as shelf_io;
-import 'package:test/test.dart';
-
-import '../fixtures/utilities.dart';
-
-void main() {
-  late HttpServer server;
-  const entryEtag = 'entry etag';
-  const nonEntryEtag = 'some etag';
-
-  group('Injector test', () {
-    setUpAll(setGlobalsForTestingFromBuild);
-
-    group('InjectedHandlerWithoutExtension', () {
-      late DwdsInjector injector;
-      setUp(() async {
-        injector = DwdsInjector();
-        final pipeline = const Pipeline().addMiddleware(injector.middleware);
-        server = await shelf_io.serve(
-          pipeline.addHandler((request) {
-            if (request.url.path.endsWith(bootstrapJsExtension)) {
-              return Response.ok(
-                '$entrypointExtensionMarker\n'
-                '$mainExtensionMarker\n'
-                'app.main.main()',
-                headers: {HttpHeaders.etagHeader: entryEtag},
-              );
-            } else if (request.url.path.endsWith('foo.js')) {
-              return Response.ok(
-                'some js',
-                headers: {HttpHeaders.etagHeader: nonEntryEtag},
-              );
-            } else {
-              return Response.notFound('Not found');
-            }
-          }),
-          'localhost',
-          0,
-        );
-      });
-
-      tearDown(() async {
-        await server.close();
-      });
-
-      test('leaves non-entrypoints untouched', () async {
-        final result = await http.get(
-          Uri.parse('http://localhost:${server.port}/foo.js'),
-        );
-        expect(result.body, 'some js');
-      });
-
-      test('does not update etags for non-entrypoints', () async {
-        final result = await http.get(
-          Uri.parse('http://localhost:${server.port}/foo.js'),
-        );
-        expect(result.headers[HttpHeaders.etagHeader], nonEntryEtag);
-      });
-
-      test('replaces main marker with injected client', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('Injected by dwds'), isTrue);
-        expect(result.body.contains(mainExtensionMarker), isFalse);
-      });
-
-      test('prevents main from being called', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('window.\$dartRunMain'), isTrue);
-      });
-
-      test('updates etags for injected responses', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.headers[HttpHeaders.etagHeader], isNot(entryEtag));
-      });
-
-      test('ignores non-js requests', () async {
-        final result = await http.get(
-          Uri.parse('http://localhost:${server.port}/main.dart'),
-        );
-        expect(result.body, 'Not found');
-      });
-
-      test('embeds the devHandlerPath', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(
-          result.body.contains('window.\$dwdsDevHandlerPath = "http://'),
-          isTrue,
-        );
-      });
-
-      test('emits a devHandlerPath for each entrypoint', () async {
-        await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/foo/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/blah/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(
-          injector.devHandlerPaths,
-          emitsInOrder([
-            'http://localhost:${server.port}/foo/\$dwdsSseHandler',
-            'http://localhost:${server.port}/blah/\$dwdsSseHandler',
-          ]),
-        );
-      });
-
-      test('Does not return 304 when if-none-match etag matches the original '
-          'content etag', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-          headers: {HttpHeaders.ifNoneMatchHeader: entryEtag},
-        );
-        expect(result.statusCode, HttpStatus.ok);
-      });
-
-      test(
-        'Does return 304 when if-none-match etag matches the modified etag',
-        () async {
-          final originalResponse = await http.get(
-            Uri.parse(
-              'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-            ),
-          );
-
-          final etagHeader = originalResponse.headers[HttpHeaders.etagHeader];
-          expect(etagHeader, isNotNull);
-          final cachedResponse = await http.get(
-            Uri.parse(
-              'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-            ),
-            headers: {HttpHeaders.ifNoneMatchHeader: etagHeader!},
-          );
-          expect(cachedResponse.statusCode, HttpStatus.notModified);
-        },
-      );
-
-      test('Does not inject the extension backend port', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dartExtensionUri'), isFalse);
-      });
-
-      test('Has correct DWDS version', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        final expected = r'$dwdsVersion = ';
-        final index = result.body.indexOf(expected);
-        expect(index, greaterThan(0));
-        final nextBit = result.body.substring(index + expected.length);
-        final versionPiece = nextBit.split('"')[1];
-        expect(versionPiece, packageVersion);
-      });
-
-      test('Injects bootstrap', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dummy_bootstrap'), isTrue);
-      });
-
-      test('Injects load strategy id', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dummy-id'), isTrue);
-      });
-
-      test('Injects the entrypoint path', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(
-          result.body.contains(
-            'dartEntrypointPath = "entrypoint.bootstrap.js"',
-          ),
-          isTrue,
-        );
-      });
-
-      test('Injects client load snippet', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dummy-load-client-snippet'), isTrue);
-      });
-
-      test('Injects dwds enable devtools launch configuration', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dwdsEnableDevToolsLaunch'), isTrue);
-      });
-
-      test('Delegates to strategy handler', () async {
-        final result = await http.get(
-          Uri.parse('http://localhost:${server.port}/someDummyPath'),
-        );
-        expect(result.body, equals('some dummy response'));
-      });
-
-      test('the injected client contains a global \$emitDebugEvents', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/dwds/src/injected/client.js',
-          ),
-        );
-        expect(result.body, contains('\$dartEmitDebugEvents'));
-      });
-
-      test('the injected client contains a global \$emitDebugEvent', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/dwds/src/injected/client.js',
-          ),
-        );
-        expect(result.body, contains('\$emitDebugEvent'));
-      });
-
-      test(
-        'the injected client contains a global \$emitRegisterEvent',
-        () async {
-          final result = await http.get(
-            Uri.parse(
-              'http://localhost:${server.port}/dwds/src/injected/client.js',
-            ),
-          );
-          expect(result.body, contains('\$emitRegisterEvent'));
-        },
-      );
-
-      test('the injected client contains a global \$isInternalBuild', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/dwds/src/injected/client.js',
-          ),
-        );
-        expect(result.body, contains('\$isInternalBuild'));
-      });
-
-      test('the injected client contains a global \$isFlutterApp', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/dwds/src/injected/client.js',
-          ),
-        );
-        expect(result.body, contains('\$isFlutterApp'));
-      });
-
-      test('serves the injected client', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/dwds/src/injected/client.js',
-          ),
-        );
-        expect(result.statusCode, HttpStatus.ok);
-      });
-    });
-
-    group('InjectedHandlerWithoutExtension using WebSockets', () {
-      late DwdsInjector injector;
-      setUp(() async {
-        final toolConfiguration = TestToolConfiguration.withDefaultLoadStrategy(
-          debugSettings: const TestDebugSettings.noDevToolsLaunch().copyWith(
-            useSse: false,
-          ),
-        );
-        setGlobalsForTesting(toolConfiguration: toolConfiguration);
-        injector = DwdsInjector();
-        final pipeline = const Pipeline().addMiddleware(injector.middleware);
-        server = await shelf_io.serve(
-          pipeline.addHandler((request) {
-            if (request.url.path.endsWith(bootstrapJsExtension)) {
-              return Response.ok(
-                '$entrypointExtensionMarker\n'
-                '$mainExtensionMarker\n'
-                'app.main.main()',
-                headers: {HttpHeaders.etagHeader: entryEtag},
-              );
-            } else if (request.url.path.endsWith('foo.js')) {
-              return Response.ok(
-                'some js',
-                headers: {HttpHeaders.etagHeader: nonEntryEtag},
-              );
-            } else {
-              return Response.notFound('Not found');
-            }
-          }),
-          'localhost',
-          0,
-        );
-      });
-
-      tearDown(() async {
-        await server.close();
-      });
-
-      test('embeds the devHandlerPath', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(
-          result.body.contains('window.\$dwdsDevHandlerPath = "ws://'),
-          isTrue,
-        );
-      });
-
-      test('emits a devHandlerPath for each entrypoint', () async {
-        await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/foo/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/blah/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(
-          injector.devHandlerPaths,
-          emitsInOrder([
-            'ws://localhost:${server.port}/foo/\$dwdsSseHandler',
-            'ws://localhost:${server.port}/blah/\$dwdsSseHandler',
-          ]),
-        );
-      });
-    });
-
-    group('InjectedHandlerWithExtension', () {
-      setUp(() async {
-        final extensionUri = 'http://localhost:4000';
-        final pipeline = const Pipeline().addMiddleware(
-          DwdsInjector(extensionUri: Future.value(extensionUri)).middleware,
-        );
-        server = await shelf_io.serve(
-          pipeline.addHandler((request) {
-            return Response.ok(
-              '$entrypointExtensionMarker\n'
-              '$mainExtensionMarker\n'
-              'app.main.main()',
-              headers: {HttpHeaders.etagHeader: entryEtag},
-            );
-          }),
-          'localhost',
-          0,
-        );
-      });
-
-      tearDown(() async {
-        await server.close();
-      });
-
-      test('Injects the extension backend port', () async {
-        final result = await http.get(
-          Uri.parse(
-            'http://localhost:${server.port}/entrypoint$bootstrapJsExtension',
-          ),
-        );
-        expect(result.body.contains('dartExtensionUri'), isTrue);
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/hot_reload_breakpoints_common.dart b/dwds/test/integration/hot_reload_breakpoints_common.dart
deleted file mode 100644
index 276781b..0000000
--- a/dwds/test/integration/hot_reload_breakpoints_common.dart
+++ /dev/null
@@ -1,585 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-}) {
-  final project = TestProject.testHotReloadBreakpoints;
-  final context = TestContext(project, provider);
-  final mainFile = project.dartEntryFileName;
-  final callLogMarker = 'callLog';
-  final capturedStringMarker = 'capturedString';
-
-  Future<void> makeEditsAndRecompile(List<Edit> edits) async {
-    await context.makeEdits(edits);
-    await context.recompile(fullRestart: true);
-  }
-
-  group('when pause_isolates_on_start is true', () {
-    late VmService client;
-    late Stream<Event> stream;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      client = await context.connectFakeClient();
-      await client.setFlag('pause_isolates_on_start', 'true');
-      await client.streamListen(EventStreams.kDebug);
-      stream = client.onDebugEvent;
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    Future<Breakpoint> addBreakpoint({
-      required String file,
-      required String breakpointMarker,
-    }) async {
-      final vm = await client.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final scriptList = await client.getScripts(isolateId);
-      final scriptRef = scriptList.scripts!.firstWhere(
-        (script) => script.uri!.contains(file),
-      );
-      final bpLine = await context.findBreakpointLine(
-        breakpointMarker,
-        isolateId,
-        scriptRef,
-      );
-      final breakpointAdded = expectLater(
-        stream,
-        emits(_hasKind(EventKind.kBreakpointAdded)),
-      );
-      final breakpoint = await client.addBreakpointWithScriptUri(
-        isolateId,
-        scriptRef.uri!,
-        bpLine,
-      );
-      await breakpointAdded;
-      return breakpoint;
-    }
-
-    Future<void> removeBreakpoint(Breakpoint bp) async {
-      final vm = await client.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final breakpointRemoved = expectLater(
-        stream,
-        emits(_hasKind(EventKind.kBreakpointRemoved)),
-      );
-      await client.removeBreakpoint(isolateId, bp.id!);
-      await breakpointRemoved;
-    }
-
-    Future<void> resume() async {
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      await client.resume(isolate.id!);
-    }
-
-    // Resume the program, and check that at some point it will execute code
-    // that will print `expectedString` to the console.
-    Future<void> resumeAndWaitForLog(String expectedString) async {
-      final completer = Completer<void>();
-      final subscription = context.webkitDebugger.onConsoleAPICalled.listen((
-        e,
-      ) {
-        if (e.args.first.value == expectedString) {
-          completer.complete();
-        }
-      });
-      await resume();
-      await completer.future.timeout(
-        const Duration(minutes: 1),
-        onTimeout: () {
-          throw TimeoutException(
-            "Failed to find log: '$expectedString' in console.",
-          );
-        },
-      );
-      await subscription.cancel();
-    }
-
-    Future<List<Breakpoint>> hotReloadAndHandlePausePost(
-      List<({String file, String breakpointMarker, Breakpoint? bp})>
-      breakpoints,
-    ) async {
-      final breakpointEvents = expectLater(
-        stream,
-        emitsInOrder([
-          _hasKind(EventKind.kPausePostRequest),
-          for (final (:bp, breakpointMarker: _, file: _) in breakpoints) ...[
-            if (bp != null) _hasKind(EventKind.kBreakpointRemoved),
-            _hasKind(EventKind.kBreakpointAdded),
-          ],
-          _hasKind(EventKind.kResume),
-        ]),
-      );
-      final waitForPausePost = expectLater(
-        stream,
-        emits(_hasKind(EventKind.kPausePostRequest)),
-      );
-
-      // Initiate the hot reload by loading the sources into the page.
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final report = await client.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      // Client (e.g. DAP) should listen for this event, remove old breakpoints,
-      // reregister breakpoints, and then resume. The following lines imitate
-      // what the client should do.
-      await waitForPausePost;
-      final newBreakpoints = <Breakpoint>[];
-      for (final (:bp, :breakpointMarker, :file) in breakpoints) {
-        // This could be a new file, so there's no existing breakpoint to
-        // remove.
-        if (bp != null) await removeBreakpoint(bp);
-        newBreakpoints.add(
-          await addBreakpoint(file: file, breakpointMarker: breakpointMarker),
-        );
-      }
-      // The resume should complete hot reload and resume the program.
-      await resume();
-      await breakpointEvents;
-      return newBreakpoints;
-    }
-
-    Future<void> callEvaluate() async {
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final rootLib = isolate.rootLib;
-      await client.evaluate(isolate.id!, rootLib!.id!, 'evaluate()');
-    }
-
-    // Call the method `evaluate` in the program and wait for `expectedString`
-    // to be printed to the console.
-    Future<void> callEvaluateAndWaitForLog(String expectedString) async {
-      final completer = Completer<void>();
-      final subscription = context.webkitDebugger.onConsoleAPICalled.listen((
-        e,
-      ) {
-        if (e.args.first.value == expectedString) {
-          completer.complete();
-        }
-      });
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final rootLib = isolate.rootLib;
-      await client.evaluate(isolate.id!, rootLib!.id!, 'evaluate()');
-      await completer.future.timeout(
-        const Duration(minutes: 1),
-        onTimeout: () {
-          throw TimeoutException(
-            "Failed to find log: '$expectedString' in console.",
-          );
-        },
-      );
-      await subscription.cancel();
-    }
-
-    Future<void> waitForBreakpoint({bool resumeFirst = false}) => expectLater(
-      stream,
-      emitsInOrder([
-        if (resumeFirst) _hasKind(EventKind.kResume),
-        _hasKind(EventKind.kPauseBreakpoint),
-      ]),
-    );
-
-    test('empty hot reload keeps breakpoints', () async {
-      final genString = 'main gen0';
-
-      final bp = await addBreakpoint(
-        file: mainFile,
-        breakpointMarker: callLogMarker,
-      );
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genString);
-
-      await context.recompile(fullRestart: false);
-
-      await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-      ]);
-
-      breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genString);
-    });
-
-    test('after edit and hot reload, breakpoint is in new file', () async {
-      final oldString = 'main gen0';
-      final newString = 'main gen1';
-
-      final bp = await addBreakpoint(
-        file: mainFile,
-        breakpointMarker: callLogMarker,
-      );
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(oldString);
-
-      // Modify the string that gets printed.
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldString, newString: newString),
-      ]);
-
-      await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-      ]);
-
-      breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(newString);
-    });
-
-    test('after adding line, hot reload, removing line, and hot reload, '
-        'breakpoint is correct across both hot reloads', () async {
-      final genLog = 'main gen0';
-
-      var bp = await addBreakpoint(
-        file: mainFile,
-        breakpointMarker: callLogMarker,
-      );
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genLog);
-
-      // Add an extra log before the existing log.
-      final extraLog = 'hot reload';
-      final oldString = "log('";
-      final newString = "log('$extraLog');\n$oldString";
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldString, newString: newString),
-      ]);
-
-      bp = (await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-      ])).first;
-
-      breakpointFuture = waitForBreakpoint();
-
-      await callEvaluateAndWaitForLog(extraLog);
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genLog);
-
-      // Remove the line we just added.
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: newString, newString: oldString),
-      ]);
-
-      await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-      ]);
-
-      breakpointFuture = waitForBreakpoint();
-
-      final consoleLogs = <String>[];
-      final consoleSubscription = context.webkitDebugger.onConsoleAPICalled
-          .listen((e) {
-            consoleLogs.add(e.args.first.value as String);
-          });
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      expect(consoleLogs.contains(extraLog), false);
-      await resumeAndWaitForLog(genLog);
-      await consoleSubscription.cancel();
-    });
-
-    test(
-      'after adding file and putting breakpoint in it, breakpoint is correctly '
-      'registered',
-      () async {
-        final genLog = 'main gen0';
-
-        final bp = await addBreakpoint(
-          file: mainFile,
-          breakpointMarker: callLogMarker,
-        );
-
-        var breakpointFuture = waitForBreakpoint();
-
-        await callEvaluate();
-
-        // Should break at `callLog`.
-        await breakpointFuture;
-        await resumeAndWaitForLog(genLog);
-
-        // Add a library file, import it, and then refer to it in the log.
-        final libFile = 'library.dart';
-        final libGenLog = 'library gen0';
-        final libValueMarker = 'libValue';
-        context.addLibraryFile(
-          libFileName: libFile,
-          contents:
-              '''String get libraryValue {
-            return '$libGenLog'; // Breakpoint: $libValueMarker
-          }''',
-        );
-        final oldImports = "import 'dart:js_interop';";
-        final newImports =
-            '$oldImports\n'
-            "import 'package:_test_hot_reload_breakpoints/library.dart';";
-        final edits = [
-          (file: mainFile, originalString: oldImports, newString: newImports),
-        ];
-        final oldLog = "log('\$mainValue');";
-        final newLog = "log('\$libraryValue');";
-        edits.add((file: mainFile, originalString: oldLog, newString: newLog));
-        await makeEditsAndRecompile(edits);
-
-        await hotReloadAndHandlePausePost([
-          (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-          (file: libFile, breakpointMarker: libValueMarker, bp: null),
-        ]);
-
-        breakpointFuture = waitForBreakpoint();
-
-        await callEvaluate();
-
-        // Should break at `callLog`.
-        await breakpointFuture;
-
-        breakpointFuture = waitForBreakpoint(resumeFirst: true);
-
-        await resume();
-        // Should break at `libValue`.
-        await breakpointFuture;
-        await resumeAndWaitForLog(libGenLog);
-      },
-    );
-
-    // Test that we wait for all scripts to be parsed first before computing
-    // location metadata.
-    test('after adding many files and putting breakpoint in the last one,'
-        'breakpoint is correctly registered', () async {
-      final genLog = 'main gen0';
-
-      final bp = await addBreakpoint(
-        file: mainFile,
-        breakpointMarker: callLogMarker,
-      );
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genLog);
-
-      // Add library files, import them, but only refer to the last one in main.
-      final numFiles = 50;
-      final edits = <Edit>[];
-      for (var i = 1; i <= numFiles; i++) {
-        final libFile = 'library$i.dart';
-        context.addLibraryFile(
-          libFileName: libFile,
-          contents:
-              '''String get libraryValue$i {
-            return 'library$i gen1'; // Breakpoint: libValue$i
-          }''',
-        );
-        final oldImports = "import 'dart:js_interop';";
-        final newImports =
-            '$oldImports\n'
-            "import 'package:_test_hot_reload_breakpoints/$libFile';";
-        edits.add((
-          file: mainFile,
-          originalString: oldImports,
-          newString: newImports,
-        ));
-      }
-      final oldLog = "log('\$mainValue');";
-      final newLog = "log('\$libraryValue$numFiles');";
-      edits.add((file: mainFile, originalString: oldLog, newString: newLog));
-      await makeEditsAndRecompile(edits);
-
-      await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: callLogMarker, bp: bp),
-        (
-          file: 'library$numFiles.dart',
-          breakpointMarker: 'libValue$numFiles',
-          bp: null,
-        ),
-      ]);
-
-      breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-
-      breakpointFuture = waitForBreakpoint(resumeFirst: true);
-
-      await resume();
-      // Should break at the breakpoint in the last file.
-      await breakpointFuture;
-      await resumeAndWaitForLog('library$numFiles gen1');
-    });
-
-    test('breakpoint in captured code is deleted', () async {
-      var bp = await addBreakpoint(
-        file: mainFile,
-        breakpointMarker: capturedStringMarker,
-      );
-
-      final oldLog = "log('\$mainValue');";
-      final newLog = "log('\${closure()}');";
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldLog, newString: newLog),
-      ]);
-
-      bp = (await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: capturedStringMarker, bp: bp),
-      ])).first;
-
-      final breakpointFuture = waitForBreakpoint();
-
-      await callEvaluate();
-
-      // Should break at `capturedString`.
-      await breakpointFuture;
-      final oldCapturedString = 'captured closure gen0';
-      // Closure gets evaluated for the first time.
-      await resumeAndWaitForLog(oldCapturedString);
-
-      final newCapturedString = 'captured closure gen1';
-      await makeEditsAndRecompile([
-        (
-          file: mainFile,
-          originalString: oldCapturedString,
-          newString: newCapturedString,
-        ),
-      ]);
-
-      await hotReloadAndHandlePausePost([
-        (file: mainFile, breakpointMarker: capturedStringMarker, bp: bp),
-      ]);
-
-      // Breakpoint should not be hit as it's now deleted. We should also see
-      // the old string still as the closure has not been reevaluated.
-      await callEvaluateAndWaitForLog(oldCapturedString);
-    });
-  }, timeout: const Timeout.factor(2));
-
-  group('when pause_isolates_on_start is false', () {
-    late VmService client;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      client = await context.connectFakeClient();
-      await client.setFlag('pause_isolates_on_start', 'false');
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    // Call the method `evaluate` in the program and wait for `expectedString`
-    // to be printed to the console.
-    Future<void> callEvaluateAndWaitForLog(String expectedString) async {
-      final completer = Completer<void>();
-      final subscription = context.webkitDebugger.onConsoleAPICalled.listen((
-        e,
-      ) {
-        if (e.args.first.value == expectedString) {
-          completer.complete();
-        }
-      });
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final rootLib = isolate.rootLib;
-      await client.evaluate(isolate.id!, rootLib!.id!, 'evaluate()');
-      await completer.future.timeout(
-        const Duration(minutes: 1),
-        onTimeout: () {
-          throw TimeoutException(
-            "Failed to find log: '$expectedString' in console.",
-          );
-        },
-      );
-      await subscription.cancel();
-    }
-
-    test('no pause when calling reloadSources', () async {
-      final oldString = 'main gen0';
-      final newString = 'main gen1';
-
-      await callEvaluateAndWaitForLog(oldString);
-
-      // Modify the string that gets printed and hot reload.
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldString, newString: newString),
-      ]);
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final report = await client.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      // Program should not be paused, so this should execute.
-      await callEvaluateAndWaitForLog(newString);
-    });
-  }, timeout: const Timeout.factor(2));
-}
-
-TypeMatcher<Event> _hasKind(String kind) =>
-    isA<Event>().having((e) => e.kind, 'kind', kind);
diff --git a/dwds/test/integration/hot_reload_common.dart b/dwds/test/integration/hot_reload_common.dart
deleted file mode 100644
index ebb780e..0000000
--- a/dwds/test/integration/hot_reload_common.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-const originalString = 'Hello World!';
-const newString = 'Bonjour le monde!';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-}) {
-  final project = TestProject.testHotReload;
-  final context = TestContext(project, provider);
-
-  Future<void> recompile() async {
-    await context.recompile(fullRestart: false);
-  }
-
-  Future<void> makeEditAndRecompile() async {
-    await context.makeEdits([
-      (
-        file: 'library1.dart',
-        originalString: originalString,
-        newString: newString,
-      ),
-    ]);
-    await recompile();
-  }
-
-  // Call the method `evaluate` in the program and wait for `expectedString` to
-  // be printed to the console.
-  Future<void> callEvaluateAndWaitForLog(String expectedString) async {
-    final client = context.debugConnection.vmService;
-    final completer = Completer<void>();
-    final subscription = context.webkitDebugger.onConsoleAPICalled.listen((e) {
-      if (e.args.first.value == expectedString) {
-        completer.complete();
-      }
-    });
-    final vm = await client.getVM();
-    final isolate = await client.getIsolate(vm.isolates!.first.id!);
-    final rootLib = isolate.rootLib;
-    await client.evaluate(isolate.id!, rootLib!.id!, 'evaluate()');
-    await completer.future.timeout(
-      const Duration(minutes: 1),
-      onTimeout: () {
-        throw TimeoutException(
-          "Failed to find log: '$expectedString' in console.",
-        );
-      },
-    );
-    await subscription.cancel();
-  }
-
-  group('Injected client', () {
-    late VmService fakeClient;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      fakeClient = await context.connectFakeClient();
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('can hot reload', () async {
-      final client = context.debugConnection.vmService;
-
-      await makeEditAndRecompile();
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      final report = await fakeClient.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      await callEvaluateAndWaitForLog(newString);
-    });
-
-    test('can hot reload with no changes, hot reload with changes, and '
-        'hot reload again with no changes', () async {
-      final client = context.debugConnection.vmService;
-
-      // Empty hot reload.
-      await recompile();
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      var report = await fakeClient.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      await callEvaluateAndWaitForLog(originalString);
-
-      // Hot reload.
-      await makeEditAndRecompile();
-      report = await fakeClient.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      await callEvaluateAndWaitForLog(newString);
-
-      // Empty hot reload.
-      await recompile();
-      report = await fakeClient.reloadSources(isolate.id!);
-      expect(report.success, true);
-
-      await callEvaluateAndWaitForLog(newString);
-    });
-  }, timeout: const Timeout.factor(2));
-}
diff --git a/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart b/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart
deleted file mode 100644
index ba59239..0000000
--- a/dwds/test/integration/hot_reload_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'hot_reload_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-
-  tearDownAll(provider.dispose);
-
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-}
diff --git a/dwds/test/integration/hot_restart_amd_test.dart b/dwds/test/integration/hot_restart_amd_test.dart
deleted file mode 100644
index 8e1bb83..0000000
--- a/dwds/test/integration/hot_restart_amd_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'common/hot_restart_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = false;
-  final moduleFormat = ModuleFormat.amd;
-  final compilationMode = CompilationMode.buildDaemon;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canaryFeatures,
-    ddcModuleFormat: moduleFormat,
-  );
-
-  runTests(
-    provider: provider,
-    moduleFormat: moduleFormat,
-    compilationMode: compilationMode,
-    canaryFeatures: canaryFeatures,
-  );
-}
diff --git a/dwds/test/integration/hot_restart_breakpoints_common.dart b/dwds/test/integration/hot_restart_breakpoints_common.dart
deleted file mode 100644
index e9991c5..0000000
--- a/dwds/test/integration/hot_restart_breakpoints_common.dart
+++ /dev/null
@@ -1,435 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-
-  tearDownAll(provider.dispose);
-
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-
-  group('Build Daemon', () {
-    runTests(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-}
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-}) {
-  final project = TestProject.testHotRestartBreakpoints;
-  final context = TestContext(project, provider);
-  final mainFile = project.dartEntryFileName;
-  final callLogMarker = 'callLog';
-
-  Future<void> makeEditsAndRecompile(List<Edit> edits) async {
-    await context.makeEdits(edits);
-    if (compilationMode == CompilationMode.frontendServer) {
-      await context.recompile(fullRestart: true);
-    } else {
-      await context.waitForSuccessfulBuild();
-    }
-  }
-
-  group('when pause_isolates_on_start is true', () {
-    late VmService client;
-    late VmServiceInterface service;
-    late Stream<Event> stream;
-    // Fetch the log statements that are sent to console.
-    final consoleLogs = <String>[];
-    StreamSubscription<ConsoleAPIEvent>? consoleSubscription;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          enableExpressionEvaluation: true,
-          compilationMode: compilationMode,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      client = await context.connectFakeClient();
-      service = context.service;
-      await client.setFlag('pause_isolates_on_start', 'true');
-      await client.streamListen(EventStreams.kIsolate);
-      await client.streamListen(EventStreams.kDebug);
-      stream = client.onDebugEvent;
-      consoleSubscription = context.webkitDebugger.onConsoleAPICalled.listen(
-        (e) => consoleLogs.add(e.args.first.value as String),
-      );
-    });
-
-    tearDown(() async {
-      await consoleSubscription?.cancel();
-      consoleLogs.clear();
-      await context.tearDown();
-    });
-
-    Future<Breakpoint> addBreakpoint({
-      required String file,
-      required String breakpointMarker,
-    }) async {
-      final vm = await client.getVM();
-      final isolateId = vm.isolates!.first.id!;
-      final scriptList = await client.getScripts(isolateId);
-      final scriptRef = scriptList.scripts!.firstWhere(
-        (script) => script.uri!.contains(file),
-      );
-      final bpLine = await context.findBreakpointLine(
-        breakpointMarker,
-        isolateId,
-        scriptRef,
-      );
-      final breakpointAdded = expectLater(
-        stream,
-        emits(_hasKind(EventKind.kBreakpointAdded)),
-      );
-      final breakpoint = await client.addBreakpointWithScriptUri(
-        isolateId,
-        scriptRef.uri!,
-        bpLine,
-      );
-      await breakpointAdded;
-      return breakpoint;
-    }
-
-    Future<void> resume() async {
-      final vm = await client.getVM();
-      final isolate = await client.getIsolate(vm.isolates!.first.id!);
-      await client.resume(isolate.id!);
-    }
-
-    // Resume the program, and check that at some point it will execute code
-    // that will print `expectedString` to the console.
-    Future<void> resumeAndWaitForLog(String expectedString) async {
-      final completer = Completer<void>();
-      final subscription = context.webkitDebugger.onConsoleAPICalled.listen((
-        e,
-      ) {
-        if (e.args.first.value == expectedString) {
-          completer.complete();
-        }
-      });
-      await resume();
-      await completer.future.timeout(
-        const Duration(minutes: 1),
-        onTimeout: () {
-          throw TimeoutException(
-            "Failed to find log: '$expectedString' in console.",
-          );
-        },
-      );
-      await subscription.cancel();
-    }
-
-    Future<void> hotRestartAndHandlePausePost(
-      List<({String file, String breakpointMarker, bool exists})> breakpoints,
-    ) async {
-      final isolateEvents = expectLater(
-        client.onIsolateEvent,
-        emitsInOrder([
-          _hasKind(EventKind.kIsolateExit),
-          _hasKind(EventKind.kIsolateStart),
-          _hasKind(EventKind.kIsolateRunnable),
-        ]),
-      );
-      final breakpointEvents = expectLater(
-        stream,
-        emitsInOrder([
-          for (final (:exists, breakpointMarker: _, file: _)
-              in breakpoints) ...[
-            if (exists) _hasKind(EventKind.kBreakpointRemoved),
-          ],
-          _hasKind(EventKind.kResume),
-          _hasKind(EventKind.kPausePostRequest),
-          for (final _ in breakpoints) ...[
-            _hasKind(EventKind.kBreakpointAdded),
-          ],
-        ]),
-      );
-
-      final waitForPausePost = expectLater(
-        stream,
-        emitsThrough(_hasKind(EventKind.kPausePostRequest)),
-      );
-
-      final hotRestart = context.getRegisteredServiceExtension('hotRestart');
-      expect(
-        await client.callServiceExtension(hotRestart!),
-        const TypeMatcher<Success>(),
-      );
-
-      await isolateEvents;
-
-      // DWDS defers running main after a hot restart until the client (e.g.
-      // DAP) resumes. Client should listen for this event, remove breakpoints
-      // (we don't remove them here as DWDS already removes them), and
-      // reregister breakpoints (which will be registered in the new files), and
-      // resume.
-      await waitForPausePost;
-      // Verify DWDS has already removed the breakpoints at this point.
-      final vm = await client.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      expect(isolate.breakpoints, isEmpty);
-      for (final (exists: _, :breakpointMarker, :file) in breakpoints) {
-        await addBreakpoint(file: file, breakpointMarker: breakpointMarker);
-      }
-      await resume();
-      await breakpointEvents;
-    }
-
-    Future<Event> waitForBreakpoint() =>
-        stream.firstWhere((event) => event.kind == EventKind.kPauseBreakpoint);
-
-    test('empty hot restart keeps breakpoints', () async {
-      final genString = 'main gen0';
-
-      await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker);
-
-      final breakpointFuture = waitForBreakpoint();
-
-      if (compilationMode == CompilationMode.frontendServer) {
-        await context.recompile(fullRestart: false);
-      }
-
-      await hotRestartAndHandlePausePost([
-        (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-      ]);
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      await resumeAndWaitForLog(genString);
-    });
-
-    test('after edit and hot restart, breakpoint is in new file', () async {
-      final oldLog = 'main gen0';
-      final newLog = 'main gen1';
-
-      await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker);
-
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldLog, newString: newLog),
-      ]);
-
-      final breakpointFuture = waitForBreakpoint();
-
-      await hotRestartAndHandlePausePost([
-        (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-      ]);
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      expect(consoleLogs.contains(newLog), false);
-      await resumeAndWaitForLog(newLog);
-    });
-
-    test('after adding line, hot restart, removing line, and hot restart, '
-        'breakpoint is correct across both hot restarts', () async {
-      final genLog = 'main gen0';
-
-      await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker);
-
-      // Add an extra log before the existing log.
-      final extraLog = 'hot reload';
-      final oldString = "log('";
-      final newString = "log('$extraLog');\n$oldString";
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: oldString, newString: newString),
-      ]);
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await hotRestartAndHandlePausePost([
-        (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-      ]);
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      expect(consoleLogs.contains(extraLog), true);
-      expect(consoleLogs.contains(genLog), false);
-      await resumeAndWaitForLog(genLog);
-
-      consoleLogs.clear();
-
-      // Remove the line we just added.
-      await makeEditsAndRecompile([
-        (file: mainFile, originalString: newString, newString: oldString),
-      ]);
-
-      breakpointFuture = waitForBreakpoint();
-
-      await hotRestartAndHandlePausePost([
-        (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-      ]);
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      expect(consoleLogs.contains(extraLog), false);
-      expect(consoleLogs.contains(genLog), false);
-      await resumeAndWaitForLog(genLog);
-    });
-
-    test(
-      'after adding file and putting breakpoint in it, breakpoint is correctly '
-      'registered',
-      () async {
-        final genLog = 'main gen0';
-
-        await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker);
-
-        // Add a library file, import it, and then refer to it in the log.
-        final libFile = 'library.dart';
-        final libGenLog = 'library gen0';
-        final libValueMarker = 'libValue';
-        context.addLibraryFile(
-          libFileName: libFile,
-          contents:
-              '''String get libraryValue {
-            return '$libGenLog'; // Breakpoint: $libValueMarker
-          }''',
-        );
-        final oldImports = "import 'dart:js_interop';";
-        final newImports =
-            '$oldImports\n'
-            "import 'package:_test_hot_restart_breakpoints/library.dart';";
-        final edits = [
-          (file: mainFile, originalString: oldImports, newString: newImports),
-        ];
-        final oldLog = "log('$genLog');";
-        final newLog = "log('\$libraryValue');";
-        edits.add((file: mainFile, originalString: oldLog, newString: newLog));
-
-        // Include library file in edits to ensure it's added to
-        // reloaded_sources.json
-        edits.add((
-          file: libFile,
-          originalString: 'String get libraryValue',
-          newString: 'String get libraryValue',
-        ));
-
-        await makeEditsAndRecompile(edits);
-
-        var breakpointFuture = waitForBreakpoint();
-
-        await hotRestartAndHandlePausePost([
-          (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-          (exists: false, file: libFile, breakpointMarker: libValueMarker),
-        ]);
-
-        // Should break at `callLog`.
-        await breakpointFuture;
-        expect(consoleLogs.contains(libGenLog), false);
-
-        breakpointFuture = waitForBreakpoint();
-
-        await resume();
-        // Should break at `libValue`.
-        await breakpointFuture;
-        expect(consoleLogs.contains(libGenLog), false);
-        await resumeAndWaitForLog(libGenLog);
-      },
-    );
-
-    // Test that we wait for all scripts to be parsed first before computing
-    // location metadata.
-    test('after adding many files and putting breakpoint in the last one,'
-        'breakpoint is correctly registered', () async {
-      final genLog = 'main gen0';
-
-      await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker);
-
-      // Add library files, import them, but only refer to the last one in main.
-      final numFiles = 50;
-      final edits = <Edit>[];
-      for (var i = 1; i <= numFiles; i++) {
-        final libFile = 'library$i.dart';
-        context.addLibraryFile(
-          libFileName: libFile,
-          contents:
-              '''String get libraryValue$i {
-            return 'library$i gen1'; // Breakpoint: libValue$i
-          }''',
-        );
-        final oldImports = "import 'dart:js_interop';";
-        final newImports =
-            '$oldImports\n'
-            "import 'package:_test_hot_restart_breakpoints/$libFile';";
-        edits.add((
-          file: mainFile,
-          originalString: oldImports,
-          newString: newImports,
-        ));
-      }
-      final oldLog = "log('$genLog');";
-      final newLog = "log('\$libraryValue$numFiles');";
-      edits.add((file: mainFile, originalString: oldLog, newString: newLog));
-
-      // Include library files in edits to ensure they are added to
-      // reloaded_sources.json
-      for (var i = 1; i <= numFiles; i++) {
-        edits.add((
-          file: 'library$i.dart',
-          originalString: 'String get libraryValue$i',
-          newString: 'String get libraryValue$i',
-        ));
-      }
-
-      await makeEditsAndRecompile(edits);
-
-      var breakpointFuture = waitForBreakpoint();
-
-      await hotRestartAndHandlePausePost([
-        (exists: true, file: mainFile, breakpointMarker: callLogMarker),
-        (
-          exists: false,
-          file: 'library$numFiles.dart',
-          breakpointMarker: 'libValue$numFiles',
-        ),
-      ]);
-
-      final newGenLog = 'library$numFiles gen1';
-
-      // Should break at `callLog`.
-      await breakpointFuture;
-      expect(consoleLogs.contains(newGenLog), false);
-
-      breakpointFuture = waitForBreakpoint();
-
-      await resume();
-      // Should break at the breakpoint in the last file.
-      await breakpointFuture;
-      expect(consoleLogs.contains(newGenLog), false);
-      await resumeAndWaitForLog(newGenLog);
-    });
-  });
-}
-
-TypeMatcher<Event> _hasKind(String kind) =>
-    isA<Event>().having((e) => e.kind, 'kind', kind);
diff --git a/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart b/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart
deleted file mode 100644
index 364a411..0000000
--- a/dwds/test/integration/hot_restart_breakpoints_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'hot_restart_breakpoints_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-
-  tearDownAll(provider.dispose);
-
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
-
-  group('Build Daemon', () {
-    runTests(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-}
diff --git a/dwds/test/integration/hot_restart_correctness_amd_test.dart b/dwds/test/integration/hot_restart_correctness_amd_test.dart
deleted file mode 100644
index e034ff3..0000000
--- a/dwds/test/integration/hot_restart_correctness_amd_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'common/hot_restart_correctness_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = false;
-  final moduleFormat = ModuleFormat.amd;
-  final compilationMode = CompilationMode.buildDaemon;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canaryFeatures,
-    ddcModuleFormat: moduleFormat,
-  );
-
-  runTests(
-    provider: provider,
-    moduleFormat: moduleFormat,
-    compilationMode: compilationMode,
-    canaryFeatures: canaryFeatures,
-  );
-}
diff --git a/dwds/test/integration/hot_restart_correctness_ddc_library_bundle_test.dart b/dwds/test/integration/hot_restart_correctness_ddc_library_bundle_test.dart
deleted file mode 100644
index f5a1f68..0000000
--- a/dwds/test/integration/hot_restart_correctness_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'common/hot_restart_correctness_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-  final moduleFormat = ModuleFormat.ddc;
-
-  group('canary: $canaryFeatures | Frontend Server |', () {
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-    final compilationMode = CompilationMode.frontendServer;
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: $canaryFeatures | Build Daemon |', () {
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-    final compilationMode = CompilationMode.buildDaemon;
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/hot_restart_ddc_library_bundle_test.dart b/dwds/test/integration/hot_restart_ddc_library_bundle_test.dart
deleted file mode 100644
index dacc2f8..0000000
--- a/dwds/test/integration/hot_restart_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@TestOn('vm')
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'common/hot_restart_common.dart';
-import 'fixtures/context.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-  final moduleFormat = ModuleFormat.ddc;
-
-  group('canary: $canaryFeatures | Frontend Server |', () {
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: $canaryFeatures | Build Daemon |', () {
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: moduleFormat,
-    );
-
-    runTests(
-      provider: provider,
-      moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/inspector_test.dart b/dwds/test/integration/inspector_test.dart
deleted file mode 100644
index 0a305b9..0000000
--- a/dwds/test/integration/inspector_test.dart
+++ /dev/null
@@ -1,330 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds/src/utilities/conversions.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  final context = TestContext(TestProject.testScopes, provider);
-
-  late ChromeAppInspector inspector;
-
-  setUpAll(() async {
-    await context.setUp();
-    final service = context.service;
-    inspector = service.inspector;
-  });
-
-  tearDownAll(() async {
-    await context.tearDown();
-  });
-
-  final url = 'org-dartlang-app:///example/scopes/main.dart';
-
-  /// A convenient way to get a library variable without boilerplate.
-  String libraryVariableExpression(String variable) =>
-      '${globalToolConfiguration.loadStrategy.loadModuleSnippet}("dart_sdk").dart.getModuleLibraries("example/scopes/main")["$url"]["$variable"];';
-
-  Future<RemoteObject> libraryPublicFinal() =>
-      inspector.jsEvaluate(libraryVariableExpression('libraryPublicFinal'));
-
-  Future<RemoteObject> libraryPrivate() =>
-      inspector.jsEvaluate(libraryVariableExpression('_libraryPrivate'));
-
-  group('jsEvaluate', () {
-    test('no error', () async {
-      await expectLater(
-        inspector.jsEvaluate('42'),
-        completion(isA<RemoteObject>().having((e) => e.value, 'value', 42)),
-      );
-    });
-
-    test('syntax error', () async {
-      await expectLater(
-        () => inspector.jsEvaluate('<'),
-        throwsA(
-          isA<ChromeDebugException>()
-              .having((e) => e.text, 'text', 'Uncaught')
-              .having(
-                (e) => e.exception?.description,
-                'description',
-                contains('SyntaxError'),
-              )
-              .having((e) => e.stackTrace, 'stackTrace', isNull)
-              .having((e) => e.evalContents, 'evalContents', '<'),
-        ),
-      );
-    });
-
-    test('evaluation error', () async {
-      await expectLater(
-        () => inspector.jsEvaluate('''
-        (function() {
-          let foo = (function() {
-            console.log(boo);
-          });
-          foo();
-        })();
-        '''),
-        throwsA(
-          isA<ChromeDebugException>()
-              .having((e) => e.text, 'text', 'Uncaught')
-              .having(
-                (e) => e.exception?.description,
-                'description',
-                contains('ReferenceError'),
-              )
-              .having(
-                (e) => e.stackTrace?.printFrames()[0],
-                'stackTrace',
-                contains('foo()'),
-              )
-              .having((e) => e.evalContents, 'evalContents', contains('foo')),
-        ),
-      );
-    });
-  });
-
-  group('mapExceptionStackTrace', () {
-    test('multi-line exception with a stack trace', () async {
-      final result = await inspector.mapExceptionStackTrace(
-        jsMultiLineExceptionWithStackTrace,
-      );
-      expect(result, equals(formattedMultiLineExceptionWithStackTrace));
-    });
-
-    test('multi-line exception without a stack trace', () async {
-      final result = await inspector.mapExceptionStackTrace(
-        jsMultiLineExceptionNoStackTrace,
-      );
-      expect(result, equals(formattedMultiLineExceptionNoStackTrace));
-    });
-
-    test('single-line exception with a stack trace', () async {
-      final result = await inspector.mapExceptionStackTrace(
-        jsSingleLineExceptionWithStackTrace,
-      );
-      expect(result, equals(formattedSingleLineExceptionWithStackTrace));
-    });
-  });
-
-  test('send toString', () async {
-    final remoteObject = await libraryPublicFinal();
-    final toString = await inspector.invoke(
-      remoteObject.objectId!,
-      'toString',
-      [],
-    );
-    expect(toString.value, 'A test class with message world');
-  });
-
-  group('getObject', () {
-    test('for class with generic', () async {
-      final remoteObject = await libraryPublicFinal();
-      final instance =
-          await inspector.getObject(remoteObject.objectId!) as Instance;
-      final classRef = instance.classRef!;
-      final clazz = await inspector.getObject(classRef.id!) as Class;
-      expect(clazz.name, 'MyTestClass<dynamic>');
-    });
-  });
-
-  group('loadField', () {
-    test('for string', () async {
-      final remoteObject = await libraryPublicFinal();
-      final message = await inspector.loadField(remoteObject, 'message');
-      expect(message.value, 'world');
-    });
-
-    test('for num', () async {
-      final remoteObject = await libraryPublicFinal();
-      final unchangedCount = await inspector.loadField(
-        remoteObject,
-        'unchangedCount',
-      );
-      expect(unchangedCount.value, 42);
-    });
-  });
-
-  test('properties', () async {
-    final remoteObject = await libraryPublicFinal();
-    final properties = await inspector.getProperties(remoteObject.objectId!);
-    final names = properties
-        .map((p) => p.name)
-        .where((x) => x != '__proto__')
-        .toList();
-    final expected = [
-      '_privateField',
-      'abstractField',
-      'closure',
-      'count',
-      'message',
-      'myselfField',
-      'notFinal',
-      'tornOff',
-      'unchangedCount',
-    ];
-    names.sort();
-    expect(names, expected);
-  });
-
-  group('invoke', () {
-    // We test these here because the test fixture has more complicated members
-    // to exercise.
-
-    LibraryRef? bootstrapLibrary;
-    late RemoteObject instance;
-    late String objectId;
-
-    setUp(() async {
-      bootstrapLibrary = inspector.isolate.rootLib;
-      instance = await libraryPublicFinal();
-      objectId = instance.objectId!;
-    });
-
-    test('expect rootLib to be the main.dart file', () {
-      expect(inspector.isolate.rootLib?.uri, equals(url));
-    });
-
-    test('invoke top-level private', () async {
-      final remote = await inspector.invoke(
-        bootstrapLibrary!.id!,
-        '_libraryPrivateFunction',
-        [dartIdFor(2), dartIdFor(3)],
-      );
-      expect(
-        remote,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'result',
-          5,
-        ),
-      );
-    });
-
-    test('invoke instance private', () async {
-      final remote = await inspector.invoke(objectId, 'privateMethod', [
-        dartIdFor('some string'),
-      ]);
-      expect(
-        remote,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'result',
-          'some string : a private field',
-        ),
-      );
-    });
-
-    test('invoke instance method with object parameter', () async {
-      final remote = await inspector.invoke(objectId, 'equals', [objectId]);
-      expect(
-        remote,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'result',
-          true,
-        ),
-      );
-    });
-
-    test('invoke instance method with object parameter 2', () async {
-      final libraryPrivateList = await libraryPrivate();
-      final remote = await inspector.invoke(objectId, 'equals', [
-        libraryPrivateList.objectId,
-      ]);
-      expect(
-        remote,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'result',
-          false,
-        ),
-      );
-    });
-
-    test('invoke closure stored in an instance field', () async {
-      final remote = await inspector.invoke(objectId, 'closure', []);
-      expect(
-        remote,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'result',
-          null,
-        ),
-      );
-    });
-
-    test('invoke a torn-off method', () async {
-      final toString = await inspector.loadField(instance, 'tornOff');
-      final result = await inspector.invoke(toString.objectId!, 'call', []);
-      expect(
-        result,
-        const TypeMatcher<RemoteObject>().having(
-          (instance) => instance.value,
-          'toString',
-          'A test class with message world',
-        ),
-      );
-    });
-  });
-}
-
-final jsMultiLineExceptionWithStackTrace = '''
-Error: Assertion failed: org-dartlang-app:///example/scopes/main.dart:4:11
-false
-"THIS IS THE ASSERT MESSAGE"
-    at Object.assertFailed (org-dartlang-app:///example/scopes/main.dart.js:5297:15)
-''';
-
-final formattedMultiLineExceptionWithStackTrace = '''
-Error: Assertion failed: org-dartlang-app:///example/scopes/main.dart:4:11
-false
-"THIS IS THE ASSERT MESSAGE"
-org-dartlang-app:///example/scopes/main.dart.js 5297:15  assertFailed
-''';
-
-final jsMultiLineExceptionNoStackTrace = '''
-Error: Assertion failed: org-dartlang-app:///example/scopes/main.dart:4:11
-false
-"THIS IS THE ASSERT MESSAGE"
-''';
-
-final formattedMultiLineExceptionNoStackTrace = '''
-Error: Assertion failed: org-dartlang-app:///example/scopes/main.dart:4:11
-false
-"THIS IS THE ASSERT MESSAGE"
-''';
-
-final jsSingleLineExceptionWithStackTrace = '''
-Error: Unexpected null value.
-    at Object.throw_ [as throw] (http://localhost:63236/dart_sdk.js:5379:11)
-    at Object.nullCheck (http://localhost:63236/dart_sdk.js:5696:30)
-    at main (http://localhost:63236/packages/tmpapp/main.dart.lib.js:374:10)
-    at http://localhost:63236/web_entrypoint.dart.lib.js:41:33
-''';
-
-final formattedSingleLineExceptionWithStackTrace = '''
-Error: Unexpected null value.
-http://localhost:63236/dart_sdk.js 5379:11                      throw_
-http://localhost:63236/dart_sdk.js 5696:30                      nullCheck
-http://localhost:63236/packages/tmpapp/main.dart.lib.js 374:10  main
-http://localhost:63236/web_entrypoint.dart.lib.js 41:33         <fn>
-''';
diff --git a/dwds/test/integration/instances/class_inspection_amd_test.dart b/dwds/test/integration/instances/class_inspection_amd_test.dart
deleted file mode 100644
index dd9102c..0000000
--- a/dwds/test/integration/instances/class_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/class_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/class_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/class_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index 77a97d6..0000000
--- a/dwds/test/integration/instances/class_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/class_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/common/class_inspection_common.dart b/dwds/test/integration/instances/common/class_inspection_common.dart
deleted file mode 100644
index da77bcc..0000000
--- a/dwds/test/integration/instances/common/class_inspection_common.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import '../common/test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testExperiment, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<Obj> getObject(String instanceId) =>
-      service.getObject(isolateId, instanceId);
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() => service.resume(isolateId));
-
-    group('calling getObject for an existent class', () {
-      test('returns the correct class representation', () async {
-        await onBreakPoint('testClass1Case1', (Event event) async {
-          // classes|dart:core|Object_Diagnosticable
-          final result = await getObject(
-            'classes|org-dartlang-app:///web/main.dart|GreeterClass',
-          );
-          final clazz = result as Class?;
-          expect(clazz!.name, equals('GreeterClass'));
-          expect(
-            clazz.fields!.map((field) => field.name),
-            unorderedEquals(['greeteeName', 'useFrench']),
-          );
-          expect(
-            clazz.functions!.map((fn) => fn.name),
-            containsAll(['sayHello', 'greetInEnglish', 'greetInFrench']),
-          );
-        });
-      });
-    });
-
-    group('calling getObject for a non-existent class', () {
-      // TODO(https://github.com/dart-lang/webdev/issues/2297): Ideally we
-      // should throw an error in this case for the client to catch instead
-      // of returning an empty class.
-      test('returns an empty class representation', () async {
-        await onBreakPoint('testClass1Case1', (Event event) async {
-          final result = await getObject(
-            'classes|dart:core|Object_Diagnosticable',
-          );
-          final clazz = result as Class?;
-          expect(clazz!.name, equals('Object_Diagnosticable'));
-          expect(clazz.fields, isEmpty);
-          expect(clazz.functions, isEmpty);
-        });
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/dot_shorthands_common.dart b/dwds/test/integration/instances/common/dot_shorthands_common.dart
deleted file mode 100644
index f37bd6f..0000000
--- a/dwds/test/integration/instances/common/dot_shorthands_common.dart
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:path/path.dart' show basename;
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testDotShorthands, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakpoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  group('$compilationMode | dot shorthands:', () {
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen(EventStreams.kDebug);
-      stream = service.onDebugEvent;
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('expression evaluation', () async {
-      final bp = onBreakpoint('testDotShorthands', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        var instanceRef = await getInstanceRef(frame, '(c = .two).value');
-        expect(instanceRef.valueAsString, '2');
-
-        instanceRef = await getInstanceRef(frame, '(c = .three).value');
-        expect(instanceRef.valueAsString, '3');
-
-        instanceRef = await getInstanceRef(frame, '(c = .four()).value');
-        expect(instanceRef.valueAsString, '4');
-
-        await service.resume(isolateId);
-      });
-      final isolate = await service.getIsolate(isolateId);
-      await service.evaluate(
-        isolateId,
-        isolate.rootLib!.id!,
-        'testDotShorthands()',
-      );
-      await bp;
-    });
-
-    test('single-stepping', () async {
-      final bp = onBreakpoint('testDotShorthands', (Event event) async {
-        final scriptBasename = basename(mainScript.uri!);
-
-        const lineA = 9;
-        const lineB = 11;
-        const lineC = 12;
-        const lineD = 13;
-        const lineE = 20;
-        const lineF = 22;
-        const lineG = 24;
-        const lineH = 25;
-
-        final expected = [
-          '$scriptBasename:$lineE:3', // on 'c'
-          '$scriptBasename:$lineB:15', // on 'C'
-          '$scriptBasename:$lineA:10', // on 'v' of 'value'
-          '$scriptBasename:$lineA:16', // on ';'
-          '$scriptBasename:$lineB:20', // on '2'
-          '$scriptBasename:$lineF:3', // on 'c'
-          '$scriptBasename:$lineC:25', // on 'C'
-          '$scriptBasename:$lineA:10', // on 'v' of 'value'
-          '$scriptBasename:$lineA:16', // on ';'
-          '$scriptBasename:$lineC:27', // on '3'
-          '$scriptBasename:$lineG:3', // on 'c'
-          '$scriptBasename:$lineD:22', // on 'C'
-          '$scriptBasename:$lineA:10', // on 'v' of 'value'
-          '$scriptBasename:$lineA:16', // on ';'
-          '$scriptBasename:$lineD:24', // on '4'
-          '$scriptBasename:$lineH:3', // on 'p' of 'print'
-        ];
-
-        final stops = <String>[];
-        await testInspector.runStepIntoThroughProgramRecordingStops(
-          isolateId,
-          stops,
-          expected.length,
-        );
-
-        expect(stops, expected);
-
-        await service.resume(isolateId);
-      });
-      final isolate = await service.getIsolate(isolateId);
-      await service.evaluate(
-        isolateId,
-        isolate.rootLib!.id!,
-        'testDotShorthands()',
-      );
-      await bp;
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/instance_common.dart b/dwds/test/integration/instances/common/instance_common.dart
deleted file mode 100644
index 492c49b..0000000
--- a/dwds/test/integration/instances/common/instance_common.dart
+++ /dev/null
@@ -1,513 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds/src/debugging/chrome_inspector.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTypeSystemVerificationTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final project = TestProject.testScopes;
-
-  group('$compilationMode |', () {
-    final context = TestContext(project, provider);
-    late ChromeAppInspector inspector;
-
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: canaryFeatures,
-        ),
-      );
-      final chromeProxyService = context.service;
-      inspector = chromeProxyService.inspector;
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    final url = 'org-dartlang-app:///example/scopes/main.dart';
-
-    String libraryName(CompilationMode compilationMode) =>
-        compilationMode == CompilationMode.frontendServer
-        ? 'example/scopes/main.dart'
-        : 'example/scopes/main';
-
-    String libraryVariableTypeExpression(
-      String variable,
-      CompilationMode compilationMode,
-    ) =>
-        '''
-            (function() {
-              var dart = ${globalToolConfiguration.loadStrategy.loadModuleSnippet}('dart_sdk').dart;
-              var libraryName = '${libraryName(compilationMode)}';
-              var library = dart.getModuleLibraries(libraryName)['$url'];
-              var x = library['$variable'];
-              return dart.getReifiedType(x);
-            })();
-          ''';
-
-    group('compiler', () {
-      setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-      test('uses correct type system', () async {
-        final remoteObject = await inspector.jsEvaluate(
-          libraryVariableTypeExpression('libraryPublicFinal', compilationMode),
-        );
-        expect(remoteObject.json['className'], 'dart_rti.Rti.new');
-      });
-    });
-  });
-}
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final project = TestProject.testScopes;
-  final context = TestContext(project, provider);
-
-  late ChromeAppInspector inspector;
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      final chromeProxyService = context.service;
-      inspector = chromeProxyService.inspector;
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    final libraryUri = 'org-dartlang-app:///example/scopes/main.dart';
-
-    String newInterceptorsExpression(String type) =>
-        'new (require("dart_sdk")._interceptors.$type).new()';
-
-    final newDartError = 'new (require("dart_sdk").dart).DartError';
-
-    /// A reference to the the variable `libraryPublicFinal`, an instance of
-    /// `MyTestClass`.
-    Future<RemoteObject> getLibraryPublicFinalRef() =>
-        inspector.invoke(libraryUri, 'getLibraryPublicFinal');
-
-    /// A reference to the the variable `libraryPublic`, a List of Strings.
-    Future<RemoteObject> getLibraryPublicRef() =>
-        inspector.invoke(libraryUri, 'getLibraryPublic');
-
-    /// A reference to the variable `map`.
-    Future<RemoteObject> getMapRef() => inspector.invoke(libraryUri, 'getMap');
-
-    /// A reference to the variable `identityMap`.
-    Future<RemoteObject> getIdentityMapRef() =>
-        inspector.invoke(libraryUri, 'getIdentityMap');
-
-    /// A reference to the variable `stream`.
-    Future<RemoteObject> getStreamRef() =>
-        inspector.invoke(libraryUri, 'getStream');
-
-    final unsupportedTestMsg =
-        'This test is not supported with the DDC Library '
-        "Bundle Format because the dartDevEmbedder doesn't let you access "
-        'compiled constructors at runtime.';
-
-    group('instanceRef', () {
-      setUp(() => setCurrentLogWriter(debug: provider.verbose));
-
-      test('for a null', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final nullVariable = await inspector.loadField(
-          remoteObject,
-          'notFinal',
-        );
-        final ref = await inspector.instanceRefFor(nullVariable);
-        expect(ref!.valueAsString, 'null');
-        expect(ref.kind, InstanceKind.kNull);
-        final classRef = ref.classRef!;
-        expect(classRef.name, 'Null');
-        expect(classRef.id, 'classes|dart:core|Null');
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for a double', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final count = await inspector.loadField(remoteObject, 'count');
-        final ref = await inspector.instanceRefFor(count);
-        // 'count' is incremented by a periodic timer in the application, so we
-        // can't expect it to be exactly 0.
-        expect(double.tryParse(ref!.valueAsString!), greaterThanOrEqualTo(0));
-        expect(ref.kind, InstanceKind.kDouble);
-        final classRef = ref.classRef!;
-        expect(classRef.name, 'Double');
-        expect(classRef.id, 'classes|dart:core|Double');
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for an object', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final count = await inspector.loadField(remoteObject, 'myselfField');
-        final ref = await inspector.instanceRefFor(count);
-        expect(ref!.kind, InstanceKind.kPlainInstance);
-        final classRef = ref.classRef!;
-        expect(classRef.name, 'MyTestClass<dynamic>');
-        expect(
-          classRef.id,
-          'classes|org-dartlang-app:///example/scopes/main.dart'
-          '|MyTestClass<dynamic>',
-        );
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for a closure', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final properties = await inspector.getProperties(
-          remoteObject.objectId!,
-        );
-        final closure = properties.firstWhere(
-          (property) => property.name == 'closure',
-        );
-        final ref = await inspector.instanceRefFor(closure.value!);
-        final functionName = ref!.closureFunction!.name;
-        // Older SDKs do not contain function names
-        if (functionName != 'Closure') {
-          expect(functionName, 'someFunction');
-        }
-        expect(ref.kind, InstanceKind.kClosure);
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for a list', () async {
-        final remoteObject = await getLibraryPublicRef();
-        final ref = await inspector.instanceRefFor(remoteObject);
-        expect(ref!.length, greaterThan(0));
-        expect(ref.kind, InstanceKind.kList);
-        expect(ref.classRef!.name, matchListClassName('String'));
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for map', () async {
-        final remoteObject = await getMapRef();
-        final ref = await inspector.instanceRefFor(remoteObject);
-        expect(ref!.length, 2);
-        expect(ref.kind, InstanceKind.kMap);
-        expect(ref.classRef!.name, 'LinkedMap<Object, Object>');
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test('for an IdentityMap', () async {
-        final remoteObject = await getIdentityMapRef();
-        final ref = await inspector.instanceRefFor(remoteObject);
-        expect(ref!.length, 2);
-        expect(ref.kind, InstanceKind.kMap);
-        expect(ref.classRef!.name, 'IdentityMap<String, int>');
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      // Regression test for https://github.com/dart-lang/webdev/issues/2446.
-      test('for a stream', () async {
-        final remoteObject = await getStreamRef();
-        final ref = await inspector.instanceRefFor(remoteObject);
-        expect(ref!.kind, InstanceKind.kPlainInstance);
-        final classRef = ref.classRef!;
-        expect(classRef.name, '_ControllerStream<int>');
-        expect(classRef.id, 'classes|dart:async|_ControllerStream<int>');
-        expect(inspector.isDisplayableObject(ref), isTrue);
-      });
-
-      test(
-        'for a Dart error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(newDartError);
-          final ref = await inspector.instanceRefFor(remoteObject);
-          expect(ref!.kind, InstanceKind.kPlainInstance);
-          expect(ref.classRef!.name, 'NativeError');
-          expect(inspector.isDisplayableObject(ref), isFalse);
-          expect(inspector.isNativeJsError(ref), isTrue);
-          expect(inspector.isNativeJsObject(ref), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('NativeError'),
-          );
-          final ref = await inspector.instanceRefFor(remoteObject);
-          expect(ref!.kind, InstanceKind.kPlainInstance);
-          expect(ref.classRef!.name, 'NativeError');
-          expect(inspector.isDisplayableObject(ref), isFalse);
-          expect(inspector.isNativeJsError(ref), isTrue);
-          expect(inspector.isNativeJsObject(ref), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript type error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('JSNoSuchMethodError'),
-          );
-          final ref = await inspector.instanceRefFor(remoteObject);
-          expect(ref!.kind, InstanceKind.kPlainInstance);
-          expect(ref.classRef!.name, 'JSNoSuchMethodError');
-          expect(inspector.isDisplayableObject(ref), isFalse);
-          expect(inspector.isNativeJsError(ref), isTrue);
-          expect(inspector.isNativeJsObject(ref), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript object',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('LegacyJavaScriptObject'),
-          );
-          final ref = await inspector.instanceRefFor(remoteObject);
-          expect(ref!.kind, InstanceKind.kPlainInstance);
-          expect(ref.classRef!.name, 'LegacyJavaScriptObject');
-          expect(inspector.isDisplayableObject(ref), isFalse);
-          expect(inspector.isNativeJsError(ref), isFalse);
-          expect(inspector.isNativeJsObject(ref), isTrue);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-    });
-
-    group('instance', () {
-      setUp(() => setCurrentLogWriter(debug: provider.verbose));
-      test('for an object', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final instance = await inspector.instanceFor(remoteObject);
-        expect(instance!.kind, InstanceKind.kPlainInstance);
-        final classRef = instance.classRef!;
-        expect(classRef, isNotNull);
-        expect(classRef.name, 'MyTestClass<dynamic>');
-        final boundFieldNames = instance.fields!
-            .map((boundField) => boundField.decl!.name)
-            .toList();
-        expect(boundFieldNames, [
-          '_privateField',
-          'abstractField',
-          'closure',
-          'count',
-          'message',
-          'myselfField',
-          'notFinal',
-          'tornOff',
-          'unchangedCount',
-        ]);
-        final fieldNames = instance.fields!
-            .map((boundField) => boundField.name)
-            .toList();
-        expect(boundFieldNames, fieldNames);
-        for (final field in instance.fields!) {
-          expect(field.name, isNotNull);
-          expect(field.decl!.declaredType, isNotNull);
-        }
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test('for closure', () async {
-        final remoteObject = await getLibraryPublicFinalRef();
-        final properties = await inspector.getProperties(
-          remoteObject.objectId!,
-        );
-        final closure = properties.firstWhere(
-          (property) => property.name == 'closure',
-        );
-        final instance = await inspector.instanceFor(closure.value!);
-        expect(instance!.kind, InstanceKind.kClosure);
-        expect(instance.classRef!.name, 'Closure');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test('for a nested object', () async {
-        final libraryRemoteObject = await getLibraryPublicFinalRef();
-        final fieldRemoteObject = await inspector.loadField(
-          libraryRemoteObject,
-          'myselfField',
-        );
-        final instance = await inspector.instanceFor(fieldRemoteObject);
-        expect(instance!.kind, InstanceKind.kPlainInstance);
-        final classRef = instance.classRef!;
-        expect(classRef, isNotNull);
-        expect(classRef.name, 'MyTestClass<dynamic>');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test('for a list', () async {
-        final remote = await getLibraryPublicRef();
-        final instance = await inspector.instanceFor(remote);
-        expect(instance!.kind, InstanceKind.kList);
-        final classRef = instance.classRef!;
-        expect(classRef, isNotNull);
-        expect(classRef.name, matchListClassName('String'));
-        final first = instance.elements![0] as InstanceRef;
-        expect(first.valueAsString, 'library');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test('for a map', () async {
-        final remote = await getMapRef();
-        final instance = await inspector.instanceFor(remote);
-        expect(instance!.kind, InstanceKind.kMap);
-        final classRef = instance.classRef!;
-        expect(classRef.name, 'LinkedMap<Object, Object>');
-        final first = instance.associations![0].value as InstanceRef;
-        expect(first.kind, InstanceKind.kList);
-        expect(first.length, 3);
-        final second = instance.associations![1].value as InstanceRef;
-        expect(second.kind, InstanceKind.kString);
-        expect(second.valueAsString, 'something');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test('for an identityMap', () async {
-        final remote = await getIdentityMapRef();
-        final instance = await inspector.instanceFor(remote);
-        expect(instance!.kind, InstanceKind.kMap);
-        final classRef = instance.classRef!;
-        expect(classRef.name, 'IdentityMap<String, int>');
-        final first = instance.associations![0].value as InstanceRef;
-        expect(first.valueAsString, '1');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      // Regression test for https://github.com/dart-lang/webdev/issues/2446.
-      test('for a stream', () async {
-        final remote = await getStreamRef();
-        final instance = await inspector.instanceFor(remote);
-        expect(instance!.kind, InstanceKind.kPlainInstance);
-        final classRef = instance.classRef!;
-        expect(classRef.name, '_ControllerStream<int>');
-        expect(inspector.isDisplayableObject(instance), isTrue);
-      });
-
-      test(
-        'for a Dart error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(newDartError);
-          final instance = await inspector.instanceFor(remoteObject);
-          expect(instance!.kind, InstanceKind.kPlainInstance);
-          expect(instance.classRef!.name, 'NativeError');
-          expect(inspector.isDisplayableObject(instance), isFalse);
-          expect(inspector.isNativeJsError(instance), isTrue);
-          expect(inspector.isNativeJsObject(instance), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('NativeError'),
-          );
-          final instance = await inspector.instanceFor(remoteObject);
-          expect(instance!.kind, InstanceKind.kPlainInstance);
-          expect(instance.classRef!.name, 'NativeError');
-          expect(inspector.isDisplayableObject(instance), isFalse);
-          expect(inspector.isNativeJsError(instance), isTrue);
-          expect(inspector.isNativeJsObject(instance), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript type error',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('JSNoSuchMethodError'),
-          );
-          final instance = await inspector.instanceFor(remoteObject);
-          expect(instance!.kind, InstanceKind.kPlainInstance);
-          expect(instance.classRef!.name, 'JSNoSuchMethodError');
-          expect(inspector.isDisplayableObject(instance), isFalse);
-          expect(inspector.isNativeJsError(instance), isTrue);
-          expect(inspector.isNativeJsObject(instance), isFalse);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-
-      test(
-        'for a native JavaScript object',
-        () async {
-          final remoteObject = await inspector.jsEvaluate(
-            newInterceptorsExpression('LegacyJavaScriptObject'),
-          );
-          final instance = await inspector.instanceFor(remoteObject);
-          expect(instance!.kind, InstanceKind.kPlainInstance);
-          expect(instance.classRef!.name, 'LegacyJavaScriptObject');
-          expect(inspector.isDisplayableObject(instance), isFalse);
-          expect(inspector.isNativeJsError(instance), isFalse);
-          expect(inspector.isNativeJsObject(instance), isTrue);
-        },
-        skip:
-            provider.ddcModuleFormat == ModuleFormat.ddc &&
-                canaryFeatures == true
-            ? unsupportedTestMsg
-            : null,
-      );
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/instance_inspection_common.dart b/dwds/test/integration/instances/common/instance_inspection_common.dart
deleted file mode 100644
index 13f9126..0000000
--- a/dwds/test/integration/instances/common/instance_inspection_common.dart
+++ /dev/null
@@ -1,363 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final project = TestProject.testPackage();
-  final context = TestContext(project, provider);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  final testInspector = TestInspector(context);
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<Instance> getInstance(int frame, String expression) =>
-      testInspector.getInstance(isolateId, frame, expression);
-
-  Future<Obj> getObject(String instanceId) =>
-      service.getObject(isolateId, instanceId);
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  Future<Map<Object?, Object?>> getFields(
-    InstanceRef instanceRef, {
-    int? offset,
-    int? count,
-  }) => testInspector.getFields(
-    isolateId,
-    instanceRef,
-    offset: offset,
-    count: count,
-  );
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          canaryFeatures: canaryFeatures,
-          experiments: ['records'],
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(context.tearDown);
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() async {
-      // We must resume execution in case a test left the isolate paused, but
-      // error 106 is expected if the isolate is already running.
-      try {
-        await service.resume(isolateId);
-      } on RPCError catch (e) {
-        if (e.code != 106) rethrow;
-      }
-    });
-
-    group('Library |', () {
-      test('classes', () async {
-        const libraryId = 'org-dartlang-app:///web/main.dart';
-        final library = await getObject(libraryId);
-
-        expect(
-          library,
-          isA<Library>().having((l) => l.classes, 'classes', [
-            matchClassRef(name: 'MainClass', libraryId: libraryId),
-            matchClassRef(name: 'EnclosedClass', libraryId: libraryId),
-            matchClassRef(name: 'ClassWithMethod', libraryId: libraryId),
-            matchClassRef(name: 'EnclosingClass', libraryId: libraryId),
-          ]),
-        );
-      });
-    });
-
-    group('Class |', () {
-      test('name and library', () async {
-        const libraryId = 'org-dartlang-app:///web/main.dart';
-        const className = 'MainClass';
-        final cls = await getObject('classes|$libraryId|$className');
-
-        expect(cls, matchClass(name: className, libraryId: libraryId));
-      });
-    });
-
-    group('Object |', () {
-      test('type and fields', () async {
-        await onBreakPoint('printFieldMain', (Event event) async {
-          final frame = event.topFrame!.index!;
-          final instanceRef = await getInstanceRef(frame, 'instance');
-
-          final instanceId = instanceRef.id!;
-          expect(
-            await getObject(instanceId),
-            matchPlainInstance(
-              libraryId: 'org-dartlang-app:///web/main.dart',
-              type: 'MainClass',
-            ),
-          );
-
-          expect(await getFields(instanceRef), {'_field': 1, 'field': 2});
-
-          // Offsets and counts are ignored for plain object fields.
-
-          // DevTools calls [VmServiceInterface.getObject] with offset=0
-          // and count=0 and expects all fields to be returned.
-          expect(await getFields(instanceRef, offset: 0, count: 0), {
-            '_field': 1,
-            'field': 2,
-          });
-          expect(await getFields(instanceRef, offset: 0), {
-            '_field': 1,
-            'field': 2,
-          });
-          expect(await getFields(instanceRef, offset: 0, count: 1), {
-            '_field': 1,
-            'field': 2,
-          });
-          expect(await getFields(instanceRef, offset: 1), {
-            '_field': 1,
-            'field': 2,
-          });
-          expect(await getFields(instanceRef, offset: 1, count: 0), {
-            '_field': 1,
-            'field': 2,
-          });
-          expect(await getFields(instanceRef, offset: 1, count: 3), {
-            '_field': 1,
-            'field': 2,
-          });
-        });
-      });
-
-      test('field access', () async {
-        await onBreakPoint('printFieldMain', (Event event) async {
-          final frame = event.topFrame!.index!;
-          expect(
-            await getInstance(frame, r'instance.field'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 2),
-          );
-
-          expect(
-            await getInstance(frame, r'instance._field'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 1),
-          );
-        });
-      });
-    });
-
-    group('List |', () {
-      test('type and fields', () async {
-        await onBreakPoint('printList', (Event event) async {
-          final frame = event.topFrame!.index!;
-          final instanceRef = await getInstanceRef(frame, 'list');
-
-          final instanceId = instanceRef.id!;
-          expect(await getObject(instanceId), matchListInstance(type: 'int'));
-
-          expect(await getFields(instanceRef), {0: 0.0, 1: 1.0, 2: 2.0});
-          expect(
-            await getFields(instanceRef, offset: 1, count: 0),
-            <Object?, Object?>{},
-          );
-          expect(await getFields(instanceRef, offset: 0), {
-            0: 0.0,
-            1: 1.0,
-            2: 2.0,
-          });
-          expect(await getFields(instanceRef, offset: 0, count: 1), {0: 0.0});
-          expect(await getFields(instanceRef, offset: 1), {0: 1.0, 1: 2.0});
-          expect(await getFields(instanceRef, offset: 1, count: 1), {0: 1.0});
-          expect(await getFields(instanceRef, offset: 1, count: 3), {
-            0: 1.0,
-            1: 2.0,
-          });
-          expect(
-            await getFields(instanceRef, offset: 3, count: 3),
-            <Object?, Object?>{},
-          );
-        });
-      });
-
-      test('Element access', () async {
-        await onBreakPoint('printList', (Event event) async {
-          final frame = event.topFrame!.index!;
-          expect(
-            await getInstance(frame, r'list[0]'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 0),
-          );
-
-          expect(
-            await getInstance(frame, r'list[1]'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 1),
-          );
-
-          expect(
-            await getInstance(frame, r'list[2]'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 2),
-          );
-        });
-      });
-    });
-
-    group('Map |', () {
-      test('type and fields', () async {
-        await onBreakPoint('printMap', (Event event) async {
-          final frame = event.topFrame!.index!;
-          final instanceRef = await getInstanceRef(frame, 'map');
-
-          final instanceId = instanceRef.id!;
-          expect(
-            await getObject(instanceId),
-            matchMapInstance(type: 'IdentityMap<String, int>'),
-          );
-
-          expect(await getFields(instanceRef), {'a': 1, 'b': 2, 'c': 3});
-
-          expect(
-            await getFields(instanceRef, offset: 1, count: 0),
-            <Object?, Object?>{},
-          );
-          expect(await getFields(instanceRef, offset: 0), {
-            'a': 1,
-            'b': 2,
-            'c': 3,
-          });
-          expect(await getFields(instanceRef, offset: 0, count: 1), {'a': 1});
-          expect(await getFields(instanceRef, offset: 1), {'b': 2, 'c': 3});
-          expect(await getFields(instanceRef, offset: 1, count: 1), {'b': 2});
-          expect(await getFields(instanceRef, offset: 1, count: 3), {
-            'b': 2,
-            'c': 3,
-          });
-          expect(
-            await getFields(instanceRef, offset: 3, count: 3),
-            <Object?, Object?>{},
-          );
-        });
-      });
-
-      test('Element access', () async {
-        await onBreakPoint('printMap', (Event event) async {
-          final frame = event.topFrame!.index!;
-          expect(
-            await getInstance(frame, r"map['a']"),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 1),
-          );
-
-          expect(
-            await getInstance(frame, r"map['b']"),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 2),
-          );
-
-          expect(
-            await getInstance(frame, r"map['c']"),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 3),
-          );
-        });
-      });
-    });
-
-    group('Set |', () {
-      test('type and fields', () async {
-        await onBreakPoint('printSet', (Event event) async {
-          final frame = event.topFrame!.index!;
-          final instanceRef = await getInstanceRef(frame, 'mySet');
-
-          final instanceId = instanceRef.id!;
-          expect(
-            await getObject(instanceId),
-            matchSetInstance(type: 'LinkedSet<int>'),
-          );
-
-          expect(await getFields(instanceRef), {
-            0: 1.0,
-            1: 4.0,
-            2: 5.0,
-            3: 7.0,
-          });
-          expect(await getFields(instanceRef, offset: 0), {
-            0: 1.0,
-            1: 4.0,
-            2: 5.0,
-            3: 7.0,
-          });
-          expect(await getFields(instanceRef, offset: 1, count: 2), {
-            0: 4.0,
-            1: 5.0,
-          });
-          expect(await getFields(instanceRef, offset: 2), {0: 5.0, 1: 7.0});
-          expect(await getFields(instanceRef, offset: 2, count: 10), {
-            0: 5.0,
-            1: 7.0,
-          });
-          expect(
-            await getFields(instanceRef, offset: 1, count: 0),
-            <Object?, Object?>{},
-          );
-          expect(
-            await getFields(instanceRef, offset: 10, count: 2),
-            <Object?, Object?>{},
-          );
-        });
-      });
-
-      test('Element access', () async {
-        await onBreakPoint('printSet', (Event event) async {
-          final frame = event.topFrame!.index!;
-          expect(
-            await getInstance(frame, r'mySet.first'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 1),
-          );
-          expect(
-            await getInstance(frame, r'mySet.last'),
-            matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 7),
-          );
-        });
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/patterns_inspection_common.dart b/dwds/test/integration/instances/common/patterns_inspection_common.dart
deleted file mode 100644
index 8255c56..0000000
--- a/dwds/test/integration/instances/common/patterns_inspection_common.dart
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testExperiment, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  Future<Map<Object?, Object?>> getFields(
-    InstanceRef instanceRef, {
-    int? offset,
-    int? count,
-  }) => testInspector.getFields(
-    isolateId,
-    instanceRef,
-    offset: offset,
-    count: count,
-  );
-
-  Future<Map<String?, Instance?>> getFrameVariables(Frame frame) =>
-      testInspector.getFrameVariables(isolateId, frame);
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() => service.resume(isolateId));
-
-    test('pattern match case 1', () async {
-      await onBreakPoint('testPatternCase1', (event) async {
-        final frame = event.topFrame!;
-
-        expect(await getFrameVariables(frame), {
-          'obj': matchListInstance(type: 'Object'),
-          'a': matchPrimitiveInstance(kind: InstanceKind.kString, value: 'a'),
-          'n': matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 1),
-        });
-      });
-    });
-
-    test('pattern match case 2', () async {
-      await onBreakPoint('testPatternCase2', (event) async {
-        final frame = event.topFrame!;
-
-        expect(await getFrameVariables(frame), {
-          'obj': matchListInstance(type: 'Object'),
-          // Renamed to avoid shadowing variables from previous case.
-          'a\$': matchPrimitiveInstance(kind: InstanceKind.kString, value: 'b'),
-          'n\$': matchPrimitiveInstance(
-            kind: InstanceKind.kDouble,
-            value: 3.14,
-          ),
-        });
-      });
-    });
-
-    test('pattern match default case', () async {
-      await onBreakPoint('testPatternDefault', (event) async {
-        final frame = event.topFrame!;
-        final frameIndex = frame.index!;
-        final instanceRef = await getInstanceRef(frameIndex, 'obj');
-        expect(await getFields(instanceRef), {0: 0.0, 1: 1.0});
-
-        expect(await getFrameVariables(frame), {
-          'obj': matchListInstance(type: 'int'),
-        });
-      });
-    });
-
-    test('stepping through pattern match', () async {
-      await onBreakPoint('callTestPattern1', (Event event) async {
-        var previousLocation = event.topFrame!.location;
-        for (final step in [
-          // Make sure we step into the callee.
-          for (var i = 0; i < 4; i++) 'Into',
-          // Make a few steps inside the callee.
-          for (var i = 0; i < 4; i++) 'Over',
-        ]) {
-          await service.resume(isolateId, step: step);
-
-          event = await stream.firstWhere(
-            (e) => e.kind == EventKind.kPauseInterrupted,
-          );
-
-          if (step == 'Over') {
-            expect(event.topFrame!.code!.name, 'testPattern');
-          }
-
-          final location = event.topFrame!.location;
-          expect(location, isNot(equals(previousLocation)));
-          previousLocation = location;
-        }
-      });
-    });
-
-    test('before instantiation of pattern-matching variables', () async {
-      await onBreakPoint('testPattern2Case1', (event) async {
-        final frame = event.topFrame!;
-
-        expect(await getFrameVariables(frame), {
-          'dog': matchPrimitiveInstance(kind: 'String', value: 'Prismo'),
-        });
-      });
-    });
-
-    test('after instantiation of pattern-matching variables', () async {
-      await onBreakPoint('testPattern2Case2', (event) async {
-        final frame = event.topFrame!;
-
-        final vars = await getFrameVariables(frame);
-        expect(vars, {
-          'dog': matchPrimitiveInstance(kind: 'String', value: 'Prismo'),
-          'cats': matchListInstance(type: 'String'),
-          'firstCat': matchPrimitiveInstance(kind: 'String', value: 'Garfield'),
-          'secondCat': matchPrimitiveInstance(kind: 'String', value: 'Tom'),
-        });
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/record_inspection_common.dart b/dwds/test/integration/instances/common/record_inspection_common.dart
deleted file mode 100644
index ef4c65c..0000000
--- a/dwds/test/integration/instances/common/record_inspection_common.dart
+++ /dev/null
@@ -1,586 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testExperiment, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<Instance> getInstance(int frame, String expression) =>
-      testInspector.getInstance(isolateId, frame, expression);
-
-  Future<Obj> getObject(String instanceId) =>
-      service.getObject(isolateId, instanceId);
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  Future<Map<Object?, Object?>> getFields(
-    InstanceRef instanceRef, {
-    int? offset,
-    int? count,
-    int depth = -1,
-  }) => testInspector.getFields(
-    isolateId,
-    instanceRef,
-    offset: offset,
-    count: count,
-    depth: depth,
-  );
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() => service.resume(isolateId));
-
-    test('simple record display', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringRefId = stringRef.id!;
-
-        expect(
-          await getObject(stringRefId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, 3)',
-          ),
-        );
-      });
-    });
-
-    test('simple records', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final instanceId = instanceRef.id!;
-
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {1: true, 2: 3});
-        expect(await getFields(instanceRef, offset: 0), {1: true, 2: 3});
-        expect(await getFields(instanceRef, offset: 1), {2: 3});
-        expect(await getFields(instanceRef, offset: 2), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          2: 3,
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          2: 3,
-        });
-        expect(
-          await getFields(instanceRef, offset: 2, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('simple records, field access', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        expect(
-          await getInstance(frame, r'record.$1'),
-          matchPrimitiveInstance(kind: InstanceKind.kBool, value: true),
-        );
-
-        expect(
-          await getInstance(frame, r'record.$2'),
-          matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 3),
-        );
-      });
-    });
-
-    test('simple records with named fields display', () async {
-      await onBreakPoint('printSimpleNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringId = stringRef.id!;
-
-        expect(
-          await getObject(stringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, cat: Vasya)',
-          ),
-        );
-      });
-    });
-
-    test('simple records with named fields', () async {
-      await onBreakPoint('printSimpleNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {1: true, 'cat': 'Vasya'});
-        expect(await getFields(instanceRef, offset: 0), {
-          1: true,
-          'cat': 'Vasya',
-        });
-        expect(await getFields(instanceRef, offset: 1), {'cat': 'Vasya'});
-        expect(await getFields(instanceRef, offset: 2), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          'cat': 'Vasya',
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          'cat': 'Vasya',
-        });
-        expect(
-          await getFields(instanceRef, offset: 2, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('simple records with named fields, field access', () async {
-      await onBreakPoint('printSimpleNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        expect(
-          await getInstance(frame, r'record.$1'),
-          matchPrimitiveInstance(kind: InstanceKind.kBool, value: true),
-        );
-
-        expect(
-          await getInstance(frame, r'record.cat'),
-          matchPrimitiveInstance(kind: InstanceKind.kString, value: 'Vasya'),
-        );
-      });
-    });
-
-    test('complex records display', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringId = stringRef.id!;
-
-        expect(
-          await getObject(stringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, 3, {a: 1, b: 5})',
-          ),
-        );
-      });
-    });
-
-    test('complex records', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 3));
-        expect(await getObject(instanceId), matchRecordInstance(length: 3));
-
-        expect(await getFields(instanceRef), {
-          1: true,
-          2: 3,
-          3: {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 0), {
-          1: true,
-          2: 3,
-          3: {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 1), {
-          2: 3,
-          3: {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 1, count: 1), {2: 3});
-        expect(await getFields(instanceRef, offset: 1, count: 2), {
-          2: 3,
-          3: {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 2), {
-          3: {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 3), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          2: 3,
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          2: 3,
-          3: {'a': 1, 'b': 5},
-        });
-        expect(
-          await getFields(instanceRef, offset: 3, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('complex records, field access', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        expect(
-          await getInstance(frame, r'record.$1'),
-          matchPrimitiveInstance(kind: InstanceKind.kBool, value: true),
-        );
-
-        expect(
-          await getInstance(frame, r'record.$2'),
-          matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 3),
-        );
-
-        final third = await getInstanceRef(frame, r'record.$3');
-        expect(third.kind, InstanceKind.kMap);
-        expect(await getFields(third), {'a': 1, 'b': 5});
-      });
-    });
-
-    test('complex records with named fields display', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringId = stringRef.id!;
-
-        expect(
-          await getObject(stringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, 3, array: {a: 1, b: 5})',
-          ),
-        );
-      });
-    });
-
-    test('complex records with named fields', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 3));
-        expect(await getObject(instanceId), matchRecordInstance(length: 3));
-
-        expect(await getFields(instanceRef), {
-          1: true,
-          2: 3,
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 0), {
-          1: true,
-          2: 3,
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 1), {
-          2: 3,
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 1, count: 1), {2: 3});
-        expect(await getFields(instanceRef, offset: 1, count: 2), {
-          2: 3,
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 2), {
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(await getFields(instanceRef, offset: 3), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          2: 3,
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          2: 3,
-          'array': {'a': 1, 'b': 5},
-        });
-        expect(
-          await getFields(instanceRef, offset: 3, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('complex records with named fields, field access', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        expect(
-          await getInstance(frame, r'record.$1'),
-          matchPrimitiveInstance(kind: InstanceKind.kBool, value: true),
-        );
-
-        expect(
-          await getInstance(frame, r'record.$2'),
-          matchPrimitiveInstance(kind: InstanceKind.kDouble, value: 3),
-        );
-
-        final third = await getInstanceRef(frame, r'record.array');
-        expect(third.kind, InstanceKind.kMap);
-        expect(await getFields(third), {'a': 1, 'b': 5});
-      });
-    });
-
-    test('nested records display', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringId = stringRef.id!;
-
-        expect(
-          await getObject(stringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, (false, 5))',
-          ),
-        );
-      });
-    });
-
-    test('nested records', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {
-          1: true,
-          2: {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 0), {
-          1: true,
-          2: {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 1), {
-          2: {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 2), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          2: {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          2: {1: false, 2: 5},
-        });
-        expect(
-          await getFields(instanceRef, offset: 2, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('nested records, field access', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, r'record.$2');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {1: false, 2: 5});
-        expect(await getFields(instanceRef, offset: 0), {1: false, 2: 5});
-      });
-    });
-
-    test('nested records with named fields display', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-
-        final instanceRef = await getInstanceRef(frame, 'record');
-        final classId = instanceRef.classRef!.id!;
-
-        expect(await getObject(classId), matchRecordClass);
-
-        final stringRef = await getInstanceRef(frame, 'record.toString()');
-        final stringId = stringRef.id!;
-
-        expect(
-          await getObject(stringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(true, inner: (false, 5))',
-          ),
-        );
-      });
-    });
-
-    test('nested records with named fields', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {
-          1: true,
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 0), {
-          1: true,
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 1), {
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 1, count: 1), {
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 1, count: 2), {
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 2), <Object?, Object?>{});
-        expect(
-          await getFields(instanceRef, offset: 0, count: 0),
-          <Object?, Object?>{},
-        );
-        expect(await getFields(instanceRef, offset: 0, count: 1), {1: true});
-        expect(await getFields(instanceRef, offset: 0, count: 2), {
-          1: true,
-          'inner': {1: false, 2: 5},
-        });
-        expect(await getFields(instanceRef, offset: 0, count: 5), {
-          1: true,
-          'inner': {1: false, 2: 5},
-        });
-        expect(
-          await getFields(instanceRef, offset: 2, count: 5),
-          <Object?, Object?>{},
-        );
-      });
-    });
-
-    test('nested records with named fields, field access', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, r'record.inner');
-
-        final instanceId = instanceRef.id!;
-        expect(instanceRef, matchRecordInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordInstance(length: 2));
-
-        expect(await getFields(instanceRef), {1: false, 2: 5});
-        expect(await getFields(instanceRef, offset: 0), {1: false, 2: 5});
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/record_type_inspection_common.dart b/dwds/test/integration/instances/common/record_type_inspection_common.dart
deleted file mode 100644
index 82eb5c3..0000000
--- a/dwds/test/integration/instances/common/record_type_inspection_common.dart
+++ /dev/null
@@ -1,435 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final context = TestContext(TestProject.testExperiment, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<Obj> getObject(String instanceId) =>
-      service.getObject(isolateId, instanceId);
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  Future<Map<Object?, String?>> getDisplayedFields(InstanceRef ref) =>
-      testInspector.getDisplayedFields(isolateId, ref);
-
-  Future<Map<Object?, String?>> getDisplayedGetters(InstanceRef ref) =>
-      testInspector.getDisplayedGetters(isolateId, ref);
-
-  Future<List<Instance>> getElements(String instanceId) =>
-      testInspector.getElements(isolateId, instanceId);
-
-  final matchDisplayedTypeObjectGetters = {
-    'hashCode': matches('[0-9]*'),
-    'runtimeType': matchTypeClassName,
-  };
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() => service.resume(isolateId));
-
-    test('simple record type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordTypeInstance(length: 2));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-      });
-    });
-
-    test('simple record type elements', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(await getElements(instanceId), [
-          matchTypeInstance('bool'),
-          matchTypeInstance('int'),
-        ]);
-        expect(await getDisplayedFields(instanceRef), {1: 'bool', 2: 'int'});
-      });
-    });
-
-    test('simple record type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('simple record type display', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final typeStringRef = await getInstanceRef(
-          frame,
-          'record.runtimeType.toString()',
-        );
-        final typeStringId = typeStringRef.id!;
-
-        expect(
-          await getObject(typeStringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(bool, int)',
-          ),
-        );
-      });
-    });
-
-    test('complex record type', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 3));
-        expect(await getObject(instanceId), matchRecordTypeInstance(length: 3));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-      });
-    });
-
-    test('complex record type elements', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(await getElements(instanceId), [
-          matchTypeInstance('bool'),
-          matchTypeInstance('int'),
-          matchTypeInstance('IdentityMap<String, int>'),
-        ]);
-        expect(await getDisplayedFields(instanceRef), {
-          1: 'bool',
-          2: 'int',
-          3: 'IdentityMap<String, int>',
-        });
-      });
-    });
-
-    test('complex record type getters', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('complex record type display', () async {
-      await onBreakPoint('printComplexLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final typeStringRef = await getInstanceRef(
-          frame,
-          'record.runtimeType.toString()',
-        );
-        final typeStringId = typeStringRef.id!;
-
-        expect(
-          await getObject(typeStringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(bool, int, IdentityMap<String, int>)',
-          ),
-        );
-      });
-    });
-
-    test('complex record type with named fields ', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 3));
-        expect(await getObject(instanceId), matchRecordTypeInstance(length: 3));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-      });
-    });
-
-    test('complex record type with named fields elements', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(await getElements(instanceId), [
-          matchTypeInstance('bool'),
-          matchTypeInstance('int'),
-          matchTypeInstance('IdentityMap<String, int>'),
-        ]);
-
-        expect(await getDisplayedFields(instanceRef), {
-          1: 'bool',
-          2: 'int',
-          'array': 'IdentityMap<String, int>',
-        });
-      });
-    });
-
-    test('complex record type with named fields getters', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('complex record type with named fields display', () async {
-      await onBreakPoint('printComplexNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final typeStringRef = await getInstanceRef(
-          frame,
-          'record.runtimeType.toString()',
-        );
-        final typeStringId = typeStringRef.id!;
-
-        expect(
-          await getObject(typeStringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(bool, int, {IdentityMap<String, int> array})',
-          ),
-        );
-      });
-    });
-
-    test('nested record type', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 2));
-        expect(await getObject(instanceId), matchRecordTypeInstance(length: 2));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-      });
-    });
-
-    test('nested record type elements', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        final elements = await getElements(instanceId);
-        expect(elements, [
-          matchTypeInstance('bool'),
-          matchRecordTypeInstance(length: 2),
-        ]);
-        expect(await getElements(elements[1].id!), [
-          matchTypeInstance('bool'),
-          matchTypeInstance('int'),
-        ]);
-        expect(await getDisplayedFields(instanceRef), {
-          1: 'bool',
-          2: '(bool, int)',
-        });
-        expect(await getDisplayedFields(elements[1]), {1: 'bool', 2: 'int'});
-      });
-    });
-
-    test('nested record type getters', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final elements = await getElements(instanceRef.id!);
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-        expect(
-          await getDisplayedGetters(elements[1]),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('nested record type display', () async {
-      await onBreakPoint('printNestedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final typeStringRef = await getInstanceRef(
-          frame,
-          'record.runtimeType.toString()',
-        );
-        final typeStringId = typeStringRef.id!;
-
-        expect(
-          await getObject(typeStringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(bool, (bool, int))',
-          ),
-        );
-      });
-    });
-
-    test('nested record type with named fields', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 2));
-        expect(instance, matchRecordTypeInstance(length: 2));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-      });
-    });
-
-    test('nested record type with named fields elements', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instanceId = instanceRef.id!;
-
-        final elements = await getElements(instanceId);
-        expect(elements, [
-          matchTypeInstance('bool'),
-          matchRecordTypeInstance(length: 2),
-        ]);
-        expect(await getElements(elements[1].id!), [
-          matchTypeInstance('bool'),
-          matchTypeInstance('int'),
-        ]);
-        expect(await getDisplayedFields(instanceRef), {
-          1: 'bool',
-          'inner': '(bool, int)',
-        });
-
-        expect(await getDisplayedFields(elements[1]), {1: 'bool', 2: 'int'});
-      });
-    });
-
-    test('nested record type with named fields getters', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final elements = await getElements(instanceRef.id!);
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-        expect(
-          await getDisplayedGetters(elements[1]),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('nested record type with named fields display', () async {
-      await onBreakPoint('printNestedNamedLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, 'record.runtimeType');
-        final instance = await getObject(instanceRef.id!);
-        final typeClassId = instance.classRef!.id!;
-
-        expect(await getObject(typeClassId), matchRecordTypeClass);
-
-        final typeStringRef = await getInstanceRef(
-          frame,
-          'record.runtimeType.toString()',
-        );
-        final typeStringId = typeStringRef.id!;
-
-        expect(
-          await getObject(typeStringId),
-          matchPrimitiveInstance(
-            kind: InstanceKind.kString,
-            value: '(bool, {(bool, int) inner})',
-          ),
-        );
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/common/test_inspector.dart b/dwds/test/integration/instances/common/test_inspector.dart
deleted file mode 100644
index 4423659..0000000
--- a/dwds/test/integration/instances/common/test_inspector.dart
+++ /dev/null
@@ -1,454 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async' show Completer, StreamSubscription;
-
-import 'package:path/path.dart' show basename;
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-
-class TestInspector {
-  TestInspector(this.context);
-  TestContext context;
-
-  VmService get service => context.debugConnection.vmService;
-
-  Future<void> onBreakPoint(
-    Stream<Event> stream,
-    String isolateId,
-    ScriptRef script,
-    String breakPointId,
-    Future<void> Function(Event event) body,
-  ) async {
-    Breakpoint? bp;
-    try {
-      final line = await context.findBreakpointLine(
-        breakPointId,
-        isolateId,
-        script,
-      );
-      bp = await service.addBreakpointWithScriptUri(
-        isolateId,
-        script.uri!,
-        line,
-      );
-
-      final event = await stream.firstWhere(
-        (Event e) => e.kind == EventKind.kPauseBreakpoint,
-      );
-
-      await body(event);
-    } finally {
-      // Remove breakpoint so it doesn't impact other tests or retries.
-      if (bp != null) {
-        await service.removeBreakpoint(isolateId, bp.id!);
-      }
-    }
-  }
-
-  Future<Map<dynamic, Object?>> getFields(
-    String isolateId,
-    InstanceRef instanceRef, {
-    int? offset,
-    int? count,
-    int depth = -1,
-  }) async {
-    final instanceId = instanceRef.id!;
-
-    final result = await service.getObject(
-      isolateId,
-      instanceId,
-      offset: offset,
-      count: count,
-    );
-
-    expect(result, isA<Instance>());
-    final instance = result as Instance;
-
-    expect(
-      instance.kind,
-      instanceRef.kind,
-      reason:
-          'object $instanceId with ref kind ${instanceRef.kind} '
-          'has an instance kind ${instance.kind}',
-    );
-
-    final fields = instance.fields;
-    final associations = instance.associations;
-    final elements = instance.elements;
-
-    Map<dynamic, InstanceRef>? fieldRefs;
-    if (fields != null) {
-      fieldRefs = _boundFieldsToMap(fields);
-    } else if (associations != null) {
-      fieldRefs = _associationsToMap(associations);
-    } else if (elements != null) {
-      fieldRefs = _elementsToMap(elements);
-    } else {
-      fieldRefs = {};
-    }
-
-    if (depth > 0) {
-      depth--;
-    }
-    if (depth == 0) {
-      return fieldRefs;
-    }
-
-    final fieldValues = <dynamic, Object?>{};
-    for (final p in fieldRefs.entries) {
-      fieldValues[p.key] =
-          _getValue(p.value) ??
-          await getFields(isolateId, p.value, depth: depth);
-    }
-    return fieldValues;
-  }
-
-  Future<Map<String, InstanceRef>> getGetters(
-    String isolateId,
-    InstanceRef instanceRef,
-  ) async {
-    final cls =
-        await service.getObject(isolateId, instanceRef.classRef!.id!) as Class;
-    final getters =
-        cls.functions?.where((f) => f.isGetter ?? false).toList() ?? [];
-
-    final results = await Future.wait([
-      for (final getter in getters)
-        service.evaluate(isolateId, instanceRef.id!, getter.name!),
-    ]);
-
-    return Map<String, InstanceRef>.fromIterables(
-      getters.map((e) => e.name!),
-      results.map((e) => e as InstanceRef),
-    );
-  }
-
-  Future<InstanceRef> getInstanceRef(
-    String isolateId,
-    int frame,
-    String expression,
-  ) async {
-    final result = await service.evaluateInFrame(isolateId, frame, expression);
-    expect(result, isA<InstanceRef>());
-    return result as InstanceRef;
-  }
-
-  Future<Instance> getInstance(
-    String isolateId,
-    int frame,
-    String expression,
-  ) async {
-    final instanceRef = await getInstanceRef(isolateId, frame, expression);
-
-    expect(instanceRef.id, isNotNull);
-    final result = await service.getObject(isolateId, instanceRef.id!);
-
-    expect(result, isA<Instance>());
-    return result as Instance;
-  }
-
-  Future<Map<String?, Instance?>> getFrameVariables(
-    String isolateId,
-    Frame frame,
-  ) async {
-    final refs = <String, InstanceRef>{
-      for (final variable in frame.vars!)
-        variable.name!: variable.value as InstanceRef,
-    };
-    final instances = <String, Instance>{};
-    for (final p in refs.entries) {
-      instances[p.key] =
-          await service.getObject(isolateId, p.value.id!) as Instance;
-    }
-    return instances;
-  }
-
-  Future<InstanceRef> getDisplayedRef(
-    String isolateId,
-    String instanceId,
-  ) async =>
-      await service.invoke(isolateId, instanceId, 'toString', [])
-          as InstanceRef;
-
-  Future<Map<dynamic, String?>> getDisplayedFields(
-    String isolateId,
-    InstanceRef ref,
-  ) async {
-    final fieldRefs =
-        await getFields(isolateId, ref, depth: 1) as Map<dynamic, InstanceRef>;
-
-    Future<String?> toStringValue(InstanceRef ref) async =>
-        ref.valueAsString ??
-        (await getDisplayedRef(isolateId, ref.id!)).valueAsString;
-
-    final fields = await Future.wait(fieldRefs.values.map(toStringValue));
-    return Map<dynamic, String?>.fromIterables(fieldRefs.keys, fields);
-  }
-
-  Future<Map<dynamic, String?>> getDisplayedGetters(
-    String isolateId,
-    InstanceRef ref,
-  ) async {
-    final fieldRefs =
-        await getGetters(isolateId, ref) as Map<dynamic, InstanceRef>;
-
-    Future<String?> toStringValue(InstanceRef ref) async =>
-        ref.valueAsString ??
-        (await getDisplayedRef(isolateId, ref.id!)).valueAsString;
-
-    final fields = await Future.wait(fieldRefs.values.map(toStringValue));
-    return Map<dynamic, String?>.fromIterables(fieldRefs.keys, fields);
-  }
-
-  Future<List<Instance>> getElements(
-    String isolateId,
-    String instanceId,
-  ) async {
-    final instance = await service.getObject(isolateId, instanceId) as Instance;
-    return Future.wait(
-      instance.fields!.map(
-        (e) async =>
-            await service.getObject(isolateId, (e.value as InstanceRef).id!)
-                as Instance,
-      ),
-    );
-  }
-
-  Future<String> _locationToString(
-    VmService service,
-    String isolateId,
-    SourceLocation location,
-  ) async {
-    final script =
-        await service.getObject(isolateId, location.script!.id!) as Script;
-    final scriptName = basename(script.uri!);
-    final tokenPos = location.tokenPos!;
-    final line = script.getLineNumberFromTokenPos(tokenPos);
-    final column = script.getColumnNumberFromTokenPos(tokenPos);
-    return '$scriptName:$line:$column';
-  }
-
-  Future<void> runStepIntoThroughProgramRecordingStops(
-    String isolateId,
-
-    /// A list to which the pause location is added after each single-step.
-    List<String> recordedStops,
-
-    /// A limit on the number of stops to record.
-    ///
-    /// The program will not be resumed after the length of `recordedStops`
-    /// becomes `numStops`.
-    int numStops,
-  ) async {
-    final completer = Completer<void>();
-
-    late StreamSubscription subscription;
-    subscription = service.onDebugEvent.listen((event) async {
-      if (event.kind == EventKind.kPauseInterrupted) {
-        final isolate = await service.getIsolate(isolateId);
-        final frame = isolate.pauseEvent!.topFrame!;
-        recordedStops.add(
-          await _locationToString(service, isolateId, frame.location!),
-        );
-        if (recordedStops.length == numStops) {
-          await subscription.cancel();
-          completer.complete();
-        }
-        await service.resume(isolateId, step: StepOption.kInto);
-      } else if (event.kind == EventKind.kPauseExit) {
-        await subscription.cancel();
-        completer.complete();
-      }
-    });
-    await service.resume(isolateId, step: StepOption.kInto);
-    await completer.future;
-  }
-}
-
-Map<String, InstanceRef> _associationsToMap(
-  Iterable<MapAssociation> associations,
-) => Map.fromEntries(
-  associations.map(
-    (e) =>
-        MapEntry((e.key as InstanceRef).valueAsString!, e.value as InstanceRef),
-  ),
-);
-
-Map<dynamic, InstanceRef> _boundFieldsToMap(Iterable<BoundField> fields) =>
-    Map.fromEntries(
-      fields
-          .where((e) => e.name != null)
-          .map((e) => MapEntry(e.name, e.value as InstanceRef)),
-    );
-
-Map<dynamic, InstanceRef> _elementsToMap(List<dynamic> fields) =>
-    Map.fromEntries(
-      fields
-          .where((e) => e != null)
-          .map((e) => MapEntry(fields.indexOf(e), e as InstanceRef)),
-    );
-
-Matcher matchRecordInstanceRef({required int length}) => isA<InstanceRef>()
-    .having((e) => e.kind, 'kind', InstanceKind.kRecord)
-    .having((e) => e.length, 'length', length)
-    .having((e) => e.classRef!, 'classRef', matchRecordClassRef);
-
-Matcher matchRecordTypeInstanceRef({required int length}) => isA<InstanceRef>()
-    .having((e) => e.kind, 'kind', InstanceKind.kRecordType)
-    .having((e) => e.length, 'length', length)
-    .having((e) => e.classRef!, 'classRef', matchRecordTypeClassRef);
-
-Matcher matchTypeInstanceRef(dynamic name) => isA<InstanceRef>()
-    .having((e) => e.kind, 'kind', InstanceKind.kType)
-    .having((e) => e.name, 'type ref name', name)
-    .having((e) => e.classRef, 'classRef', matchTypeClassRef);
-
-Matcher matchPrimitiveInstanceRef({required String kind}) =>
-    isA<InstanceRef>().having((e) => e.kind, 'kind', kind);
-
-Matcher matchPrimitiveInstance({
-  required String kind,
-  required dynamic value,
-}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', kind)
-    .having(_getValue, 'value', value);
-
-Matcher matchPlainInstance({required String libraryId, required String type}) =>
-    isA<Instance>()
-        .having((e) => e.kind, 'kind', InstanceKind.kPlainInstance)
-        .having(
-          (e) => e.classRef,
-          'classRef',
-          matchClassRef(name: type, libraryId: libraryId),
-        );
-
-Matcher matchListInstance({required String type}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kList)
-    .having((e) => e.classRef, 'classRef', matchListClassRef(type));
-
-Matcher matchMapInstance({required String type}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kMap)
-    .having((e) => e.classRef, 'classRef', matchMapClassRef(type));
-
-Matcher matchSetInstance({required String type}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kSet)
-    .having((e) => e.classRef, 'classRef', matchSetClassRef(type));
-
-Matcher matchRecordInstance({required int length}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kRecord)
-    .having((e) => e.length, 'length', length)
-    .having((e) => e.classRef, 'classRef', matchRecordClassRef);
-
-Matcher matchRecordTypeInstance({required int length}) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kRecordType)
-    .having((e) => e.length, 'length', length)
-    .having((e) => e.classRef, 'classRef', matchRecordTypeClassRef);
-
-Matcher matchTypeStringInstance(dynamic name) =>
-    matchPrimitiveInstance(kind: InstanceKind.kString, value: name);
-
-Matcher matchTypeInstance(dynamic name) => isA<Instance>()
-    .having((e) => e.kind, 'kind', InstanceKind.kType)
-    .having((e) => e.name, 'type name', name)
-    .having((e) => e.classRef, 'classRef', matchTypeClassRef);
-
-Matcher matchRecordClass = matchClass(
-  name: matchRecordClassName,
-  libraryId: _dartCoreLibrary,
-);
-Matcher matchTypeClass = matchClass(
-  name: matchTypeClassName,
-  libraryId: _dartCoreLibrary,
-);
-
-/// TODO(annagrin): record type class is reported incorrectly
-/// in ddc https://github.com/dart-lang/sdk/issues/54609,
-/// remove when fixed.
-Matcher matchRecordTypeClass = anyOf(
-  matchTypeClass,
-  matchClass(name: matchRecordTypeClassName, libraryId: _dartRuntimeLibrary),
-);
-
-Matcher matchClass({dynamic name, String? libraryId}) => isA<Class>()
-    .having((e) => e.name, 'class name', name)
-    .having((e) => e.library, 'library', matchLibraryRef(libraryId));
-
-Matcher matchRecordClassRef = matchClassRef(
-  name: matchRecordClassName,
-  libraryId: _dartCoreLibrary,
-);
-
-/// TODO(annagrin): record type class is reported incorrectly
-/// in ddc https://github.com/dart-lang/sdk/issues/54609,
-/// remove when fixed.
-Matcher matchRecordTypeClassRef = anyOf(
-  matchTypeClassRef,
-  matchClassRef(name: matchRecordTypeClassName, libraryId: _dartRuntimeLibrary),
-);
-Matcher matchTypeClassRef = matchClassRef(
-  name: matchTypeClassName,
-  libraryId: _dartCoreLibrary,
-);
-Matcher matchListClassRef(String type) => matchClassRef(
-  name: matchListClassName(type),
-  libraryId: _matchListLibraryName,
-);
-Matcher matchMapClassRef(String type) =>
-    matchClassRef(name: type, libraryId: _dartJsHelperLibrary);
-Matcher matchSetClassRef(String type) =>
-    matchClassRef(name: type, libraryId: _dartJsHelperLibrary);
-
-Matcher matchClassRef({dynamic name, dynamic libraryId}) => isA<ClassRef>()
-    .having((e) => e.name, 'class ref name', name)
-    .having((e) => e.library, 'library', matchLibraryRef(libraryId));
-
-Matcher matchLibraryRef(dynamic libraryId) => isA<LibraryRef>()
-    .having((e) => e.name, 'library name', libraryId)
-    .having((e) => e.id, 'id', libraryId)
-    .having((e) => e.uri, 'uri', libraryId);
-
-Object? _getValue(InstanceRef instanceRef) {
-  switch (instanceRef.kind) {
-    case InstanceKind.kBool:
-      return instanceRef.valueAsString == 'true';
-    case InstanceKind.kDouble:
-    case InstanceKind.kInt:
-      return double.parse(instanceRef.valueAsString!);
-    case InstanceKind.kString:
-      return instanceRef.valueAsString;
-    default:
-      return null;
-  }
-}
-
-final _dartCoreLibrary = 'dart:core';
-final _dartInterceptorsLibrary = 'dart:_interceptors';
-final _dartJsHelperLibrary = 'dart:_js_helper';
-final _dartRuntimeLibrary = 'dart:_runtime';
-
-final matchRecordClassName = 'Record';
-
-/// Match types for old and new type systems.
-/// - Old type system has
-///   - for arrays: `dart:_interceptors|List`
-///   - for type: `dart:_runtime|_Type`.
-/// - New type system has
-///   - for arrays: dart:_interceptors|JSArray`, and
-///   - for type: `dart:core|Type`.
-/// TODO(annagrin): remove old matchers when DDC enables new type system.
-/// TODO(annagrin): `matchTypeClassName` is reported incorrectly
-/// in ddc https://github.com/dart-lang/sdk/issues/54609,
-final matchTypeClassName = anyOf(['Type', '_Type']);
-final matchRecordTypeClassName = 'RecordType';
-
-Matcher matchListClassName(String elementType) =>
-    anyOf(['JSArray<$elementType>', 'List<$elementType>']);
-
-final _matchListLibraryName = anyOf([
-  _dartInterceptorsLibrary,
-  _dartCoreLibrary,
-]);
diff --git a/dwds/test/integration/instances/common/type_inspection_common.dart b/dwds/test/integration/instances/common/type_inspection_common.dart
deleted file mode 100644
index cc45462..0000000
--- a/dwds/test/integration/instances/common/type_inspection_common.dart
+++ /dev/null
@@ -1,347 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import '../../fixtures/context.dart';
-import '../../fixtures/project.dart';
-import '../../fixtures/utilities.dart';
-import 'test_inspector.dart';
-
-void runTests({
-  required TestSdkConfigurationProvider provider,
-  required CompilationMode compilationMode,
-  required bool canaryFeatures,
-}) {
-  final project = TestProject.testExperiment;
-  final context = TestContext(project, provider);
-  final testInspector = TestInspector(context);
-
-  late VmService service;
-  late Stream<Event> stream;
-  late String isolateId;
-  late ScriptRef mainScript;
-
-  Future<void> onBreakPoint(
-    String breakPointId,
-    Future<void> Function(Event) body,
-  ) => testInspector.onBreakPoint(
-    stream,
-    isolateId,
-    mainScript,
-    breakPointId,
-    body,
-  );
-
-  Future<Obj> getObject(String instanceId) =>
-      service.getObject(isolateId, instanceId);
-
-  Future<Map<Object?, String?>> getDisplayedFields(InstanceRef instanceRef) =>
-      testInspector.getDisplayedFields(isolateId, instanceRef);
-
-  Future<Map<Object?, String?>> getDisplayedGetters(InstanceRef instanceRef) =>
-      testInspector.getDisplayedGetters(isolateId, instanceRef);
-
-  Future<InstanceRef> getInstanceRef(int frame, String expression) =>
-      testInspector.getInstanceRef(isolateId, frame, expression);
-
-  Future<Map<Object?, Object?>> getFields(
-    InstanceRef instanceRef, {
-    int? offset,
-    int? count,
-    int depth = -1,
-  }) => testInspector.getFields(
-    isolateId,
-    instanceRef,
-    offset: offset,
-    count: count,
-    depth: depth,
-  );
-
-  Future<List<Instance>> getElements(String instanceId) =>
-      testInspector.getElements(isolateId, instanceId);
-
-  final matchTypeObjectFields = <String, dynamic>{
-    if (provider.ddcModuleFormat == ModuleFormat.ddc) '_rti': anything,
-  };
-
-  final matchDisplayedTypeObjectFields = <String, dynamic>{
-    if (provider.ddcModuleFormat == ModuleFormat.ddc) '_rti': anything,
-  };
-
-  final matchDisplayedTypeObjectGetters = <String, dynamic>{
-    'hashCode': matches('[0-9]*'),
-    'runtimeType': matchTypeClassName,
-  };
-
-  group('$compilationMode |', () {
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          compilationMode: compilationMode,
-          enableExpressionEvaluation: true,
-          verboseCompiler: provider.verbose,
-          experiments: ['dot-shorthands'],
-          canaryFeatures: canaryFeatures,
-          moduleFormat: provider.ddcModuleFormat,
-        ),
-      );
-      service = context.debugConnection.vmService;
-
-      final vm = await service.getVM();
-      isolateId = vm.isolates!.first.id!;
-      final scripts = await service.getScripts(isolateId);
-
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    setUp(() => setCurrentLogWriter(debug: provider.verbose));
-    tearDown(() => service.resume(isolateId));
-
-    test('String type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, "'1'.runtimeType");
-        expect(instanceRef, matchTypeInstanceRef('String'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('String'));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-      });
-    });
-
-    test('String type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, "'1'.runtimeType");
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('int type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, '1.runtimeType');
-        expect(instanceRef, matchTypeInstanceRef('int'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('int'));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-      });
-    });
-
-    test('int type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, '1.runtimeType');
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('list type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, '<int>[].runtimeType');
-        expect(instanceRef, matchTypeInstanceRef('List<int>'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('List<int>'));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('map type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(
-          frame,
-          '<int, String>{}.runtimeType',
-        );
-        expect(instanceRef, matchTypeInstanceRef('IdentityMap<int, String>'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('IdentityMap<int, String>'));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-      });
-    });
-
-    test('map type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(
-          frame,
-          '<int, String>{}.runtimeType',
-        );
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('set type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, '<int>{}.runtimeType');
-        expect(instanceRef, matchTypeInstanceRef('IdentitySet<int>'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('IdentitySet<int>'));
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-      });
-    });
-
-    test('set type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, '<int>{}.runtimeType');
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('record type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, "(0,'a').runtimeType");
-        expect(instanceRef, matchRecordTypeInstanceRef(length: 2));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchRecordTypeInstance(length: 2));
-        expect(await getElements(instanceId), [
-          matchTypeInstance('int'),
-          matchTypeInstance('String'),
-        ]);
-
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchRecordTypeClass);
-        expect(await getFields(instanceRef, depth: 2), {
-          1: matchTypeObjectFields,
-          2: matchTypeObjectFields,
-        });
-        expect(await getDisplayedFields(instanceRef), {1: 'int', 2: 'String'});
-      });
-    });
-
-    test('record type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(frame, "(0,'a').runtimeType");
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-
-    test('class type', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(
-          frame,
-          "Uri.file('').runtimeType",
-        );
-        expect(instanceRef, matchTypeInstanceRef('_Uri'));
-
-        final instanceId = instanceRef.id!;
-        final instance = await getObject(instanceId);
-        expect(instance, matchTypeInstance('_Uri'));
-        final classId = instanceRef.classRef!.id!;
-        expect(await getObject(classId), matchTypeClass);
-        expect(await getFields(instanceRef, depth: 1), matchTypeObjectFields);
-        expect(
-          await getDisplayedFields(instanceRef),
-          matchDisplayedTypeObjectFields,
-        );
-      });
-    });
-
-    test('class type getters', () async {
-      await onBreakPoint('printSimpleLocalRecord', (Event event) async {
-        final frame = event.topFrame!.index!;
-        final instanceRef = await getInstanceRef(
-          frame,
-          "Uri.file('').runtimeType",
-        );
-
-        expect(
-          await getDisplayedGetters(instanceRef),
-          matchDisplayedTypeObjectGetters,
-        );
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/instances/dot_shorthands_amd_test.dart b/dwds/test/integration/instances/dot_shorthands_amd_test.dart
deleted file mode 100644
index 7ae4963..0000000
--- a/dwds/test/integration/instances/dot_shorthands_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/dot_shorthands_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/dot_shorthands_ddc_library_bundle_test.dart b/dwds/test/integration/instances/dot_shorthands_ddc_library_bundle_test.dart
deleted file mode 100644
index 3559490..0000000
--- a/dwds/test/integration/instances/dot_shorthands_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/dot_shorthands_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/instance_amd_test.dart b/dwds/test/integration/instances/instance_amd_test.dart
deleted file mode 100644
index af28c88..0000000
--- a/dwds/test/integration/instances/instance_amd_test.dart
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/instance_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final moduleFormat = ModuleFormat.amd;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTypeSystemVerificationTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTypeSystemVerificationTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTypeSystemVerificationTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTypeSystemVerificationTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/instance_ddc_library_bundle_test.dart b/dwds/test/integration/instances/instance_ddc_library_bundle_test.dart
deleted file mode 100644
index 002c71c..0000000
--- a/dwds/test/integration/instances/instance_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/instance_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-  final moduleFormat = ModuleFormat.ddc;
-
-  group('canary: true | Frontend Server |', () {
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-      verbose: debug,
-      ddcModuleFormat: moduleFormat,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/instance_inspection_amd_test.dart b/dwds/test/integration/instances/instance_inspection_amd_test.dart
deleted file mode 100644
index 1d526c5..0000000
--- a/dwds/test/integration/instances/instance_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/instance_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/instance_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/instance_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index 93e375d..0000000
--- a/dwds/test/integration/instances/instance_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/instance_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/patterns_inspection_amd_test.dart b/dwds/test/integration/instances/patterns_inspection_amd_test.dart
deleted file mode 100644
index cb52f73..0000000
--- a/dwds/test/integration/instances/patterns_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/patterns_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/patterns_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/patterns_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index e9a5e0f..0000000
--- a/dwds/test/integration/instances/patterns_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/patterns_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/record_inspection_amd_test.dart b/dwds/test/integration/instances/record_inspection_amd_test.dart
deleted file mode 100644
index 0cd64a9..0000000
--- a/dwds/test/integration/instances/record_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/record_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/record_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/record_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index 0201c28..0000000
--- a/dwds/test/integration/instances/record_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/record_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-
-  group('canary: true | Frontend Server |', () {
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/record_type_inspection_amd_test.dart b/dwds/test/integration/instances/record_type_inspection_amd_test.dart
deleted file mode 100644
index 618ef53..0000000
--- a/dwds/test/integration/instances/record_type_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/record_type_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/record_type_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/record_type_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index 3832869..0000000
--- a/dwds/test/integration/instances/record_type_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2024, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/record_type_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-  final canaryFeatures = true;
-
-  group('canary: true | Frontend Server |', () {
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/type_inspection_amd_test.dart b/dwds/test/integration/instances/type_inspection_amd_test.dart
deleted file mode 100644
index 717952e..0000000
--- a/dwds/test/integration/instances/type_inspection_amd_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/type_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: false | Build Daemon |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: false | Frontend Server |', () {
-    final canaryFeatures = false;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/instances/type_inspection_ddc_library_bundle_test.dart b/dwds/test/integration/instances/type_inspection_ddc_library_bundle_test.dart
deleted file mode 100644
index 3756541..0000000
--- a/dwds/test/integration/instances/type_inspection_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2025, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import '../fixtures/context.dart';
-import 'common/type_inspection_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  group('canary: true | Frontend Server |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.frontendServer;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-
-  group('canary: true | Build Daemon |', () {
-    final canaryFeatures = true;
-    final compilationMode = CompilationMode.buildDaemon;
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      canaryFeatures: canaryFeatures,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    runTests(
-      provider: provider,
-      compilationMode: compilationMode,
-      canaryFeatures: canaryFeatures,
-    );
-  });
-}
diff --git a/dwds/test/integration/javascript_builder_test.dart b/dwds/test/integration/javascript_builder_test.dart
deleted file mode 100644
index ce8bcc3..0000000
--- a/dwds/test/integration/javascript_builder_test.dart
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/services/javascript_builder.dart';
-import 'package:test/test.dart';
-
-void main() async {
-  group('JavaScriptBuilder |', () {
-    test('write', () async {
-      expect((JsBuilder()..write('Hello')).build(), 'Hello');
-    });
-
-    test('writeLine', () async {
-      expect((JsBuilder()..writeLine('Hello')).build(), 'Hello\n');
-    });
-
-    test('writeAll with separator', () async {
-      expect(
-        (JsBuilder()..writeAll(['Hello', 'World'], ' ')).build(),
-        'Hello World',
-      );
-    });
-
-    test('writeAll with default separator', () async {
-      expect((JsBuilder()..writeAll(['Hello', 'World'])).build(), 'HelloWorld');
-    });
-
-    test('writeWithIndent', () async {
-      expect((JsBuilder()..writeWithIndent('Hello')).build(), 'Hello');
-    });
-
-    test('writeWithIndent', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.increaseIndent();
-      jsBuilder.writeWithIndent('Hello');
-      jsBuilder.decreaseIndent();
-      jsBuilder.writeWithIndent('World');
-      expect(jsBuilder.build(), '  HelloWorld');
-    });
-
-    test('writeLineWithIndent', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.increaseIndent();
-      jsBuilder.writeLineWithIndent('Hello');
-      jsBuilder.decreaseIndent();
-      jsBuilder.writeLineWithIndent('World');
-      expect(jsBuilder.build(), '  Hello\nWorld\n');
-    });
-
-    test('writeAllLinesWithIndent', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.increaseIndent();
-      jsBuilder.writeMultiLineExpression(['Hello', 'World']);
-      jsBuilder.decreaseIndent();
-      jsBuilder.writeMultiLineExpression(['Hello', 'World']);
-      expect(jsBuilder.build(), 'Hello\n  WorldHello\nWorld');
-    });
-
-    test('writeCallExpression', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeCallExpression(['a1', 'a2'], () => jsBuilder.write('foo'));
-      expect(jsBuilder.build(), 'foo(a1, a2)');
-    });
-
-    test('writeTryCatchExpression', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeTryCatchExpression(() => jsBuilder.write('x'));
-      expect(
-        jsBuilder.build(),
-        'try {\n'
-        '  x\n'
-        '} catch (error) {\n'
-        '  error.name + ": " + error.message;\n'
-        '}',
-      );
-    });
-
-    test('writeTryCatchStatement', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeTryCatchStatement(
-        () => jsBuilder.writeReturnStatement(() => jsBuilder.write('x')),
-      );
-      expect(
-        jsBuilder.build(),
-        'try {\n'
-        '  return x;\n'
-        '} catch (error) {\n'
-        '  return error.name + ": " + error.message;\n'
-        '}',
-      );
-    });
-
-    test('writeReturnStatement', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeReturnStatement(() => jsBuilder.write('x'));
-      expect(jsBuilder.build(), 'return x;');
-    });
-
-    test('writeFunctionDefinition', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeFunctionDefinition(
-        ['a1', 'a2'],
-        () => jsBuilder.writeReturnStatement(() => jsBuilder.write('a1 + a2')),
-      );
-      expect(
-        jsBuilder.build(),
-        'function (a1, a2) {\n'
-        '  return a1 + a2;\n'
-        '}',
-      );
-    });
-
-    test('writeBindExpression', () async {
-      final jsBuilder = JsBuilder();
-      jsBuilder.writeBindExpression(
-        'x',
-        () => jsBuilder.writeFunctionDefinition(
-          [],
-          () => jsBuilder.writeReturnStatement(() => jsBuilder.write('this.a')),
-        ),
-      );
-      expect(
-        jsBuilder.build(),
-        'function () {\n'
-        '  return this.a;\n'
-        '}.bind(x)',
-      );
-    });
-
-    test('createEvalExpression', () async {
-      final expression = JsBuilder.createEvalExpression([
-        'var e = 1;',
-        'return e',
-      ]);
-      expect(
-        expression,
-        'try {\n'
-        '  var e = 1;\n'
-        '  return e;\n'
-        '} catch (error) {\n'
-        '  error.name + ": " + error.message;\n'
-        '}',
-      );
-    });
-
-    test('createEvalStaticFunction', () async {
-      final function = JsBuilder.createEvalStaticFunction(
-        ['function(e, e2) {', '  return e;', '}'],
-        ['e', 'e2'],
-      );
-      expect(
-        function,
-        'function (e, e2) {\n'
-        '  try {\n'
-        '    return function(e, e2) {\n'
-        '      return e;\n'
-        '    }(e, e2);\n'
-        '  } catch (error) {\n'
-        '    return error.name + ": " + error.message;\n'
-        '  }\n'
-        '}',
-      );
-    });
-
-    test('createEvalBoundFunction', () async {
-      final function = JsBuilder.createEvalBoundFunction(
-        ['function(e, e2) {', '  return e;', '}'],
-        ['e', 'e2'],
-      );
-      expect(
-        function,
-        'function (e, e2, __t\$this) {\n'
-        '  try {\n'
-        '    return function (e, e2) {\n'
-        '      return function(e, e2) {\n'
-        '        return e;\n'
-        '      }(e, e2);\n'
-        '    }.bind(__t\$this)(e, e2);\n'
-        '  } catch (error) {\n'
-        '    return error.name + ": " + error.message;\n'
-        '  }\n'
-        '}',
-      );
-    });
-  });
-}
diff --git a/dwds/test/integration/listviews_test.dart b/dwds/test/integration/listviews_test.dart
deleted file mode 100644
index a9a63b1..0000000
--- a/dwds/test/integration/listviews_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2021, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  final context = TestContext(TestProject.test, provider);
-
-  setUpAll(() async {
-    await context.setUp();
-  });
-
-  tearDownAll(() async {
-    await context.tearDown();
-  });
-
-  test('_flutter.listViews', () async {
-    final serviceMethod = '_flutter.listViews';
-    final service = context.debugConnection.vmService;
-    final vm = await service.getVM();
-    final isolates = vm.isolates!;
-
-    final expected = <String, Object>{
-      'views': <Object>[
-        for (final isolate in isolates)
-          <String, Object?>{'id': isolate.id, 'isolate': isolate.toJson()},
-      ],
-    };
-
-    final result = await service.callServiceExtension(serviceMethod, args: {});
-
-    expect(result.json, expected);
-  });
-}
diff --git a/dwds/test/integration/load_strategy_test.dart b/dwds/test/integration/load_strategy_test.dart
deleted file mode 100644
index 6ca17eb..0000000
--- a/dwds/test/integration/load_strategy_test.dart
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 1))
-library;
-
-import 'package:dwds/dwds.dart';
-import 'package:dwds/src/config/tool_configuration.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/fakes.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void main() {
-  group('Load Strategy', () {
-    final project = TestProject.test;
-    final provider = TestSdkConfigurationProvider();
-    tearDownAll(provider.dispose);
-
-    final context = TestContext(project, provider);
-
-    setUpAll(context.setUp);
-    tearDownAll(context.tearDown);
-
-    group(
-      'When the packageConfigLocator does not specify a package config path',
-      () {
-        late final strategy = FakeStrategy(FakeAssetReader());
-
-        test('defaults to "./dart_tool/package_config.json"', () {
-          expect(
-            p.split(strategy.packageConfigPath).join('/'),
-            endsWith('_test/.dart_tool/package_config.json'),
-          );
-        });
-      },
-    );
-
-    group('When a custom package config path is specified', () {
-      late final strategy = FakeStrategy(
-        FakeAssetReader(),
-        packageConfigPath: 'custom/package_config/path',
-      );
-
-      test('uses the specified package config path', () {
-        expect(
-          strategy.packageConfigPath,
-          equals('custom/package_config/path'),
-        );
-      });
-    });
-
-    group('When default build settings defined', () {
-      late final strategy = FakeStrategy(
-        FakeAssetReader(),
-        buildSettings: const TestBuildSettings.dart(),
-      );
-
-      test('uses the default app entrypoint', () {
-        expect(strategy.buildSettings.appEntrypoint, isNull);
-      });
-
-      test('uses the default canary features setting', () {
-        expect(strategy.buildSettings.canaryFeatures, isFalse);
-      });
-
-      test('uses the default flutter app setting', () {
-        expect(strategy.buildSettings.isFlutterApp, isFalse);
-      });
-
-      test('uses the default experiments', () {
-        expect(strategy.buildSettings.experiments, isEmpty);
-      });
-    });
-
-    group('When custom build settings defined', () {
-      final appEntrypoint = Uri.parse('main.dart');
-      final canaryFeatures = true;
-      final isFlutterApp = true;
-      final experiments = ['records'];
-
-      late final strategy = FakeStrategy(
-        FakeAssetReader(),
-        buildSettings: BuildSettings(
-          appEntrypoint: appEntrypoint,
-          isFlutterApp: isFlutterApp,
-          canaryFeatures: canaryFeatures,
-          experiments: experiments,
-        ),
-      );
-
-      test('uses the specified app entrypoint', () {
-        expect(strategy.buildSettings.appEntrypoint, appEntrypoint);
-      });
-
-      test('uses the specified canary features setting', () {
-        expect(strategy.buildSettings.canaryFeatures, canaryFeatures);
-      });
-
-      test('uses the specified flutter app setting', () {
-        expect(strategy.buildSettings.isFlutterApp, isFlutterApp);
-      });
-
-      test('uses the specified experiments', () {
-        expect(strategy.buildSettings.experiments, experiments);
-      });
-    });
-
-    group('Global load strategy with default build settings', () {
-      test('provides build settings', () {
-        final loadStrategy = globalToolConfiguration.loadStrategy;
-        expect(
-          loadStrategy.buildSettings.appEntrypoint,
-          project.dartEntryFilePackageUri,
-        );
-        expect(loadStrategy.buildSettings.canaryFeatures, isFalse);
-        expect(loadStrategy.buildSettings.isFlutterApp, isFalse);
-        expect(loadStrategy.buildSettings.experiments, isEmpty);
-      });
-    });
-  });
-
-  group('Global load Strategy with custom build settings ', () {
-    final canaryFeatures = true;
-    final isFlutterApp = true;
-    final experiments = ['records'];
-
-    final project = TestProject.test;
-    final provider = TestSdkConfigurationProvider(
-      canaryFeatures: canaryFeatures,
-    );
-    tearDownAll(provider.dispose);
-
-    final context = TestContext(project, provider);
-
-    for (final compilationMode in CompilationMode.values.where(
-      (mode) => !mode.usesDdcModulesOnly,
-    )) {
-      group('compiled with ${compilationMode.name}', () {
-        setUpAll(() async {
-          await context.setUp(
-            testSettings: TestSettings(
-              compilationMode: compilationMode,
-              canaryFeatures: canaryFeatures,
-              isFlutterApp: isFlutterApp,
-              experiments: experiments,
-            ),
-          );
-        });
-
-        tearDownAll(context.tearDown);
-
-        test('provides custom build settings', () {
-          final loadStrategy = globalToolConfiguration.loadStrategy;
-          expect(
-            loadStrategy.buildSettings.appEntrypoint,
-            project.dartEntryFilePackageUri,
-          );
-          expect(loadStrategy.buildSettings.canaryFeatures, canaryFeatures);
-          expect(loadStrategy.buildSettings.isFlutterApp, isFlutterApp);
-          expect(loadStrategy.buildSettings.experiments, experiments);
-        });
-      });
-    }
-  });
-}
diff --git a/dwds/test/integration/location_test.dart b/dwds/test/integration/location_test.dart
deleted file mode 100644
index e3a9143..0000000
--- a/dwds/test/integration/location_test.dart
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2020 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/fakes.dart';
-import 'fixtures/utilities.dart';
-
-final sourceMapContents =
-    '{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'
-    '"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUwB,IAAtB,WAAM;AAKJ,'
-    'IAHF,4BAAkB,aAAa,SAAC,GAAG;AACb,MAApB,WAAM;AACN,YAAgC,+CAAO,AAAK,oBAAO,'
-    'yCAAC,WAAW;IAChE;AAC0D,IAA3D,AAAS,AAAK,0DAAO;AAAe,kBAAO;;;AAEvC,gBAAQ;'
-    'AAGV,IAFI,kCAAqC,QAAC;AACX,MAA/B,WAAM,AAAwB,0BAAP,QAAF,AAAE,KAAK,GAAP;'
-    ';EAEzB","file":"main.ddc.js"}';
-
-void main() async {
-  const lines = 100;
-  const lineLength = 150;
-  final assetReader = FakeAssetReader(sourceMap: sourceMapContents);
-  final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-    loadStrategy: MockLoadStrategy(assetReader),
-  );
-  setGlobalsForTesting(toolConfiguration: toolConfiguration);
-  final dartUri = DartUri('org-dartlang-app://web/main.dart');
-
-  final modules = FakeModules(module: _module);
-  final locations = Locations(assetReader, modules, '');
-  await locations.initialize('fake_entrypoint');
-
-  group('JS locations |', () {
-    const fakeRuntimeScriptId = '12';
-
-    group('location |', () {
-      test('is zero based', () {
-        final loc = JsLocation.fromZeroBased(
-          _module,
-          0,
-          0,
-          fakeRuntimeScriptId,
-        );
-        expect(loc, _matchJsLocation(0, 0));
-      });
-
-      test('can compare to other location', () {
-        final loc00 = JsLocation.fromZeroBased(
-          _module,
-          0,
-          0,
-          fakeRuntimeScriptId,
-        );
-        final loc01 = JsLocation.fromZeroBased(
-          _module,
-          0,
-          1,
-          fakeRuntimeScriptId,
-        );
-        final loc10 = JsLocation.fromZeroBased(
-          _module,
-          1,
-          0,
-          fakeRuntimeScriptId,
-        );
-        final loc11 = JsLocation.fromZeroBased(
-          _module,
-          1,
-          1,
-          fakeRuntimeScriptId,
-        );
-
-        expect(loc00.compareTo(loc01), isNegative);
-        expect(loc00.compareTo(loc10), isNegative);
-        expect(loc00.compareTo(loc10), isNegative);
-        expect(loc00.compareTo(loc11), isNegative);
-
-        expect(loc00.compareTo(loc00), isZero);
-        expect(loc11.compareTo(loc00), isPositive);
-      });
-    });
-
-    group('best location |', () {
-      test('does not return location for setup code', () async {
-        final location = await locations.locationForJs(_module, 0, 0);
-        expect(location, isNull);
-      });
-
-      test('prefers precise match', () async {
-        final location = await locations.locationForJs(_module, 37, 0);
-        expect(location, _matchLocationForJs(37, 0));
-      });
-
-      test('finds a match in the beginning of the line', () async {
-        final location = await locations.locationForJs(_module, 39, 4);
-        expect(location, _matchLocationForJs(39, 0));
-      });
-
-      test('finds a match in the middle of the line', () async {
-        final location = await locations.locationForJs(_module, 39, 10);
-        expect(location, _matchLocationForJs(39, 6));
-      });
-
-      test('finds a match on a previous line', () async {
-        final location = await locations.locationForJs(_module, 44, 0);
-        expect(location, _matchLocationForJs(43, 18));
-      });
-
-      test(
-        'finds a match on a previous line with a closer match after',
-        () async {
-          final location = await locations.locationForJs(
-            _module,
-            44,
-            lineLength - 1,
-          );
-          expect(location, _matchLocationForJs(43, 18));
-        },
-      );
-
-      test('finds a match on the last line', () async {
-        final location = await locations.locationForJs(
-          _module,
-          lines - 1,
-          lineLength - 1,
-        );
-        expect(location, _matchLocationForJs(50, 2));
-      });
-
-      test('finds a match on invalid line', () async {
-        final location = await locations.locationForJs(
-          _module,
-          lines,
-          lineLength - 1,
-        );
-        expect(location, _matchLocationForJs(50, 2));
-      });
-
-      test('finds a match on invalid column on the same line', () async {
-        final location = await locations.locationForJs(_module, 50, lineLength);
-        expect(location, _matchLocationForJs(50, 2));
-      });
-
-      test('finds a match on invalid column on a previous line', () async {
-        final location = await locations.locationForJs(
-          _module,
-          lines - 1,
-          lineLength,
-        );
-        expect(location, _matchLocationForJs(50, 2));
-      });
-    });
-  });
-
-  group('Dart locations |', () {
-    group('location |', () {
-      test('is one based', () async {
-        final loc = DartLocation.fromZeroBased(dartUri, 0, 0);
-        expect(loc, _matchDartLocation(1, 1));
-      });
-
-      test('can compare to other locations', () async {
-        final loc00 = DartLocation.fromZeroBased(dartUri, 0, 0);
-        final loc01 = DartLocation.fromZeroBased(dartUri, 0, 1);
-        final loc10 = DartLocation.fromZeroBased(dartUri, 1, 0);
-        final loc11 = DartLocation.fromZeroBased(dartUri, 1, 1);
-
-        expect(loc00.compareTo(loc01), isNegative);
-        expect(loc00.compareTo(loc10), isNegative);
-        expect(loc00.compareTo(loc10), isNegative);
-        expect(loc00.compareTo(loc11), isNegative);
-
-        expect(loc00.compareTo(loc00), isZero);
-        expect(loc11.compareTo(loc00), isPositive);
-      });
-    });
-
-    group('best location |', () {
-      test(
-        'does not return location for dart lines not mapped to JS',
-        () async {
-          final location = await locations.locationForDart(dartUri, 0, 0);
-          expect(location, isNull);
-        },
-      );
-
-      test('returns location after on the same line', () async {
-        final location = await locations.locationForDart(dartUri, 11, 0);
-        expect(location, _matchLocationForDart(11, 3));
-      });
-
-      test('return null on invalid line', () async {
-        final location = await locations.locationForDart(dartUri, lines, 0);
-        expect(location, isNull);
-      });
-
-      test('return null on invalid column', () async {
-        final location = await locations.locationForDart(
-          dartUri,
-          lines - 1,
-          lineLength,
-        );
-        expect(location, isNull);
-      });
-    });
-  });
-}
-
-Matcher _matchLocationForDart(int line, int column) => isA<Location>().having(
-  (l) => l.dartLocation,
-  'dartLocation',
-  _matchDartLocation(line, column),
-);
-
-Matcher _matchLocationForJs(int line, int column) => isA<Location>().having(
-  (l) => l.jsLocation,
-  'jsLocation',
-  _matchJsLocation(line, column),
-);
-
-Matcher _matchDartLocation(int line, int column) => isA<DartLocation>()
-    .having((l) => l.line, 'line', line)
-    .having((l) => l.column, 'column', column);
-
-Matcher _matchJsLocation(int line, int column) => isA<JsLocation>()
-    .having((l) => l.line, 'line', line)
-    .having((l) => l.column, 'column', column);
-
-const _module = 'packages/module';
-const _serverPath = 'web/main.dart';
-const _sourceMapPath = 'packages/module.js.map';
-
-class MockLoadStrategy extends FakeStrategy {
-  MockLoadStrategy(super.assetReader);
-
-  @override
-  Future<String?> moduleForServerPath(
-    String entrypoint,
-    String serverPath,
-  ) async => _module;
-
-  @override
-  Future<String> serverPathForModule(String entrypoint, String module) async =>
-      _serverPath;
-
-  @override
-  Future<String> sourceMapPathForModule(
-    String entrypoint,
-    String module,
-  ) async => _sourceMapPath;
-
-  @override
-  String serverPathForAppUri(String appUri) => _serverPath;
-}
diff --git a/dwds/test/integration/metadata/class_test.dart b/dwds/test/integration/metadata/class_test.dart
deleted file mode 100644
index d03d307..0000000
--- a/dwds/test/integration/metadata/class_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/debugging/metadata/class.dart';
-import 'package:test/test.dart';
-
-void main() {
-  test('Gracefully handles invalid length objects', () async {
-    ClassMetaData createMetadata(dynamic length) => ClassMetaData(
-      length: length,
-      runtimeKind: RuntimeObjectKind.object,
-      classRef: classRefForUnknown,
-    );
-
-    var metadata = createMetadata(null);
-    expect(metadata.length, isNull);
-
-    metadata = createMetadata(<dynamic, dynamic>{});
-    expect(metadata.length, isNull);
-
-    metadata = createMetadata('{}');
-    expect(metadata.length, isNull);
-
-    metadata = createMetadata(0);
-    expect(metadata.length, equals(0));
-  });
-}
diff --git a/dwds/test/integration/metadata_test.dart b/dwds/test/integration/metadata_test.dart
deleted file mode 100644
index 50d12c8..0000000
--- a/dwds/test/integration/metadata_test.dart
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:convert';
-
-import 'package:dwds/src/debugging/metadata/module_metadata.dart';
-import 'package:dwds/src/debugging/metadata/provider.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/fakes.dart';
-import 'fixtures/utilities.dart';
-
-const _emptySourceMetadata =
-    '{"version":"1.0.0","name":"web/main","closureName":"load__web__main",'
-    '"sourceMapUri":"foo/web/main.ddc.js.map",'
-    '"moduleUri":"foo/web/main.ddc.js",'
-    '"libraries":[{"name":"main",'
-    '"importUri":"org-dartlang-app:///web/main.dart",'
-    '"fileUri":"org-dartlang-app:///web/main.dart","partUris":[]}]}\n'
-    '// intentionally empty: package blah has no dart sources';
-
-const _fileUriMetadata =
-    '{"version":"1.0.0","name":"web/main","closureName":"load__web__main",'
-    '"sourceMapUri":"foo/web/main.ddc.js.map",'
-    '"moduleUri":"foo/web/main.ddc.js",'
-    '"libraries":[{"name":"main",'
-    '"importUri":"file:/Users/foo/blah/sample/lib/bar.dart",'
-    '"fileUri":"org-dartlang-app:///web/main.dart","partUris":[]}]}\n'
-    '// intentionally empty: package blah has no dart sources';
-
-void main() {
-  final toolConfiguration = TestToolConfiguration.withLoadStrategy(
-    loadStrategy: FakeStrategy(FakeAssetReader()),
-  );
-  setGlobalsForTesting(toolConfiguration: toolConfiguration);
-  test('can parse metadata with empty sources', () async {
-    final provider = MetadataProvider(
-      'foo.bootstrap.js',
-      FakeAssetReader(metadata: _emptySourceMetadata),
-    );
-    expect(
-      await provider.libraries,
-      contains('org-dartlang-app:///web/main.dart'),
-    );
-  });
-
-  test('throws on metadata with absolute import uris', () async {
-    final provider = MetadataProvider(
-      'foo.bootstrap.js',
-      FakeAssetReader(metadata: _fileUriMetadata),
-    );
-    await expectLater(
-      provider.libraries,
-      throwsA(const TypeMatcher<AbsoluteImportUriException>()),
-    );
-  });
-
-  test(
-    'module name exists if useModuleName and otherwise use module uri',
-    () async {
-      final provider = MetadataProvider(
-        'foo.bootstrap.js',
-        FakeAssetReader(metadata: _emptySourceMetadata),
-      );
-      final modulePath = 'foo/web/main.ddc.js';
-      final moduleName = 'web/main';
-      final module = moduleName;
-      expect(
-        await provider.scriptToModule,
-        predicate<Map<String, String>>(
-          (scriptToModule) =>
-              !scriptToModule.values.any((value) => value == modulePath),
-        ),
-      );
-      expect(await provider.moduleToSourceMap, {
-        module: 'foo/web/main.ddc.js.map',
-      });
-      expect(await provider.modulePathToModule, {modulePath: module});
-      expect(await provider.moduleToModulePath, {module: modulePath});
-      expect(await provider.modules, {module});
-    },
-  );
-
-  test('creates metadata from json', () async {
-    const json = {
-      'version': '1.0.0',
-      'name': 'web/main',
-      'closureName': 'load__web__main',
-      'sourceMapUri': 'foo/web/main.ddc.js.map',
-      'moduleUri': 'foo/web/main.ddc.js',
-      'libraries': [
-        {
-          'name': 'main',
-          'importUri': 'org-dartlang-app:///web/main.dart',
-          'partUris': ['org-dartlang-app:///web/main.dart'],
-        },
-      ],
-    };
-
-    final metadata = ModuleMetadata.fromJson(json);
-    expect(metadata.version, '1.0.0');
-    expect(metadata.name, 'web/main');
-    expect(metadata.closureName, 'load__web__main');
-    expect(metadata.sourceMapUri, 'foo/web/main.ddc.js.map');
-    expect(metadata.moduleUri, 'foo/web/main.ddc.js');
-    final libraries = metadata.libraries;
-    expect(libraries.length, 1);
-    for (final lib in libraries.values) {
-      expect(lib.name, 'main');
-      expect(lib.importUri, 'org-dartlang-app:///web/main.dart');
-      final parts = lib.partUris;
-      expect(parts.length, 1);
-      expect(parts[0], 'org-dartlang-app:///web/main.dart');
-    }
-  });
-
-  String createMetadataContents(
-    Map<String, List<String>> moduleToLibraries,
-    Map<String, List<String>> libraryToParts,
-  ) {
-    final contents = StringBuffer();
-    for (final MapEntry(key: module, value: libraries)
-        in moduleToLibraries.entries) {
-      final moduleMetadata = ModuleMetadata(
-        module,
-        'load__web__$module',
-        'foo/web/$module.ddc.js.map',
-        'foo/web/$module.ddc.js',
-      );
-      for (final library in libraries) {
-        moduleMetadata.addLibrary(
-          LibraryMetadata(library, library, libraryToParts[library] ?? []),
-        );
-      }
-      contents.writeln(json.encode(moduleMetadata.toJson()));
-    }
-    contents.write('// intentionally empty: ...');
-    return contents.toString();
-  }
-
-  Future<void> validateProvider(
-    MetadataProvider provider,
-    Map<String, List<String>> moduleToLibraries,
-    Map<String, List<String>> libraryToParts,
-  ) async {
-    final expectedScriptToModule = <String, String>{};
-    final expectedModuleToSourceMap = <String, String>{};
-    final expectedModulePathToModule = <String, String>{};
-    final expectedModules = <String>{};
-    for (final MapEntry(key: module, value: libraries)
-        in moduleToLibraries.entries) {
-      for (final library in libraries) {
-        expectedScriptToModule[library] = module;
-        final parts = libraryToParts[library];
-        if (parts != null) {
-          for (final part in parts) {
-            expectedScriptToModule[part] = module;
-          }
-        }
-      }
-      expectedModuleToSourceMap[module] = 'foo/web/$module.ddc.js.map';
-      expectedModulePathToModule['foo/web/$module.ddc.js'] = module;
-      expectedModules.add(module);
-    }
-
-    final scriptToModule = await provider.scriptToModule;
-    for (final MapEntry(key: script, value: module)
-        in expectedScriptToModule.entries) {
-      expect(scriptToModule[script], module);
-    }
-
-    final moduleToSourceMap = await provider.moduleToSourceMap;
-    for (final MapEntry(key: module, value: sourceMap)
-        in expectedModuleToSourceMap.entries) {
-      expect(moduleToSourceMap[module], sourceMap);
-    }
-
-    final modulePathToModule = await provider.modulePathToModule;
-    for (final MapEntry(key: modulePath, value: module)
-        in expectedModulePathToModule.entries) {
-      expect(modulePathToModule[modulePath], module);
-    }
-
-    expect(await provider.modules, containsAll(expectedModules));
-  }
-
-  test('reinitialize produces correct ModifiedModuleReport', () async {
-    const moduleToLibraries = <String, List<String>>{
-      'm1': [
-        'org-dartlang-app:///web/l1.dart',
-        'org-dartlang-app:///web/l2.dart',
-      ],
-      'm2': [
-        'org-dartlang-app:///web/l3.dart',
-        'org-dartlang-app:///web/l4.dart',
-      ],
-      'm3': [
-        'org-dartlang-app:///web/l5.dart',
-        'org-dartlang-app:///web/l6.dart',
-      ],
-    };
-    const libraryToParts = <String, List<String>>{
-      'org-dartlang-app:///web/l1.dart': ['org-dartlang-app:///web/l1_p1.dart'],
-      'org-dartlang-app:///web/l3.dart': ['org-dartlang-app:///web/l3_p1.dart'],
-    };
-    final assetReader = FakeAssetReader(
-      metadata: createMetadataContents(moduleToLibraries, libraryToParts),
-    );
-    final provider = MetadataProvider('foo.bootstrap.js', assetReader);
-    await validateProvider(provider, moduleToLibraries, libraryToParts);
-
-    const newModuleToLibraries = <String, List<String>>{
-      'm1': [
-        'org-dartlang-app:///web/l1.dart',
-        'org-dartlang-app:///web/l2.dart',
-      ],
-      'm3': ['org-dartlang-app:///web/l3.dart'],
-      'm4': [
-        'org-dartlang-app:///web/l4.dart',
-        'org-dartlang-app:///web/l7.dart',
-      ],
-    };
-    const newLibraryToParts = <String, List<String>>{
-      'org-dartlang-app:///web/l2.dart': ['org-dartlang-app:///web/l1_p1.dart'],
-      'org-dartlang-app:///web/l3.dart': ['org-dartlang-app:///web/l3_p2.dart'],
-      'org-dartlang-app:///web/l7.dart': ['org-dartlang-app:///web/l7_p1.dart'],
-    };
-    const reloadedModulesToLibraries = <String, List<String>>{
-      'm3': ['org-dartlang-app:///web/l3.dart'],
-      'm4': [
-        'org-dartlang-app:///web/l4.dart',
-        'org-dartlang-app:///web/l7.dart',
-      ],
-    };
-    assetReader.metadata = createMetadataContents(
-      newModuleToLibraries,
-      newLibraryToParts,
-    );
-    final modifiedModuleReport = await provider.reinitializeAfterHotReload(
-      reloadedModulesToLibraries,
-    );
-    expect(modifiedModuleReport.deletedModules, ['m2']);
-    expect(
-      modifiedModuleReport.deletedLibraries,
-      unorderedEquals([
-        'org-dartlang-app:///web/l5.dart',
-        'org-dartlang-app:///web/l6.dart',
-      ]),
-    );
-    expect(modifiedModuleReport.reloadedModules, ['m3', 'm4']);
-    expect(
-      modifiedModuleReport.reloadedLibraries,
-      unorderedEquals([
-        'org-dartlang-app:///web/l3.dart',
-        'org-dartlang-app:///web/l4.dart',
-        'org-dartlang-app:///web/l7.dart',
-      ]),
-    );
-    expect(modifiedModuleReport.modifiedModules, ['m2', 'm3', 'm4']);
-    expect(
-      modifiedModuleReport.modifiedLibraries,
-      unorderedEquals([
-        'org-dartlang-app:///web/l3.dart',
-        'org-dartlang-app:///web/l4.dart',
-        'org-dartlang-app:///web/l5.dart',
-        'org-dartlang-app:///web/l6.dart',
-        'org-dartlang-app:///web/l7.dart',
-      ]),
-    );
-    await validateProvider(provider, newModuleToLibraries, newLibraryToParts);
-  });
-}
diff --git a/dwds/test/integration/objects_test.dart b/dwds/test/integration/objects_test.dart
deleted file mode 100644
index 4d650fd..0000000
--- a/dwds/test/integration/objects_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/utilities/objects.dart';
-import 'package:test/test.dart';
-import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
-
-void main() {
-  group('Property', () {
-    final exampleMap = {'objectId': '1234', 'value': 'abcd'};
-
-    test('from a map', () {
-      // Verify that we behave the same whether created from a Map
-      // or from a RemoteObject.
-      final property = Property({'name': 'prop', 'value': exampleMap});
-      expect(property.rawValue, exampleMap);
-      final value = property.value!;
-      expect(value.objectId, '1234');
-      expect(value.value, 'abcd');
-      expect(property.name, 'prop');
-    });
-    test('from a RemoteObject', () {
-      final remoteObject = RemoteObject({'objectId': '1234', 'value': 'abcd'});
-      final property = Property({'name': 'prop', 'value': remoteObject});
-      expect(property.rawValue, remoteObject);
-      final value = property.value!;
-      expect(value.objectId, '1234');
-      expect(value.value, 'abcd');
-      expect(property.name, 'prop');
-    });
-
-    test('stripping the "Symbol(" from a private field', () {
-      final property = Property({
-        'name': 'Symbol(_privateThing)',
-        'value': exampleMap,
-      });
-      expect(property.name, '_privateThing');
-    });
-  });
-}
diff --git a/dwds/test/integration/package_uri_mapper_test.dart b/dwds/test/integration/package_uri_mapper_test.dart
deleted file mode 100644
index 8d8e895..0000000
--- a/dwds/test/integration/package_uri_mapper_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/dwds.dart';
-import 'package:file/local.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import 'fixtures/project.dart';
-
-void main() {
-  final project = TestProject.testPackage();
-
-  for (final useDebuggerModuleNames in [true, false]) {
-    group('Package uri mapper with debugger module names: '
-        ' $useDebuggerModuleNames |', () {
-      final fileSystem = const LocalFileSystem();
-
-      final packageUri = Uri(
-        scheme: 'package',
-        path: '${project.packageName}/test_library.dart',
-      );
-
-      final serverPath = useDebuggerModuleNames
-          ? 'packages/${project.packageDirectory}/lib/test_library.dart'
-          : '/packages/${project.packageName}/test_library.dart';
-
-      final resolvedPath = '${project.packageDirectory}/lib/test_library.dart';
-
-      late final PackageUriMapper packageUriMapper;
-      setUpAll(() async {
-        await project.setUp();
-        // Note: Run `dart pub upgrade` before the test cases to fix
-        // https://github.com/dart-lang/webdev/issues/1834:
-        await Process.run('dart', [
-          'pub',
-          'upgrade',
-        ], workingDirectory: project.absolutePackageDirectory);
-
-        final packageConfigFile = Uri.file(
-          p.join(
-            project.absolutePackageDirectory,
-            '.dart_tool',
-            'package_config.json',
-          ),
-        );
-
-        packageUriMapper = await PackageUriMapper.create(
-          fileSystem,
-          packageConfigFile,
-          useDebuggerModuleNames: useDebuggerModuleNames,
-        );
-      });
-
-      tearDownAll(project.tearDown);
-
-      test('Can convert package urls to server paths', () {
-        expect(packageUriMapper.packageUriToServerPath(packageUri), serverPath);
-      });
-
-      test('Can convert server paths to file paths', () {
-        expect(
-          packageUriMapper.serverPathToResolvedUri(serverPath),
-          isA<Uri>()
-              .having((uri) => uri.scheme, 'scheme', 'file')
-              .having((uri) => uri.path, 'path', endsWith(resolvedPath)),
-        );
-      });
-    });
-  }
-}
diff --git a/dwds/test/integration/parts_evaluate_amd_test.dart b/dwds/test/integration/parts_evaluate_amd_test.dart
deleted file mode 100644
index 132ae9b..0000000
--- a/dwds/test/integration/parts_evaluate_amd_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_parts_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-
-  group('Frontend Server |', () {
-    group('Context with parts |', () {
-      for (final indexBaseMode in IndexBaseMode.values) {
-        group(
-          'with ${indexBaseMode.name} |',
-          () {
-            testAll(
-              provider: provider,
-              compilationMode: CompilationMode.frontendServer,
-              indexBaseMode: indexBaseMode,
-              useDebuggerModuleNames: true,
-            );
-          },
-          skip:
-              // https://github.com/dart-lang/sdk/issues/49277
-              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-        );
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart b/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart
deleted file mode 100644
index d99e21b..0000000
--- a/dwds/test/integration/parts_evaluate_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Tags(['daily'])
-@TestOn('vm')
-@Timeout(Duration(minutes: 5))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'evaluate_parts_common.dart';
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-
-void main() async {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    ddcModuleFormat: ModuleFormat.ddc,
-    canaryFeatures: true,
-  );
-  tearDownAll(provider.dispose);
-
-  group('Build Daemon |', () {
-    testAll(provider: provider, compilationMode: CompilationMode.buildDaemon);
-  });
-
-  group('Frontend Server |', () {
-    group('Context with parts |', () {
-      for (final indexBaseMode in IndexBaseMode.values) {
-        group(
-          'with ${indexBaseMode.name} |',
-          () {
-            testAll(
-              provider: provider,
-              compilationMode: CompilationMode.frontendServer,
-              indexBaseMode: indexBaseMode,
-              useDebuggerModuleNames: true,
-            );
-          },
-          skip:
-              // https://github.com/dart-lang/sdk/issues/49277
-              indexBaseMode == IndexBaseMode.base && Platform.isWindows,
-        );
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/readers/frontend_server_asset_reader_test.dart b/dwds/test/integration/readers/frontend_server_asset_reader_test.dart
deleted file mode 100644
index e6a5793..0000000
--- a/dwds/test/integration/readers/frontend_server_asset_reader_test.dart
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/src/readers/frontend_server_asset_reader.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:dwds_test_common/utilities.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-import '../fixtures/project.dart';
-
-final fixturesDir = absolutePath(
-  pathFromDwds: p.join('test', 'integration', 'fixtures'),
-);
-
-void main() {
-  late FrontendServerAssetReader assetReader;
-  late Directory tempFixtures;
-  late File jsonOriginal;
-  late File mapOriginal;
-  late String packagesDir;
-
-  final testProject = TestProject.test;
-
-  Future<void> createTempFixtures() async {
-    tempFixtures = await Directory.systemTemp.createTemp('dwds_test_fixtures');
-    await tempFixtures.create();
-    jsonOriginal = await File(p.join(fixturesDir, 'main.dart.dill.json'))
-        .copy(p.join(tempFixtures.path, 'main.dart.dill.json'));
-    mapOriginal = await File(p.join(fixturesDir, 'main.dart.dill.map'))
-        .copy(p.join(tempFixtures.path, 'main.dart.dill.map'));
-  }
-
-  setUp(() async {
-    await testProject.setUp();
-    packagesDir = testProject.absolutePackageDirectory;
-    final sdkLayout = TestSdkLayout.defaultSdkLayout;
-    await Process.run(sdkLayout.dartPath, [
-      'pub',
-      'upgrade',
-    ], workingDirectory: packagesDir);
-    await createTempFixtures();
-    assetReader = FrontendServerAssetReader(
-      outputPath: p.join(tempFixtures.path, 'main.dart.dill'),
-      packageRoot: packagesDir,
-    );
-    assetReader.updateCaches();
-  });
-
-  tearDown(() async {
-    await testProject.tearDown();
-    if (await tempFixtures.exists()) await tempFixtures.delete(recursive: true);
-  });
-
-  group('FrontendServerAssetReader', () {
-    group('sources', () {
-      test('as packages path can be read', () async {
-        final result = await assetReader.dartSourceContents(
-          'packages/path/path.dart',
-        );
-        expect(result, isNotNull);
-      });
-
-      test('as relative path can be read', () async {
-        final result = await assetReader.dartSourceContents('lib/library.dart');
-        expect(result, isNotNull);
-      });
-
-      test('are null if the path does not exist', () async {
-        final result = await assetReader.dartSourceContents('foo/blah.dart');
-        expect(result, isNull);
-      });
-    });
-
-    group('source maps', () {
-      test('can be read', () async {
-        final result = await assetReader.sourceMapContents(
-          'web/main.dart.lib.js.map',
-        );
-        expect(result, isNotNull);
-      });
-
-      test('are cached', () async {
-        // Remove the underlying fixtures.
-        await tempFixtures.delete(recursive: true);
-
-        final cachedResult = await assetReader.sourceMapContents(
-          'web/main.dart.lib.js.map',
-        );
-        expect(cachedResult, isNotNull);
-      });
-
-      test('are null if the path does not exist', () async {
-        final result = await assetReader.sourceMapContents(
-          'web/foo.dart.lib.js.map',
-        );
-        expect(result, isNull);
-      });
-
-      test('are updated with new incremental results', () async {
-        final missingResult = await assetReader.sourceMapContents(
-          'web/foo.dart.lib.js.map',
-        );
-        expect(missingResult, isNull);
-
-        // Update fixture.
-        await File(p.join(tempFixtures.path, 'main.dart.dill.incremental.json'))
-            .writeAsString(
-              (await jsonOriginal.readAsString()).replaceAll(
-                'web/main.dart.lib.js',
-                'web/foo.dart.lib.js',
-              ),
-            );
-        await File(p.join(tempFixtures.path, 'main.dart.dill.incremental.map'))
-            .writeAsString(
-              (await mapOriginal.readAsString()).replaceAll(
-                'web/main.dart.lib.js',
-                'web/foo.dart.lib.js',
-              ),
-            );
-
-        assetReader.updateCaches();
-
-        final newResult = await assetReader.sourceMapContents(
-          'web/foo.dart.lib.js.map',
-        );
-        expect(newResult, isNotNull);
-      });
-    });
-  });
-}
diff --git a/dwds/test/integration/refresh_amd_test.dart b/dwds/test/integration/refresh_amd_test.dart
deleted file mode 100644
index f4ffaff..0000000
--- a/dwds/test/integration/refresh_amd_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2026, 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.
-
-/// Tests that require a fresh context to run, and can interfere with other
-/// tests.
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'refresh_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider();
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/refresh_common.dart b/dwds/test/integration/refresh_common.dart
deleted file mode 100644
index b4a2f2a..0000000
--- a/dwds/test/integration/refresh_common.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.test, provider);
-
-  group('fresh context', () {
-    late VmServiceInterface service;
-    late VM vm;
-    setUpAll(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          verboseCompiler: provider.verbose,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      service = context.service;
-      vm = await service.getVM();
-    });
-
-    tearDownAll(() async {
-      await context.tearDown();
-    });
-
-    test('can add and remove after a refresh', () async {
-      final stream = service.onEvent('Isolate');
-      // Wait for the page to be fully loaded before refreshing.
-      await Future<void>.delayed(const Duration(seconds: 1));
-      // Now wait for the shutdown event.
-      final exitEvent = stream.firstWhere(
-        (e) => e.kind != EventKind.kIsolateExit,
-      );
-      await context.webDriver.refresh();
-      await exitEvent;
-      // Wait for the refresh to propagate through.
-      final isolateStart = await stream.firstWhere(
-        (e) => e.kind != EventKind.kIsolateStart,
-      );
-      final isolateId = isolateStart.isolate!.id!;
-      final refreshedScriptList = await service.getScripts(isolateId);
-      final refreshedMain = refreshedScriptList.scripts!.lastWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-      final bpLine = await context.findBreakpointLine(
-        'printHelloWorld',
-        isolateId,
-        refreshedMain,
-      );
-      final bp = await service.addBreakpoint(
-        isolateId,
-        refreshedMain.id!,
-        bpLine,
-      );
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      expect(isolate.breakpoints, [bp]);
-      expect(bp.id, isNotNull);
-      await service.removeBreakpoint(isolateId, bp.id!);
-      expect(isolate.breakpoints, isEmpty);
-    });
-  });
-}
diff --git a/dwds/test/integration/refresh_ddc_library_bundle_test.dart b/dwds/test/integration/refresh_ddc_library_bundle_test.dart
deleted file mode 100644
index 6820f64..0000000
--- a/dwds/test/integration/refresh_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2026, 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.
-
-/// Tests that require a fresh context to run, and can interfere with other
-/// tests.
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'refresh_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/run_request_common.dart b/dwds/test/integration/run_request_common.dart
deleted file mode 100644
index 9c35903..0000000
--- a/dwds/test/integration/run_request_common.dart
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-import 'package:vm_service_interface/vm_service_interface.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.test, provider);
-
-  group('while debugger is attached', () {
-    late VmServiceInterface service;
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          autoRun: false,
-          verboseCompiler: provider.verbose,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-      service = context.service;
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-
-    test('can resume while paused at the start', () async {
-      final vm = await service.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      expect(isolate.pauseEvent!.kind, EventKind.kPauseStart);
-      final stream = service.onEvent('Debug');
-      final resumeCompleter = Completer<void>();
-      // The underlying stream is a broadcast stream so we need to add a
-      // listener before calling resume so that we don't miss events.
-      unawaited(
-        stream.firstWhere((event) => event.kind == EventKind.kResume).then((_) {
-          resumeCompleter.complete();
-        }),
-      );
-      await service.resume(isolate.id!);
-      await resumeCompleter.future;
-      expect(isolate.pauseEvent!.kind, EventKind.kResume);
-    });
-
-    test('correctly sets the isolate pauseEvent', () async {
-      final vm = await service.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      expect(isolate.pauseEvent!.kind, EventKind.kPauseStart);
-      final stream = service.onEvent('Debug');
-      context.appConnection.runMain();
-      await stream.firstWhere((event) => event.kind == EventKind.kResume);
-      expect(isolate.pauseEvent!.kind, EventKind.kResume);
-    });
-  }, timeout: const Timeout.factor(2));
-
-  group('while debugger is not attached', () {
-    setUp(() async {
-      setCurrentLogWriter(debug: provider.verbose);
-      await context.setUp(
-        testSettings: TestSettings(
-          autoRun: false,
-          waitToDebug: true,
-          moduleFormat: provider.ddcModuleFormat,
-          canaryFeatures: provider.canaryFeatures,
-        ),
-      );
-    });
-
-    tearDown(() async {
-      await context.tearDown();
-    });
-    test('correctly sets the isolate pauseEvent if already running', () async {
-      context.appConnection.runMain();
-      await context.startDebugging();
-      final service = context.vmService;
-      final vm = await service.getVM();
-      final isolate = await service.getIsolate(vm.isolates!.first.id!);
-      expect(isolate.pauseEvent!.kind, EventKind.kResume);
-    });
-  });
-}
diff --git a/dwds/test/integration/screenshot_amd_test.dart b/dwds/test/integration/screenshot_amd_test.dart
deleted file mode 100644
index 771e205..0000000
--- a/dwds/test/integration/screenshot_amd_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'screenshot_common.dart';
-
-void main() {
-  final provider = TestSdkConfigurationProvider(
-    ddcModuleFormat: ModuleFormat.amd,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/screenshot_common.dart b/dwds/test/integration/screenshot_common.dart
deleted file mode 100644
index 4b530a6..0000000
--- a/dwds/test/integration/screenshot_common.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.test, provider);
-
-  setUpAll(() async {
-    setCurrentLogWriter(debug: provider.verbose);
-    await context.setUp(
-      testSettings: TestSettings(
-        verboseCompiler: provider.verbose,
-        moduleFormat: provider.ddcModuleFormat,
-        canaryFeatures: provider.canaryFeatures,
-      ),
-    );
-  });
-
-  tearDownAll(() async {
-    await context.tearDown();
-  });
-
-  test('can take screenshots', () async {
-    final response = await context.debugConnection.vmService
-        .callServiceExtension('ext.dwds.screenshot');
-    expect(response.json!['data'], isNotNull);
-  });
-}
diff --git a/dwds/test/integration/screenshot_ddc_library_bundle_test.dart b/dwds/test/integration/screenshot_ddc_library_bundle_test.dart
deleted file mode 100644
index 0fc43cb..0000000
--- a/dwds/test/integration/screenshot_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'screenshot_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/sdk_configuration_test.dart b/dwds/test/integration/sdk_configuration_test.dart
deleted file mode 100644
index bf9014c..0000000
--- a/dwds/test/integration/sdk_configuration_test.dart
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/src/utilities/sdk_configuration.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:file/memory.dart';
-import 'package:path/path.dart' as p;
-import 'package:test/test.dart';
-
-var _throwsDoesNotExistException = throwsA(
-  isA<InvalidSdkConfigurationException>().having(
-    (e) => '$e',
-    'message',
-    contains('does not exist'),
-  ),
-);
-
-void main() {
-  group('Basic configuration', () {
-    test('Can validate default configuration layout', () async {
-      final defaultConfiguration =
-          await const DefaultSdkConfigurationProvider().configuration;
-      defaultConfiguration.validateSdkDir();
-      defaultConfiguration.validateSummaries();
-    });
-
-    test('Cannot validate an empty configuration layout', () async {
-      final emptyConfiguration = const SdkConfiguration.empty();
-      expect(emptyConfiguration.validateSdkDir, _throwsDoesNotExistException);
-      expect(emptyConfiguration.validate, _throwsDoesNotExistException);
-    });
-  });
-
-  group('Non-standard configuration', () {
-    late Directory outputDir;
-
-    setUp(() async {
-      final systemTempDir = Directory.systemTemp;
-      outputDir = systemTempDir.createTempSync('foo bar');
-    });
-
-    tearDown(() async {
-      await outputDir.delete(recursive: true);
-    });
-
-    test('Can validate existing configuration layout', () async {
-      final defaultSdkConfiguration =
-          await const DefaultSdkConfigurationProvider().configuration;
-
-      final sdkDirectory = outputDir.path;
-      final sdkLayout = FakeSdkLayout(sdkDirectory);
-      final sdkConfiguration = FakeSdkLayout.createConfiguration(sdkLayout);
-
-      final sdkSummaryPath = sdkLayout.summaryPath;
-      final summariesDir = p.dirname(sdkSummaryPath);
-
-      Directory(summariesDir).createSync(recursive: true);
-      File(defaultSdkConfiguration.sdkSummaryPath!).copySync(sdkSummaryPath);
-
-      final compilerWorkerPath = sdkLayout.compilerWorkerPath;
-      final workerDir = p.dirname(compilerWorkerPath);
-
-      Directory(workerDir).createSync(recursive: true);
-      File(defaultSdkConfiguration.compilerWorkerPath!)
-          .copySync(compilerWorkerPath);
-
-      expect(sdkConfiguration.sdkDirectory, equals(sdkDirectory));
-      expect(sdkConfiguration.sdkSummaryPath, equals(sdkSummaryPath));
-      expect(sdkConfiguration.compilerWorkerPath, equals(compilerWorkerPath));
-
-      sdkConfiguration.validateSdkDir();
-      sdkConfiguration.validateSummaries();
-    });
-
-    test('Cannot validate non-existing configuration layout', () async {
-      final sdkDirectory = outputDir.path;
-
-      final sdkLayout = FakeSdkLayout(sdkDirectory);
-      final sdkConfiguration = FakeSdkLayout.createConfiguration(sdkLayout);
-
-      sdkConfiguration.validateSdkDir();
-      expect(sdkConfiguration.validate, _throwsDoesNotExistException);
-    });
-  });
-
-  group('SDK configuration with memory file system', () {
-    late MemoryFileSystem fs;
-
-    final root = '/root';
-    final sdkDirectory = root;
-
-    final sdkLayout = SdkLayout.createDefault(sdkDirectory);
-    final sdkConfiguration = SdkConfiguration.fromSdkLayout(sdkLayout);
-    final sdkSummaryPath = sdkLayout.summaryPath;
-    final compilerWorkerPath = sdkLayout.dartdevcSnapshotPath;
-
-    setUp(() async {
-      fs = MemoryFileSystem();
-      await fs.directory(sdkDirectory).create(recursive: true);
-      await fs.file(sdkSummaryPath).create(recursive: true);
-      await fs.file(compilerWorkerPath).create(recursive: true);
-    });
-
-    test('Can create and validate default SDK configuration', () async {
-      expect(sdkConfiguration.sdkDirectory, equals(sdkDirectory));
-      expect(sdkConfiguration.sdkSummaryPath, equals(sdkSummaryPath));
-      expect(sdkConfiguration.compilerWorkerPath, equals(compilerWorkerPath));
-
-      sdkConfiguration.validateSdkDir(fileSystem: fs);
-      sdkConfiguration.validate(fileSystem: fs);
-    });
-  });
-
-  group('Test configuration', () {
-    final provider = TestSdkConfigurationProvider();
-    tearDownAll(provider.dispose);
-
-    test('Can validate configuration layout with generated assets', () async {
-      final sdkConfiguration = await provider.configuration;
-      sdkConfiguration.validateSdkDir();
-      sdkConfiguration.validate();
-    });
-  });
-}
-
-class FakeSdkLayout {
-  final String sdkDirectory;
-
-  static SdkConfiguration createConfiguration(FakeSdkLayout sdkLayout) =>
-      SdkConfiguration(
-        sdkDirectory: sdkLayout.sdkDirectory,
-        sdkSummaryPath: sdkLayout.summaryPath,
-        compilerWorkerPath: sdkLayout.compilerWorkerPath,
-      );
-
-  FakeSdkLayout(this.sdkDirectory);
-
-  String get summaryPath => p.join(sdkDirectory, 'summaries', 'outline.dill');
-
-  String get compilerWorkerPath =>
-      p.join(sdkDirectory, 'snapshots', 'test.snapshot');
-}
diff --git a/dwds/test/integration/serialization_test.dart b/dwds/test/integration/serialization_test.dart
deleted file mode 100644
index 22aeecf..0000000
--- a/dwds/test/integration/serialization_test.dart
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:convert';
-
-import 'package:dwds/data/data_types.dart';
-import 'package:dwds/data/debug_info.dart';
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/data/ping_request.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('ExtensionRequest', () {
-    test('serializes and deserializes', () {
-      final request = ExtensionRequest(
-        id: 1,
-        command: 'command',
-        commandParams: 'params',
-      );
-      final json = jsonEncode(request);
-      final decoded = ExtensionRequest.fromJson(jsonDecode(json) as List);
-      expect(decoded, request);
-    });
-  });
-
-  group('ExtensionResponse', () {
-    test('serializes and deserializes', () {
-      final response = ExtensionResponse(
-        id: 1,
-        success: true,
-        result: 'result',
-        error: 'error',
-      );
-      final json = jsonEncode(response);
-      final decoded = ExtensionResponse.fromJson(jsonDecode(json) as List);
-      expect(decoded, response);
-    });
-  });
-
-  group('ExtensionEvent', () {
-    test('serializes and deserializes', () {
-      final event = ExtensionEvent(method: 'method', params: 'params');
-      final json = jsonEncode(event);
-      final decoded = ExtensionEvent.fromJson(jsonDecode(json) as List);
-      expect(decoded, event);
-    });
-  });
-
-  group('BatchedEvents', () {
-    test('serializes and deserializes', () {
-      final event = ExtensionEvent(method: 'method', params: 'params');
-      final batch = BatchedEvents(events: [event]);
-      final json = jsonEncode(batch);
-      final decoded = BatchedEvents.fromJson(jsonDecode(json) as List);
-      expect(decoded, batch);
-    });
-
-    test('supports both standard and flat extension event wire formats', () {
-      final jsonList = [
-        'BatchedEvents',
-        'events',
-        [
-          // Standard format with header
-          ['ExtensionEvent', 'params', '{"foo":"bar"}', 'method', 'methodName'],
-          // Flat format without header and params is a Map Object
-          [
-            'params',
-            {'baz': 'qux'},
-            'method',
-            'anotherMethod',
-          ],
-        ],
-      ];
-      final decoded = BatchedEvents.fromJson(jsonList);
-      expect(decoded.events.length, 2);
-      expect(decoded.events[0].method, 'methodName');
-      expect(decoded.events[0].params, '{"foo":"bar"}');
-      expect(decoded.events[1].method, 'anotherMethod');
-      expect(decoded.events[1].params, '{"baz":"qux"}');
-
-      final json = jsonEncode(decoded);
-      final reDecoded = BatchedEvents.fromJson(jsonDecode(json) as List);
-      expect(reDecoded, decoded);
-    });
-  });
-
-  group('DevToolsRequest', () {
-    test('serializes and deserializes', () {
-      final request = DevToolsRequest(
-        appId: 'appId',
-        instanceId: 'instanceId',
-        contextId: 1,
-        tabUrl: 'tabUrl',
-        uriOnly: true,
-        client: 'client',
-      );
-      final json = jsonEncode(request);
-      final decoded = DevToolsRequest.fromJson(jsonDecode(json) as List);
-      expect(decoded, request);
-    });
-  });
-
-  group('DevToolsResponse', () {
-    test('serializes and deserializes', () {
-      final response = DevToolsResponse(
-        success: true,
-        promptExtension: true,
-        error: 'error',
-      );
-      final json = jsonEncode(response);
-      final decoded = DevToolsResponse.fromJson(jsonDecode(json) as List);
-      expect(decoded, response);
-    });
-  });
-
-  group('ConnectFailure', () {
-    test('serializes and deserializes', () {
-      final failure = ConnectFailure(tabId: 1, reason: 'reason');
-      final json = jsonEncode(failure);
-      final decoded = ConnectFailure.fromJson(jsonDecode(json) as List);
-      expect(decoded, failure);
-    });
-  });
-
-  group('DevToolsOpener', () {
-    test('serializes and deserializes', () {
-      final opener = DevToolsOpener(newWindow: true);
-      final json = jsonEncode(opener);
-      final decoded = DevToolsOpener.fromJson(jsonDecode(json) as List);
-      expect(decoded, opener);
-    });
-  });
-
-  group('DevToolsUrl', () {
-    test('serializes and deserializes', () {
-      final url = DevToolsUrl(tabId: 1, url: 'url');
-      final json = jsonEncode(url);
-      final decoded = DevToolsUrl.fromJson(jsonDecode(json) as List);
-      expect(decoded, url);
-    });
-  });
-
-  group('DebugStateChange', () {
-    test('serializes and deserializes', () {
-      final change = DebugStateChange(
-        tabId: 1,
-        newState: 'newState',
-        reason: 'reason',
-      );
-      final json = jsonEncode(change);
-      final decoded = DebugStateChange.fromJson(jsonDecode(json) as List);
-      expect(decoded, change);
-    });
-  });
-
-  group('DebugInfo', () {
-    test('serializes and deserializes', () {
-      final info = const DebugInfo(
-        appEntrypointPath: 'appEntrypointPath',
-        appId: 'appId',
-        appInstanceId: 'appInstanceId',
-        appOrigin: 'appOrigin',
-        appUrl: 'appUrl',
-        authUrl: 'authUrl',
-        dwdsVersion: 'dwdsVersion',
-        extensionUrl: 'extensionUrl',
-        isInternalBuild: true,
-        isFlutterApp: true,
-        workspaceName: 'workspaceName',
-        tabUrl: 'tabUrl',
-        tabId: 1,
-      );
-      final json = jsonEncode(info);
-      final decoded = DebugInfo.fromJson(jsonDecode(json) as List);
-      expect(decoded, info);
-    });
-  });
-
-  group('PingRequest', () {
-    test('serializes and deserializes', () {
-      final request = PingRequest();
-      final json = jsonEncode(request);
-      final decoded = PingRequest.fromJson(
-        jsonDecode(json) as Map<String, dynamic>,
-      );
-      expect(decoded, request);
-    });
-  });
-}
diff --git a/dwds/test/integration/skip_list_test.dart b/dwds/test/integration/skip_list_test.dart
deleted file mode 100644
index 55ed079..0000000
--- a/dwds/test/integration/skip_list_test.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (c) 2020, 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.
-
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/src/debugging/location.dart';
-import 'package:dwds/src/debugging/skip_list.dart';
-import 'package:dwds/src/utilities/dart_uri.dart';
-import 'package:source_maps/parser.dart';
-import 'package:test/test.dart';
-
-import 'fixtures/utilities.dart';
-
-void main() {
-  setGlobalsForTesting();
-  late SkipLists skipLists;
-  final dartUri = DartUri('org-dartlang-app://web/main.dart');
-  const fakeRuntimeScriptId = '12';
-  group('SkipLists', () {
-    setUp(() {
-      skipLists = SkipLists('');
-    });
-
-    test('do not include known ranges', () {
-      final skipList = skipLists.compute('123', '456', {
-        Location.from(
-          'foo',
-          TargetLineEntry(1, []),
-          TargetEntry(2, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-        Location.from(
-          'foo',
-          TargetLineEntry(10, []),
-          TargetEntry(20, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-      });
-      expect(skipList.length, 3);
-      _validateRange(skipList.first, 0, 0, 1, 1);
-      _validateRange(skipList[1], 1, 3, 10, 19);
-      _validateRange(skipList.last, 10, 21, maxValue, maxValue);
-    });
-
-    test('do not include start of the file', () {
-      final skipList = skipLists.compute('123', '456', {
-        Location.from(
-          'foo',
-          TargetLineEntry(0, []),
-          TargetEntry(0, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-        Location.from(
-          'foo',
-          TargetLineEntry(10, []),
-          TargetEntry(20, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-      });
-      expect(skipList.length, 2);
-      _validateRange(skipList[0], 0, 1, 10, 19);
-      _validateRange(skipList.last, 10, 21, maxValue, maxValue);
-    });
-
-    test('does not depend on order of locations', () {
-      final skipList = skipLists.compute('123', '456', {
-        Location.from(
-          'foo',
-          TargetLineEntry(10, []),
-          TargetEntry(20, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-        Location.from(
-          'foo',
-          TargetLineEntry(0, []),
-          TargetEntry(0, 0, 0, 0),
-          dartUri,
-          fakeRuntimeScriptId,
-        ),
-      });
-      expect(skipList.length, 2);
-      _validateRange(skipList[0], 0, 1, 10, 19);
-      _validateRange(skipList.last, 10, 21, maxValue, maxValue);
-    });
-
-    test('contains the provided id', () {
-      final id = '123';
-      final skipList = skipLists.compute(id, '456', {});
-      for (final range in skipList) {
-        expect(range['scriptId'], id);
-      }
-    });
-
-    test('ignores the whole file if provided no locations', () {
-      final skipList = skipLists.compute('123', '456', {});
-      expect(skipList.length, 1);
-      _validateRange(skipList.first, 0, 0, maxValue, maxValue);
-    });
-  });
-}
-
-void _validateRange(
-  Map<String, dynamic> range,
-  int startLine,
-  int startColumn,
-  int endLine,
-  int endColumn,
-) {
-  final start = range['start'] as Map<String, dynamic>;
-  expect(start['lineNumber'], startLine);
-  expect(start['columnNumber'], startColumn);
-  final end = range['end'] as Map<String, dynamic>;
-  expect(end['lineNumber'], endLine);
-  expect(end['columnNumber'], endColumn);
-}
diff --git a/dwds/test/integration/utilities_test.dart b/dwds/test/integration/utilities_test.dart
deleted file mode 100644
index 83231ea..0000000
--- a/dwds/test/integration/utilities_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2023 The Dart Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-@Timeout(Duration(minutes: 1))
-library;
-
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import 'fixtures/context.dart';
-
-void main() {
-  group('wrapInErrorHandlerAsync', () {
-    test('returns future success value if callback succeeds', () async {
-      Future<bool> successCallback() async {
-        await Future<void>.delayed(const Duration(milliseconds: 500));
-        return true;
-      }
-
-      final result = await wrapInErrorHandlerAsync(
-        'successCallback',
-        successCallback,
-      );
-      expect(result, equals(true));
-    });
-
-    test('throws RPCError if callback throws RPCError', () async {
-      Future<bool> rpcErrorCallback() async {
-        await Future<void>.delayed(const Duration(milliseconds: 500));
-        throw RPCError(
-          'rpcErrorCallback',
-          RPCErrorKind.kInvalidRequest.code,
-          'An error message',
-        );
-      }
-
-      await expectLater(
-        wrapInErrorHandlerAsync('rpcErrorCallback', rpcErrorCallback),
-        throwsRPCErrorWithMessage('An error message'),
-      );
-    });
-
-    test(
-      'throws SentinelException if callback throws SentinelException',
-      () async {
-        Future<bool> sentinelExceptionCallback() async {
-          await Future<void>.delayed(const Duration(milliseconds: 500));
-          throw SentinelException.parse('sentinelExceptionCallback', {
-            'message': 'a sentinel exception',
-          });
-        }
-
-        await expectLater(
-          wrapInErrorHandlerAsync(
-            'sentinelExceptionCallback',
-            sentinelExceptionCallback,
-          ),
-          throwsSentinelException,
-        );
-      },
-    );
-
-    test('throws RPCError if callback throws other error type', () async {
-      Future<bool> exceptionCallback() async {
-        await Future<void>.delayed(const Duration(milliseconds: 500));
-        throw Exception('An unexpected exception');
-      }
-
-      try {
-        await wrapInErrorHandlerAsync('exceptionCallback', exceptionCallback);
-        fail('RPCError not thrown.');
-      } catch (error) {
-        expect(
-          error,
-          isRPCErrorWithMessage(
-            'Unexpected DWDS error for exceptionCallback: Exception: An '
-            'unexpected exception',
-          ),
-        );
-      }
-    });
-  });
-}
diff --git a/dwds/test/integration/variable_scope_amd_test.dart b/dwds/test/integration/variable_scope_amd_test.dart
deleted file mode 100644
index f4d562f..0000000
--- a/dwds/test/integration/variable_scope_amd_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'variable_scope_common.dart';
-
-void main() {
-  // set to true for debug logging.
-  const debug = false;
-
-  final provider = TestSdkConfigurationProvider(verbose: debug);
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/variable_scope_common.dart b/dwds/test/integration/variable_scope_common.dart
deleted file mode 100644
index a1191aa..0000000
--- a/dwds/test/integration/variable_scope_common.dart
+++ /dev/null
@@ -1,293 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:dwds/src/debugging/dart_scope.dart';
-import 'package:dwds/src/services/chrome/chrome_proxy_service.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-import 'package:vm_service/vm_service.dart';
-
-import 'fixtures/context.dart';
-import 'fixtures/project.dart';
-import 'fixtures/utilities.dart';
-
-void testAll({required TestSdkConfigurationProvider provider}) {
-  final context = TestContext(TestProject.testScopes, provider);
-
-  setUpAll(() async {
-    setCurrentLogWriter(debug: provider.verbose);
-    await context.setUp(
-      testSettings: TestSettings(
-        verboseCompiler: provider.verbose,
-        moduleFormat: provider.ddcModuleFormat,
-        canaryFeatures: provider.canaryFeatures,
-      ),
-    );
-  });
-
-  tearDownAll(() async {
-    await context.tearDown();
-  });
-
-  group('temporary variable regular expression', () {
-    setUpAll(() => setCurrentLogWriter(debug: provider.verbose));
-    test('matches correctly for pre-patterns temporary variables', () {
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't4$'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't4$0'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't4$10'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't4$0'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't1'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't10'), isTrue);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r'__t$TL'), isTrue);
-      expect(
-        previousDdcTemporaryVariableRegExp.hasMatch(r'__t$StringN'),
-        isTrue,
-      );
-      expect(
-        previousDdcTemporaryVariableRegExp.hasMatch(
-          r'__t$IdentityMapOfString$T',
-        ),
-        isTrue,
-      );
-
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't'), isFalse);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't10foo'), isFalse);
-      expect(previousDdcTemporaryVariableRegExp.hasMatch(r't$10foo'), isFalse);
-    });
-
-    test('matches correctly for post-patterns temporary variables', () {
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$364$'), isTrue);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$364$0'), isTrue);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$364$10'), isTrue);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$364$0'), isTrue);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$361'), isTrue);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't$36$350$350'), isTrue);
-      expect(
-        ddcTemporaryVariableRegExp.hasMatch(r't$36$350$354$35isSet'),
-        isTrue,
-      );
-      expect(
-        ddcTemporaryVariableRegExp.hasMatch(r't$36$35variable$35isSet'),
-        isTrue,
-      );
-      expect(
-        ddcTemporaryVariableRegExp.hasMatch(r'synthetic$35variable'),
-        isTrue,
-      );
-      expect(ddcTemporaryTypeVariableRegExp.hasMatch(r'__t$TL'), isTrue);
-      expect(ddcTemporaryTypeVariableRegExp.hasMatch(r'__t$StringN'), isTrue);
-      expect(
-        ddcTemporaryTypeVariableRegExp.hasMatch(r'__t$IdentityMapOfString$T'),
-        isTrue,
-      );
-
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r'this'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r'\$this'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't10'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r't10foo'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r'ten'), isFalse);
-      expect(ddcTemporaryVariableRegExp.hasMatch(r'my$3635variable'), isFalse);
-    });
-  });
-
-  group('variable scope', () {
-    late ChromeProxyService service;
-    VM vm;
-    String? isolateId;
-    late Stream<Event> stream;
-    ScriptList scripts;
-    late ScriptRef mainScript;
-    Stack stack;
-
-    // TODO: Be able to set breakpoints before start/reload so we can exercise
-    // things that aren't in recurring loops.
-
-    /// Support function for pausing and returning the stack at a line.
-    Future<Stack> breakAt(String breakpointId, ScriptRef scriptRef) async {
-      final lineNumber = await context.findBreakpointLine(
-        breakpointId,
-        isolateId!,
-        scriptRef,
-      );
-
-      final bp = await service.addBreakpoint(
-        isolateId!,
-        scriptRef.id!,
-        lineNumber,
-      );
-      // Wait for breakpoint to trigger.
-      await stream.firstWhere(
-        (event) => event.kind == EventKind.kPauseBreakpoint,
-      );
-      // Remove breakpoint so it doesn't impact other tests.
-      await service.removeBreakpoint(isolateId!, bp.id!);
-      final stack = await service.getStack(isolateId!);
-      return stack;
-    }
-
-    Future<Instance> getInstance(InstanceRef ref) async {
-      final result = await service.getObject(isolateId!, ref.id!);
-      expect(result, isA<Instance>());
-      return result as Instance;
-    }
-
-    void expectDartObject(String variableName, Instance instance) {
-      expect(
-        instance,
-        isA<Instance>().having(
-          (instance) => instance.classRef!.name,
-          '$variableName: classRef.name',
-          isNot(
-            isIn(['NativeJavaScriptObject', 'JavaScriptObject', 'NativeError']),
-          ),
-        ),
-      );
-    }
-
-    Future<void> expectDartVariables(
-      Map<String?, InstanceRef?> variables,
-    ) async {
-      for (final name in variables.keys) {
-        final instance = await getInstance(variables[name]!);
-        expectDartObject(name!, instance);
-      }
-    }
-
-    Map<String?, InstanceRef?> getFrameVariables(Frame frame) {
-      return <String?, InstanceRef?>{
-        for (final variable in frame.vars!)
-          variable.name: variable.value as InstanceRef?,
-      };
-    }
-
-    setUpAll(() => setCurrentLogWriter(debug: provider.verbose));
-
-    setUp(() async {
-      service = context.service;
-      vm = await service.getVM();
-      isolateId = vm.isolates!.first.id;
-      scripts = await service.getScripts(isolateId!);
-      await service.streamListen('Debug');
-      stream = service.onEvent('Debug');
-      mainScript = scripts.scripts!.firstWhere(
-        (each) => each.uri!.contains('main.dart'),
-      );
-    });
-
-    tearDown(() async {
-      await service.resume(isolateId!);
-    });
-
-    test('variables in static function', () async {
-      stack = await breakAt('staticFunction', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      expect(variableNames, containsAll(['formal']));
-    });
-
-    test('variables in static async function', () async {
-      stack = await breakAt('staticAsyncFunction', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      final variableValues = variableNames
-          .map((name) => variables[name]?.valueAsString)
-          .toList();
-      expect(variableNames, containsAll(['myLocal', 'value']));
-      expect(variableValues, containsAll(['a local value', 'arg1']));
-    });
-
-    test('variables in static async loop function', () async {
-      stack = await breakAt('staticAsyncLoopFunction', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      final variableValues = variableNames
-          .map((name) => variables[name]?.valueAsString)
-          .toList();
-      expect(variableNames, containsAll(['i', 'myLocal', 'value']));
-      // Ensure the loop variable, i, is captued correctly. The value from the
-      // first iteration should be captured by the saved closure.
-      expect(variableValues, containsAll(['1', 'my local value', 'arg2']));
-    });
-
-    test('variables in function', () async {
-      stack = await breakAt('nestedFunction', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      expect(
-        variableNames,
-        containsAll([
-          'aClass',
-          'another',
-          'intLocalInMain',
-          'local',
-          'localThatsNull',
-          'nestedFunction',
-          'parameter',
-          'testClass',
-        ]),
-      );
-    });
-
-    test('variables in closure nested in method', () async {
-      stack = await breakAt('nestedClosure', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      expect(variableNames, [
-        'closureLocalInsideMethod',
-        'local',
-        'parameter',
-        'this',
-      ]);
-    });
-
-    test('variables in method', () async {
-      stack = await breakAt('printMethod', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      expect(variableNames, ['this']);
-    });
-
-    test('variables in extension method', () async {
-      stack = await breakAt('extension', mainScript);
-      final variables = getFrameVariables(stack.frames!.first);
-      await expectDartVariables(variables);
-
-      final variableNames = variables.keys.toList()..sort();
-      // Note: '$this' should change to 'this', and 'return' should
-      // disappear after debug symbols are available.
-      // https://github.com/dart-lang/webdev/issues/1371
-      expect(variableNames, ['\$this', 'ret', 'return']);
-    });
-
-    test('evaluateJsOnCallFrame', () async {
-      stack = await breakAt('nestedFunction', mainScript);
-      final debugger = await service.debuggerFuture;
-      final parameter = await debugger.evaluateJsOnCallFrameIndex(
-        0,
-        'parameter',
-      );
-      expect(parameter.value, matches(RegExp(r'\d+ world')));
-      final ticks = await debugger.evaluateJsOnCallFrameIndex(1, 'ticks');
-      // We don't know how many ticks there were before we stopped, but it
-      // should be a positive number.
-      expect(ticks.value, isPositive);
-    });
-  });
-}
diff --git a/dwds/test/integration/variable_scope_ddc_library_bundle_test.dart b/dwds/test/integration/variable_scope_ddc_library_bundle_test.dart
deleted file mode 100644
index e5a4963..0000000
--- a/dwds/test/integration/variable_scope_ddc_library_bundle_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2026, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-import 'variable_scope_common.dart';
-
-void main() {
-  // Enable verbose logging for debugging.
-  const debug = false;
-
-  final canary = true;
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canary,
-    ddcModuleFormat: ModuleFormat.ddc,
-  );
-  tearDownAll(provider.dispose);
-
-  testAll(provider: provider);
-}
diff --git a/dwds/test/integration/web/batched_stream_test.dart b/dwds/test/integration/web/batched_stream_test.dart
deleted file mode 100644
index 78e8249..0000000
--- a/dwds/test/integration/web/batched_stream_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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.
-
-@Retry(0)
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:dwds/shared/batched_stream.dart';
-import 'package:test/expect.dart';
-import 'package:test/scaffolding.dart';
-
-void main() {
-  group('Batched stream controller', () {
-    test(
-      'emits batches',
-      () async {
-        const size = 100;
-        const delay = Duration(milliseconds: 1000);
-
-        final batchOne = List<int>.generate(size, (index) => index);
-        final batchTwo = List<int>.generate(size, (index) => size + index);
-
-        // Setup controller.
-        final controller = BatchedStreamController<int>(delay: 500);
-
-        // Verify the output.
-        expect(controller.stream, emitsInOrder([batchOne, batchTwo]));
-
-        // Add input.
-        final inputController = StreamController<int>();
-        final inputAdded = controller.sink.addStream(inputController.stream);
-
-        batchOne.forEach(inputController.sink.add);
-        await Future<void>.delayed(delay);
-        batchTwo.forEach(inputController.sink.add);
-
-        await inputController.close();
-        await inputAdded;
-        await controller.close();
-      },
-      // https://github.com/dart-lang/webdev/issues/2126
-      skip: Platform.isWindows,
-    );
-
-    test('emits all inputs in order', () async {
-      const size = 10;
-      const delay = Duration(milliseconds: 200);
-
-      // Setup controller.
-      final controller = BatchedStreamController<int>(delay: 500);
-
-      // Setup output listener.
-      final output = controller.stream.toList();
-
-      // Add input.
-      final inputController = StreamController<int>();
-      final inputAdded = controller.sink.addStream(inputController.stream);
-
-      final input = List<int>.generate(size, (index) => index);
-      for (final e in input) {
-        inputController.sink.add(e);
-        await Future<void>.delayed(delay);
-      }
-
-      await inputController.close();
-      await inputAdded;
-      await controller.close();
-
-      // Verify the output.
-      final result = await output;
-      expect(result.length, greaterThan(1));
-
-      final flattened = <int>[];
-      result.forEach(flattened.addAll);
-      expect(flattened, input);
-    });
-  });
-}
diff --git a/dwds/test/services/expression_compiler_worker_args_test.dart b/dwds/test/services/expression_compiler_worker_args_test.dart
deleted file mode 100644
index 79ff565..0000000
--- a/dwds/test/services/expression_compiler_worker_args_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/services/expression_compiler.dart';
-import 'package:dwds/src/services/expression_compiler_service.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('expressionCompilerWorkerArgs', () {
-    List<String> argsFor({bool? deprecatedJsInterop}) =>
-        expressionCompilerWorkerArgs(
-          sdkSummaryUri: Uri.file('/sdk/ddc_outline.dill'),
-          address: 'localhost',
-          port: 1234,
-          compilerOptions: CompilerOptions(
-            moduleFormat: ModuleFormat.ddc,
-            canaryFeatures: true,
-            experiments: const ['records'],
-            deprecatedJsInterop: deprecatedJsInterop,
-          ),
-          verbose: false,
-        );
-
-    test('passes the compiler options', () {
-      expect(argsFor(), [
-        '--experimental-expression-compiler',
-        '--dart-sdk-summary',
-        'file:///sdk/ddc_outline.dill',
-        '--asset-server-address',
-        'localhost',
-        '--asset-server-port',
-        '1234',
-        '--module-format',
-        'ddc',
-        '--enable-experiment=records',
-        '--canary',
-      ]);
-    });
-
-    test('does not pass deprecated-js-interop when not configured', () {
-      expect(argsFor(), isNot(contains(contains('deprecated-js-interop'))));
-    });
-
-    test('passes --deprecated-js-interop', () {
-      final args = argsFor(deprecatedJsInterop: true);
-      expect(args, contains('--deprecated-js-interop'));
-      expect(args, isNot(contains('--no-deprecated-js-interop')));
-    });
-
-    test('passes --no-deprecated-js-interop', () {
-      final args = argsFor(deprecatedJsInterop: false);
-      expect(args, contains('--no-deprecated-js-interop'));
-      expect(args, isNot(contains('--deprecated-js-interop')));
-    });
-  });
-}
diff --git a/dwds/test/utilities/fix_protocol_test.dart b/dwds/test/utilities/fix_protocol_test.dart
deleted file mode 100644
index 99764f5..0000000
--- a/dwds/test/utilities/fix_protocol_test.dart
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/utilities/fix_protocol.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('fixProtocol', () {
-    group('when window location protocol is https:', () {
-      const windowProtocol = 'https:';
-
-      test('upgrades http to https for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'http://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'https://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('upgrades ws to wss for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'ws://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'wss://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('does not modify http on localhost', () {
-        expect(
-          fixProtocol(
-            'http://localhost:8080/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'http://localhost:8080/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('does not modify ws on localhost', () {
-        expect(
-          fixProtocol(
-            'ws://localhost:8080/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'ws://localhost:8080/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('leaves https unchanged for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'https://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'https://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('leaves wss unchanged for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'wss://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'wss://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-    });
-
-    group('when window location protocol is http:', () {
-      const windowProtocol = 'http:';
-
-      test('does not modify http for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'http://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'http://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('does not modify ws for non-localhost hosts', () {
-        expect(
-          fixProtocol(
-            'ws://example.com/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'ws://example.com/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('does not modify http on localhost', () {
-        expect(
-          fixProtocol(
-            'http://localhost:8080/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'http://localhost:8080/foo/\$dwdsSseHandler',
-        );
-      });
-
-      test('does not modify ws on localhost', () {
-        expect(
-          fixProtocol(
-            'ws://localhost:8080/foo/\$dwdsSseHandler',
-            windowLocationProtocol: windowProtocol,
-          ),
-          'ws://localhost:8080/foo/\$dwdsSseHandler',
-        );
-      });
-    });
-
-    group('when window location protocol is not https: (e.g. file:)', () {
-      test('does not modify urls', () {
-        expect(
-          fixProtocol(
-            'http://example.com/foo',
-            windowLocationProtocol: 'file:',
-          ),
-          'http://example.com/foo',
-        );
-        expect(
-          fixProtocol('ws://example.com/foo', windowLocationProtocol: 'file:'),
-          'ws://example.com/foo',
-        );
-      });
-    });
-  });
-}
diff --git a/dwds/test/utilities/uuid_test.dart b/dwds/test/utilities/uuid_test.dart
deleted file mode 100644
index 51c4216..0000000
--- a/dwds/test/utilities/uuid_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:dwds/src/utilities/uuid.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('Uuid', () {
-    test('v4 generates valid UUIDs', () {
-      final uuid = const Uuid();
-      final id = uuid.v4();
-      expect(id, hasLength(36));
-      expect(
-        id,
-        matches(
-          RegExp(
-            r'^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-'
-            r'[89ab][0-9a-f]{3}-[0-9a-f]{12}$',
-          ),
-        ),
-      );
-    });
-
-    test('v4 generates unique UUIDs', () {
-      final uuid = const Uuid();
-      final id1 = uuid.v4();
-      final id2 = uuid.v4();
-      expect(id1, isNot(equals(id2)));
-    });
-
-    test('v4 sets version and variant bits correctly', () {
-      final uuid = const Uuid();
-      final id = uuid.v4();
-      // Version 4
-      expect(id[14], equals('4'));
-      // Variant 10xx (8, 9, a, b)
-      expect(id[19], matches(RegExp(r'[89ab]')));
-    });
-  });
-}
diff --git a/dwds/tool/build.dart b/dwds/tool/build.dart
deleted file mode 100644
index 4e437aa..0000000
--- a/dwds/tool/build.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2026, 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:convert';
-import 'dart:io';
-
-import 'package:crypto/crypto.dart';
-
-void main() async {
-  // 1. Extract the version from pubspec.yaml
-  final pubspec = File('pubspec.yaml').readAsStringSync();
-  final versionMatch = RegExp(r'version: (.*)').firstMatch(pubspec);
-  final version = versionMatch?.group(1);
-  if (version == null) {
-    throw Exception('Failed to find version in pubspec.yaml');
-  }
-
-  // 2. Generate lib/src/version.dart
-  final versionFile = File('lib/src/version.dart');
-  versionFile.writeAsStringSync('''
-// Generated code. Do not modify.
-const packageVersion = '$version';
-''');
-
-  // 3. Compile the web client to JavaScript
-  print('Compiling client.js...');
-  final result = await Process.run(Platform.executable, [
-    'compile',
-    'js',
-    '-O1',
-    '--no-source-maps',
-    '-o',
-    'lib/src/injected/client.js',
-    'web/client.dart',
-  ]);
-
-  if (result.exitCode != 0) {
-    print('Failed to compile client.js');
-    print(result.stdout);
-    print(result.stderr);
-    exit(result.exitCode);
-  }
-
-  print('Compilation successful');
-
-  // 4. Clean up the generated .deps file
-  final depsFile = File('lib/src/injected/client.js.deps');
-  if (depsFile.existsSync()) {
-    depsFile.deleteSync();
-  }
-
-  // 5. Generate injected_client_js.dart
-  print('Generating injected_client_js.dart...');
-
-  final clientDartString = File('web/client.dart')
-      .readAsStringSync()
-      .replaceAll('\r\n', '\n');
-  final clientDartHash = sha256
-      .convert(utf8.encode(clientDartString))
-      .toString();
-
-  final compiledJs = File('lib/src/injected/client.js').readAsStringSync();
-  final lines = compiledJs.replaceAll('\r\n', '\n').split('\n');
-
-  // Escape JS payload line-by-line using jsonEncode for multiline readability,
-  // ensure newlines are preserved identically, and manually escape the dollar
-  // sign ($) to avoid Dart interpolation.
-  final safeDartString = [
-    for (var i = 0; i < lines.length; i++)
-      jsonEncode(i == lines.length - 1 ? lines[i] : '${lines[i]}\n')
-          .replaceAll(r'$', r'\$'),
-  ].join('\n');
-
-  final injectedClientJsFile = File('lib/src/handlers/injected_client_js.dart');
-  injectedClientJsFile.writeAsStringSync('''
-// Generated code. Do not modify.
-// Emits the transpiled client.js directly into a statically embeddable string.
-// dart format off
-
-const injectedClientJs = $safeDartString;
-
-const clientDartHash = '$clientDartHash';
-''');
-  print('Successfully packed client.js into injected_client_js.dart');
-}
diff --git a/dwds/tool/release.dart b/dwds/tool/release.dart
deleted file mode 100644
index 30c136e..0000000
--- a/dwds/tool/release.dart
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:args/args.dart';
-
-const _packageOption = 'package';
-const _versionOption = 'version';
-const _resetFlag = 'reset';
-const _skipStableCheckFlag = 'skipStableCheck';
-
-final _packageDir = File.fromUri(Platform.script).parent.parent.path;
-
-/// Note: Must be run from the /tool directory.
-///
-/// To prepare DWDS for release:
-///  `dart run release.dart -p dwds`
-///
-/// To reset DWDS after a release:
-///  `dart run release.dart --reset -p dwds -v [[wip version]]`
-
-void main(List<String> arguments) async {
-  final parser = ArgParser()
-    ..addOption(
-      _packageOption,
-      abbr: 'p',
-      allowed: ['dwds'],
-      defaultsTo: 'dwds',
-    )
-    ..addOption(_versionOption, abbr: 'v')
-    ..addFlag(_resetFlag, abbr: 'r')
-    ..addFlag(_skipStableCheckFlag, abbr: 's');
-
-  final argResults = parser.parse(arguments);
-  final package = argResults[_packageOption] as String?;
-  if (package == null) {
-    _logWarning('Please specify package with -p dwds or --package=dwds');
-    return;
-  }
-
-  final isReset = argResults[_resetFlag] as bool?;
-  final newVersion = argResults[_versionOption] as String?;
-  final skipStableCheck = argResults[_skipStableCheckFlag] as bool?;
-
-  int exitCode;
-  if (isReset == true) {
-    exitCode = await runReset(newVersion: newVersion);
-  } else {
-    exitCode = await runRelease(
-      newVersion: newVersion,
-      skipStableCheck: skipStableCheck,
-    );
-  }
-  if (exitCode != 0) {
-    _logWarning('Run terminated unexpectedly with exit code: $exitCode');
-  }
-}
-
-Future<int> runReset({String? newVersion}) {
-  // Check that a new wip version has been provided.
-  final currentVersion = _readVersionFile();
-  if (newVersion == null || !newVersion.contains('wip')) {
-    _logInfo('''
-      Please provide the next wip version for dwds, e.g. -v 3.0.1-wip
-      Current version is $currentVersion.
-    ''');
-    return Future.value(1);
-  }
-
-  // Reset the dependency overrides for the package:
-  _updateOverrides(includeOverrides: true);
-
-  // Update the version strings in CHANGELOG and pubspec.yaml.
-  _updateVersionStrings(
-    currentVersion: currentVersion,
-    nextVersion: newVersion,
-    isReset: true,
-  );
-
-  // Build the package.
-  final exitCode = _buildPackage();
-  return exitCode;
-}
-
-Future<int> runRelease({String? newVersion, bool? skipStableCheck}) async {
-  // Check that we are on a stable version of Dart.
-  if (skipStableCheck != true) {
-    final checkVersionProcess = await Process.run('dart', ['--version']);
-    final versionInfo = checkVersionProcess.stdout as String;
-    if (!versionInfo.contains('stable')) {
-      _logWarning('''
-        Expected to be on stable version of Dart, instead on:
-        $versionInfo
-        To skip this check, re-run with --skipStableCheck
-        ''');
-      return checkVersionProcess.exitCode;
-    }
-  }
-
-  // Remove any dependency overrides for the package:
-  _logInfo('Removing dependency overrides for dwds.');
-  _updateOverrides(includeOverrides: false);
-
-  // Run dart pub upgrade.
-  _logInfo('Upgrading pub packages for dwds');
-  final pubUpgradeProcess = await Process.run('dart', [
-    'pub',
-    'upgrade',
-  ], workingDirectory: _packageDir);
-  final upgradeErrors = pubUpgradeProcess.stderr as String;
-  if (upgradeErrors.isNotEmpty) {
-    _logWarning(upgradeErrors);
-    return pubUpgradeProcess.exitCode;
-  }
-
-  // Update the version strings in CHANGELOG and pubspec.yaml.
-  final currentVersion = _readVersionFile();
-  final nextVersion = newVersion ?? _removeWip(currentVersion);
-  _updateVersionStrings(
-    currentVersion: currentVersion,
-    nextVersion: nextVersion,
-  );
-
-  // Build the package.
-  final exitCode = _buildPackage();
-  return exitCode;
-}
-
-Future<int> _buildPackage() async {
-  _logInfo('Building dwds');
-  final buildProcess = await Process.run('dart', [
-    'run',
-    'tool/build.dart',
-  ], workingDirectory: _packageDir);
-
-  final buildErrors = buildProcess.stderr as String;
-  if (buildErrors.isNotEmpty) {
-    _logWarning(buildErrors);
-  }
-  return buildProcess.exitCode;
-}
-
-void _updateOverrides({required bool includeOverrides}) {
-  final overridesFilePath = '$_packageDir/pubspec_overrides.yaml';
-  final noOverridesFilePath = '$_packageDir/ignore_pubspec_overrides.yaml';
-  if (includeOverrides) {
-    _renameFile(currentName: noOverridesFilePath, newName: overridesFilePath);
-  } else {
-    _renameFile(currentName: overridesFilePath, newName: noOverridesFilePath);
-  }
-}
-
-void _renameFile({required String currentName, required String newName}) {
-  final currentFile = File(currentName);
-  if (!currentFile.existsSync()) {
-    _logInfo('Skip renaming $currentName to $newName, file does not exist.');
-    return;
-  }
-  currentFile.rename(newName);
-}
-
-void _updateVersionStrings({
-  required String nextVersion,
-  required String currentVersion,
-  bool isReset = false,
-}) {
-  _logInfo('Updating dwds from $currentVersion to $nextVersion');
-  final pubspec = File('$_packageDir/pubspec.yaml');
-  final changelog = File('$_packageDir/CHANGELOG.md');
-  if (isReset) {
-    _addNewLine(changelog, newLine: '## $nextVersion');
-    _replaceInFile(pubspec, query: currentVersion, replaceWith: nextVersion);
-  } else {
-    for (final file in [pubspec, changelog]) {
-      _replaceInFile(file, query: currentVersion, replaceWith: nextVersion);
-    }
-  }
-}
-
-void _addNewLine(File file, {required String newLine, int insertAt = 0}) {
-  final currentLines = file.readAsLinesSync();
-  final linesBefore = currentLines.sublist(0, insertAt);
-  final linesAfter = currentLines.sublist(insertAt);
-  final newLines = [...linesBefore, newLine, '', ...linesAfter];
-  final content = newLines.joinWithNewLine();
-  return file.writeAsStringSync(content);
-}
-
-bool _replaceInFile(
-  File file, {
-  required String query,
-  required String replaceWith,
-}) {
-  final newLines = <String>[];
-  var replaced = false;
-  for (final line in file.readAsLinesSync()) {
-    if (line.contains(query)) {
-      newLines.add(line.replaceAll(query, replaceWith));
-      replaced = true;
-    } else {
-      newLines.add(line);
-    }
-  }
-  final content = newLines.joinWithNewLine();
-  file.writeAsStringSync(content);
-  return replaced;
-}
-
-String _readVersionFile() {
-  final versionFile = File('$_packageDir/lib/src/version.dart');
-  final lines = versionFile.readAsLinesSync();
-  for (final line in lines) {
-    if (line.startsWith('const packageVersion =')) {
-      final version = line
-          .split('=')
-          .last
-          .split('')
-          .where((char) => char != ';' && char != "'" && char != '"')
-          .join('');
-      return version.trim();
-    }
-  }
-  throw Exception('Could not read version in dwds/lib/src/version.dart');
-}
-
-String _removeWip(String wipVersion) {
-  if (!wipVersion.contains('wip')) {
-    throw Exception('$wipVersion is not a wip version.');
-  }
-  return wipVersion.split('-wip').first;
-}
-
-void _logInfo(String message) {
-  stdout.writeln(message);
-}
-
-void _logWarning(String warning) {
-  stderr.writeln(warning);
-}
-
-extension JoinExtension on List<String> {
-  String joinWithNewLine() {
-    return '${join('\n')}\n';
-  }
-}
diff --git a/dwds/web/client.dart b/dwds/web/client.dart
deleted file mode 100644
index 4676b06..0000000
--- a/dwds/web/client.dart
+++ /dev/null
@@ -1,695 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:js_interop';
-
-import 'package:dwds/data/build_result.dart';
-import 'package:dwds/data/connect_request.dart';
-import 'package:dwds/data/debug_event.dart';
-import 'package:dwds/data/debug_info.dart';
-import 'package:dwds/data/devtools_request.dart';
-import 'package:dwds/data/error_response.dart';
-import 'package:dwds/data/extension_request.dart';
-import 'package:dwds/data/hot_reload_request.dart';
-import 'package:dwds/data/hot_reload_response.dart';
-import 'package:dwds/data/hot_restart_request.dart';
-import 'package:dwds/data/hot_restart_response.dart';
-import 'package:dwds/data/ping_request.dart';
-import 'package:dwds/data/register_event.dart';
-import 'package:dwds/data/run_request.dart';
-import 'package:dwds/data/service_extension_request.dart';
-import 'package:dwds/data/service_extension_response.dart';
-import 'package:dwds/shared/batched_stream.dart';
-import 'package:dwds/src/sockets.dart';
-import 'package:dwds/src/utilities/fix_protocol.dart';
-import 'package:dwds/src/utilities/uuid.dart';
-import 'package:http/browser_client.dart';
-import 'package:sse/client/sse_client.dart';
-import 'package:web/web.dart';
-
-import 'reloader/ddc_library_bundle_restarter.dart';
-import 'reloader/ddc_restarter.dart';
-import 'reloader/manager.dart';
-import 'reloader/require_restarter.dart';
-import 'run_main.dart';
-import 'web_utils.dart';
-
-const _batchDelayMilliseconds = 1000;
-
-// GENERATE:
-// pub run build_runner build web
-Future<void>? main() {
-  return runZonedGuarded(
-    () async {
-      // Set the unique id for this instance of the app.
-      // Test apps may already have this set.
-      const dartAppInstanceIdKey = 'dartAppInstanceId';
-      if (dartAppInstanceId == null) {
-        // Check the session storage for the instance id.
-        // Only reuse [storedInstanceId] on page reload.
-        // Duplicating a tab clones its session storage, so we want to avoid
-        // the duplicate taking over the original tab's DWDS connection.
-        final storedInstanceId = _isPageReload
-            ? window.sessionStorage.getItem(dartAppInstanceIdKey)
-            : null;
-        if (storedInstanceId != null) {
-          dartAppInstanceId = storedInstanceId;
-        } else {
-          dartAppInstanceId = const Uuid().v4();
-          window.sessionStorage.setItem(
-            dartAppInstanceIdKey,
-            dartAppInstanceId!,
-          );
-        }
-      }
-
-      final fixedPath = fixProtocol(
-        dwdsDevHandlerPath,
-        windowLocationProtocol: window.location.protocol,
-      );
-      final fixedUri = Uri.parse(fixedPath);
-      final client = fixedUri.isScheme('ws') || fixedUri.isScheme('wss')
-          ? WebSocketClient(
-              await PersistentWebSocket.connect(
-                fixedUri,
-                onReconnect: initializeConnection,
-              ),
-            )
-          : SseSocketClient(SseClient(fixedPath, debugKey: 'InjectedClient'));
-
-      final restarter = switch (dartModuleStrategy) {
-        'require-js' => await RequireRestarter.create(),
-        'ddc-library-bundle' => DdcLibraryBundleRestarter(),
-        'ddc' || 'legacy' => DdcRestarter(),
-        _ => throw StateError('Unknown module strategy: $dartModuleStrategy'),
-      };
-
-      final manager = ReloadingManager(client, restarter);
-
-      hotReloadStartJs = () {
-        return manager.hotReloadStart(hotReloadReloadedSourcesPath).toJS;
-      }.toJS;
-
-      hotReloadEndJs = () {
-        return manager.hotReloadEnd().toJS;
-      }.toJS;
-
-      hotRestartBeginJs = () {
-        return manager.hotRestartBegin(hotReloadReloadedSourcesPath).toJS;
-      }.toJS;
-
-      hotRestartEndJs = manager.hotRestartEnd.toJS;
-
-      Completer? readyToRunMainCompleter;
-
-      hotRestartJs = (String runId, [bool? pauseIsolatesOnStart]) {
-        if (pauseIsolatesOnStart ?? false) {
-          readyToRunMainCompleter = Completer();
-          return manager
-              .hotRestart(
-                runId: runId,
-                readyToRunMain: readyToRunMainCompleter!.future,
-                reloadedSourcesPath: hotRestartReloadedSourcesPath,
-              )
-              .toJS;
-        } else {
-          return manager
-              .hotRestart(
-                runId: runId,
-                reloadedSourcesPath: hotRestartReloadedSourcesPath,
-              )
-              .toJS;
-        }
-      }.toJS;
-
-      requestHotRestartJs = (String runId) {
-        _trySendEvent(
-          client.sink,
-          jsonEncode([
-            'HotRestartRequest',
-            HotRestartRequest(id: runId).toJson(),
-          ]),
-        );
-      }.toJS;
-
-      readyToRunMainJs = () {
-        if (readyToRunMainCompleter == null) return;
-        if (readyToRunMainCompleter!.isCompleted) return;
-        readyToRunMainCompleter!.complete();
-        readyToRunMainCompleter = null;
-      }.toJS;
-
-      final debugEventController = BatchedStreamController<DebugEvent>(
-        delay: _batchDelayMilliseconds,
-      );
-      debugEventController.stream.listen((events) {
-        if (dartEmitDebugEvents) {
-          _trySendEvent(
-            client.sink,
-            jsonEncode([
-              'BatchedDebugEvents',
-              BatchedDebugEvents(events: events).toJson(),
-            ]),
-          );
-        }
-      });
-
-      emitDebugEvent = (String kind, String eventData) {
-        if (dartEmitDebugEvents) {
-          _trySendEvent(
-            debugEventController.sink,
-            DebugEvent(
-              kind: kind,
-              eventData: eventData,
-              timestamp: DateTime.now().millisecondsSinceEpoch,
-            ),
-          );
-        }
-      }.toJS;
-
-      emitRegisterEvent = (String eventData) {
-        _trySendEvent(
-          client.sink,
-          jsonEncode([
-            'RegisterEvent',
-            RegisterEvent(
-              eventData: eventData,
-              timestamp: DateTime.now().millisecondsSinceEpoch,
-            ).toJson(),
-          ]),
-        );
-      }.toJS;
-
-      launchDevToolsJs = () {
-        if (!_isChromium) {
-          window.alert(
-            'Dart DevTools is only supported on Chromium based browsers.',
-          );
-          return;
-        }
-        _trySendEvent(
-          client.sink,
-          jsonEncode(
-            DevToolsRequest(appId: dartAppId, instanceId: dartAppInstanceId!),
-          ),
-        );
-      }.toJS;
-
-      var mainRun = false;
-      client.stream.listen(
-        (serialized) async {
-          final event = _deserializeEvent(jsonDecode(serialized));
-          if (event is BuildResult) {
-            if (reloadConfiguration == 'ReloadConfiguration.liveReload') {
-              manager.reloadPage();
-            } else if (reloadConfiguration ==
-                'ReloadConfiguration.hotRestart') {
-              if (dartModuleStrategy == 'ddc-library-bundle') {
-                await manager.hotRestartBegin(hotRestartReloadedSourcesPath!);
-                manager.hotRestartEnd();
-              } else {
-                await manager.hotRestart(
-                  reloadedSourcesPath: hotRestartReloadedSourcesPath,
-                );
-              }
-            } else if (reloadConfiguration == 'ReloadConfiguration.hotReload') {
-              await manager.hotReloadStart(hotReloadReloadedSourcesPath);
-              await manager.hotReloadEnd();
-            }
-          } else if (event is DevToolsResponse) {
-            if (!event.success) {
-              final alert = 'DevTools failed to open with:\n${event.error}';
-              if (event.promptExtension && window.confirm(alert)) {
-                window.open(
-                  'https://dart.dev/to/web-debug-extension',
-                  '_blank',
-                );
-              } else {
-                window.alert(alert);
-              }
-            }
-          } else if (event is RunRequest) {
-            // If main has already been run (e.g., in the situation where we
-            // lost connection to DWDS and reattached), don't try and run main
-            // again.
-            if (!mainRun) {
-              mainRun = true;
-              runMain();
-            }
-          } else if (event is ErrorResponse) {
-            window.reportError(
-              'Error from backend:\n\n'
-                      'Error: ${event.error}\n\n'
-                      'Stack Trace:\n${event.stackTrace}'
-                  .toJS,
-            );
-          } else if (event is HotReloadRequest) {
-            await handleWebSocketHotReloadRequest(event, manager, client.sink);
-          } else if (event is HotRestartRequest) {
-            await handleWebSocketHotRestartRequest(event, manager, client.sink);
-          } else if (event is ServiceExtensionRequest) {
-            await handleServiceExtensionRequest(event, client.sink, manager);
-          }
-        },
-        onError: (error) {
-          // An error is propagated on a full page reload as Chrome presumably
-          // forces the SSE connection to close in a bad state. This does not
-          // cause any adverse effects so simply swallow this error as to not
-          // print the misleading unhandled error message.
-        },
-      );
-
-      if (dwdsEnableDevToolsLaunch) {
-        window.onKeyDown.listen((Event e) {
-          if (e.isA<KeyboardEvent>()) {
-            final event = e as KeyboardEvent;
-            if (const [
-                  'd',
-                  'D',
-                  '∂', // alt-d output on Mac
-                  'Î', // shift-alt-D output on Mac
-                ].contains(event.key) &&
-                event.altKey &&
-                !event.ctrlKey &&
-                !event.metaKey) {
-              event.preventDefault();
-              launchDevToolsJs.callAsFunction();
-            }
-          }
-        });
-      }
-      initializeConnection(client.sink);
-    },
-    (error, stackTrace) {
-      print('''
-Unhandled error detected in the injected client.js script.
-
-You can disable this script in webdev by passing --no-injected-client if it
-is preventing your app from loading, but note that this will also prevent
-all debugging and hot reload/restart functionality from working.
-
-The original error is below, please file an issue at
-https://github.com/dart-lang/webdev/issues/new and attach this output:
-
-$error
-$stackTrace
-''');
-    },
-  );
-}
-
-void initializeConnection(StreamSink clientSink) {
-  if (dartModuleStrategy != 'ddc-library-bundle') {
-    if (_isChromium) {
-      _sendConnectRequest(clientSink);
-    } else {
-      // If not Chromium we just invoke main, devtools aren't supported.
-      runMain();
-    }
-  } else {
-    _sendConnectRequest(clientSink);
-  }
-  _launchCommunicationWithDebugExtension();
-}
-
-void _trySendEvent<T>(StreamSink<T> sink, T serialized) {
-  try {
-    sink.add(serialized);
-    // ignore: avoid_catching_errors
-  } on StateError catch (_) {
-    // An error is propagated on a full page reload as Chrome presumably
-    // forces the SSE connection to close in a bad state.
-    print(
-      'Cannot send event $serialized. '
-      'Injected client connection is closed.',
-    );
-  }
-}
-
-/// Deserializes incoming events from the server.
-/// Handles wire format ['TypeName', json] for plain Dart types.
-Object? _deserializeEvent(dynamic decoded) {
-  if (decoded case [final String typeName, ...]) {
-    // For Map-based RPC data types, the second element is the JSON map.
-    final jsonData = switch (decoded) {
-      [_, final Map<String, dynamic> map] => map,
-      _ => const <String, dynamic>{},
-    };
-
-    return switch (typeName) {
-      // List-based RPC data types:
-      'DevToolsResponse' => DevToolsResponse.fromJson(decoded),
-      // Map-based RPC data types:
-      'ConnectRequest' => ConnectRequest.fromJson(jsonData),
-      'RunRequest' => RunRequest.fromJson(jsonData),
-      'HotReloadRequest' => HotReloadRequest.fromJson(jsonData),
-      'HotRestartRequest' => HotRestartRequest.fromJson(jsonData),
-      'ServiceExtensionRequest' => ServiceExtensionRequest.fromJson(jsonData),
-      'BuildResult' => BuildResult.fromJson(jsonData),
-      'ErrorResponse' => ErrorResponse.fromJson(jsonData),
-      'PingRequest' => PingRequest.fromJson(jsonData),
-      _ => null,
-    };
-  }
-  return null;
-}
-
-void _sendConnectRequest(StreamSink clientSink) {
-  final request = ConnectRequest(
-    appId: dartAppId,
-    instanceId: dartAppInstanceId!,
-    entrypointPath: dartEntrypointPath,
-  );
-  _trySendEvent(clientSink, jsonEncode(['ConnectRequest', request.toJson()]));
-}
-
-void _launchCommunicationWithDebugExtension() {
-  // Listen for an event from the Dart Debug Extension to authenticate the
-  // user (sent once the extension receives the dart-app-read event):
-  _listenForDebugExtensionAuthRequest();
-
-  // Send the dart-app-ready event along with debug info to the Dart Debug
-  // Extension so that it can debug the Dart app:
-  final debugInfoJson = jsonEncode(
-    DebugInfo(
-      appEntrypointPath: dartEntrypointPath,
-      appId: windowContext.$dartAppId,
-      appInstanceId: dartAppInstanceId,
-      appOrigin: window.location.origin,
-      appUrl: window.location.href,
-      authUrl: _authUrl,
-      extensionUrl: windowContext.$dartExtensionUri,
-      isInternalBuild: windowContext.$isInternalBuild,
-      isFlutterApp: windowContext.$isFlutterApp,
-      workspaceName: dartWorkspaceName,
-    ),
-  );
-  _dispatchEvent('dart-app-ready', debugInfoJson);
-}
-
-void _dispatchEvent(String message, String detail) {
-  final event = CustomEvent(message, CustomEventInit(detail: detail.toJS));
-  document.dispatchEvent(event);
-}
-
-void _listenForDebugExtensionAuthRequest() {
-  window.addEventListener('message', _handleAuthRequest.toJS);
-}
-
-void _handleAuthRequest(Event event) {
-  final messageEvent = event as MessageEvent;
-  final data = messageEvent.data;
-
-  if (!data.typeofEquals('string')) return;
-  if ((data as JSString).toDart != 'dart-auth-request') return;
-
-  // Notify the Dart Debug Extension of authentication status:
-  if (_authUrl != null) {
-    _authenticateUser(_authUrl!).then(
-      (isAuthenticated) =>
-          _dispatchEvent('dart-auth-response', '$isAuthenticated'),
-    );
-  }
-}
-
-Future<bool> _authenticateUser(String authUrl) async {
-  final client = BrowserClient()..withCredentials = true;
-  final response = await client.get(Uri.parse(authUrl));
-  final responseText = response.body;
-  return responseText.contains('Dart Debug Authentication Success!');
-}
-
-void _sendResponse<T>(
-  StreamSink clientSink,
-  T Function(String, bool, String?) constructor,
-  String requestId, {
-  bool success = true,
-  String? errorMessage,
-}) {
-  final response = constructor(requestId, success, errorMessage);
-  final encoded = switch (response) {
-    HotReloadResponse() => ['HotReloadResponse', response.toJson()],
-    HotRestartResponse() => ['HotRestartResponse', response.toJson()],
-    _ => throw UnsupportedError('Unknown response type: $response'),
-  };
-
-  _trySendEvent(clientSink, jsonEncode(encoded));
-}
-
-void _sendHotReloadResponse(
-  StreamSink clientSink,
-  String requestId, {
-  bool success = true,
-  String? errorMessage,
-}) {
-  _sendResponse<HotReloadResponse>(
-    clientSink,
-    (id, success, errorMessage) =>
-        HotReloadResponse(id: id, success: success, errorMessage: errorMessage),
-    requestId,
-    success: success,
-    errorMessage: errorMessage,
-  );
-}
-
-void _sendHotRestartResponse(
-  StreamSink clientSink,
-  String requestId, {
-  bool success = true,
-  String? errorMessage,
-}) {
-  _sendResponse<HotRestartResponse>(
-    clientSink,
-    (id, success, errorMessage) => HotRestartResponse(
-      id: id,
-      success: success,
-      errorMessage: errorMessage,
-    ),
-    requestId,
-    success: success,
-    errorMessage: errorMessage,
-  );
-}
-
-void _sendServiceExtensionResponse(
-  StreamSink clientSink,
-  String requestId, {
-  bool success = true,
-  String? errorMessage,
-  int? errorCode,
-  Map<String, dynamic>? result,
-}) {
-  final response = ServiceExtensionResponse.fromResult(
-    id: requestId,
-    success: success,
-    errorMessage: errorMessage,
-    errorCode: errorCode,
-    result: result,
-  );
-  _trySendEvent(
-    clientSink,
-    jsonEncode(['ServiceExtensionResponse', response.toJson()]),
-  );
-}
-
-Future<void> handleWebSocketHotReloadRequest(
-  HotReloadRequest event,
-  ReloadingManager manager,
-  StreamSink clientSink,
-) async {
-  final requestId = event.id;
-  try {
-    await manager.hotReloadStart(hotReloadReloadedSourcesPath);
-    await manager.hotReloadEnd();
-    _sendHotReloadResponse(clientSink, requestId, success: true);
-  } catch (e) {
-    _sendHotReloadResponse(
-      clientSink,
-      requestId,
-      success: false,
-      errorMessage: e.toString(),
-    );
-  }
-}
-
-Future<void> handleWebSocketHotRestartRequest(
-  HotRestartRequest event,
-  ReloadingManager manager,
-  StreamSink clientSink,
-) async {
-  final requestId = event.id;
-  try {
-    final runId = const Uuid().v4();
-    if (manager.supportsTwoPhaseHotRestart) {
-      await manager.hotRestartBegin(hotRestartReloadedSourcesPath!);
-      manager.hotRestartEnd();
-    } else {
-      // TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd.
-      // https://github.com/dart-lang/webdev/issues/2826
-      await manager.hotRestart(
-        runId: runId,
-        reloadedSourcesPath: hotRestartReloadedSourcesPath,
-      );
-    }
-    _sendHotRestartResponse(clientSink, requestId, success: true);
-  } catch (e) {
-    _sendHotRestartResponse(
-      clientSink,
-      requestId,
-      success: false,
-      errorMessage: e.toString(),
-    );
-  }
-}
-
-Future<void> handleServiceExtensionRequest(
-  ServiceExtensionRequest request,
-  StreamSink clientSink,
-  ReloadingManager manager,
-) async {
-  try {
-    final result = await manager.handleServiceExtension(
-      request.method,
-      request.args,
-    );
-
-    if (result != null) {
-      _sendServiceExtensionResponse(
-        clientSink,
-        request.id,
-        success: true,
-        result: result,
-      );
-    } else {
-      // Service extension not supported by this restarter type
-      _sendServiceExtensionResponse(
-        clientSink,
-        request.id,
-        success: false,
-        errorMessage: 'Service extension not supported',
-        errorCode: -32601, // Method not found
-      );
-    }
-  } catch (e) {
-    _sendServiceExtensionResponse(
-      clientSink,
-      request.id,
-      success: false,
-      errorMessage: e.toString(),
-    );
-  }
-}
-
-@JS(r'$dartAppId')
-external String get dartAppId;
-
-@JS(r'$dartAppInstanceId')
-external String? get dartAppInstanceId;
-
-@JS(r'$dwdsDevHandlerPath')
-external String get dwdsDevHandlerPath;
-
-@JS(r'$dartAppInstanceId')
-external set dartAppInstanceId(String? id);
-
-@JS(r'$dartModuleStrategy')
-external String get dartModuleStrategy;
-
-@JS(r'$dartHotReloadStartDwds')
-external set hotReloadStartJs(JSFunction cb);
-
-@JS(r'$dartHotReloadEndDwds')
-external set hotReloadEndJs(JSFunction cb);
-
-@JS(r'$dartHotRestartBeginDwds')
-external set hotRestartBeginJs(JSFunction cb);
-
-@JS(r'$dartHotRestartEndDwds')
-external set hotRestartEndJs(JSFunction cb);
-
-@JS(r'$reloadedSourcesPath')
-external String? get _reloadedSourcesPath;
-
-String? get hotRestartReloadedSourcesPath => _reloadedSourcesPath;
-
-String get hotReloadReloadedSourcesPath {
-  final path = _reloadedSourcesPath;
-  assert(
-    path != null,
-    "Expected 'reloadedSourcesPath' to not be null in a hot reload.",
-  );
-  return path!;
-}
-
-/// Debugger-initiated hot restart.
-// TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd.
-// https://github.com/dart-lang/webdev/issues/2826
-@JS(r'$dartHotRestartDwds')
-external set hotRestartJs(JSFunction cb);
-
-/// App-initiated hot restart.
-///
-/// When there's no debugger attached, the DWDS dev handler sends the request
-/// back, and it will be handled by the client stream listener.
-@JS(r'$dartRequestHotRestartDwds')
-external set requestHotRestartJs(JSFunction cb);
-
-@JS(r'$dartReadyToRunMain')
-external set readyToRunMainJs(JSFunction cb);
-
-@JS(r'$launchDevTools')
-external JSFunction get launchDevToolsJs;
-
-@JS(r'$launchDevTools')
-external set launchDevToolsJs(JSFunction cb);
-
-@JS(r'$dartReloadConfiguration')
-external String get reloadConfiguration;
-
-@JS(r'$dartEntrypointPath')
-external String get dartEntrypointPath;
-
-@JS(r'$dwdsEnableDevToolsLaunch')
-external bool get dwdsEnableDevToolsLaunch;
-
-@JS(r'$dartEmitDebugEvents')
-external bool get dartEmitDebugEvents;
-
-@JS(r'$emitDebugEvent')
-external set emitDebugEvent(JSFunction func);
-
-@JS(r'$emitRegisterEvent')
-external set emitRegisterEvent(JSFunction func);
-
-@JS(r'$dartWorkspaceName')
-external String? get dartWorkspaceName;
-
-bool get _isChromium => window.navigator.vendor.contains('Google');
-
-/// Returns `true` if the current page was loaded by a browser reload.
-bool get _isPageReload {
-  try {
-    final entries = window.performance.getEntriesByType('navigation').toDart;
-    if (entries.isEmpty) return false;
-    return (entries.first as PerformanceNavigationTiming).type == 'reload';
-  } catch (_) {
-    return false;
-  }
-}
-
-String? get _authUrl {
-  final extensionUrl = windowContext.$dartExtensionUri;
-  if (extensionUrl == null) return null;
-  final authUrl = Uri.parse(extensionUrl).replace(path: authenticationPath);
-  switch (authUrl.scheme) {
-    case 'ws':
-      return authUrl.replace(scheme: 'http').toString();
-    case 'wss':
-      return authUrl.replace(scheme: 'https').toString();
-    default:
-      return authUrl.toString();
-  }
-}
diff --git a/dwds/web/reloader/ddc_library_bundle_restarter.dart b/dwds/web/reloader/ddc_library_bundle_restarter.dart
deleted file mode 100644
index 630890b..0000000
--- a/dwds/web/reloader/ddc_library_bundle_restarter.dart
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:js_interop';
-
-import 'package:dwds/src/utilities/shared.dart';
-
-import 'restarter.dart';
-
-@JS('dartDevEmbedder')
-external _DartDevEmbedder get _dartDevEmbedder;
-
-extension type _DartDevEmbedder._(JSObject _) implements JSObject {
-  external _Debugger get debugger;
-  external JSPromise<JSArray<JSObject>?> hotRestart([
-    JSArray<JSObject>? reloadedSources,
-  ]);
-  external JSPromise<JSArray<JSObject>> hotRestartBegin([
-    JSArray<JSObject>? reloadedSources,
-  ]);
-  external void hotRestartEnd();
-
-  external JSPromise<JSAny?> hotReload(
-    JSArray<JSString> filesToLoad,
-    JSArray<JSString> librariesToReload,
-  );
-  external _DartDevEmbedderConfig get config;
-}
-
-extension type _DartDevEmbedderConfig._(JSObject _) implements JSObject {
-  external JSFunction? capturedMainHandler;
-  external JSFunction? capturedHotReloadEndHandler;
-}
-
-extension type _Debugger._(JSObject _) implements JSObject {
-  external JSPromise<JSString> invokeExtension(String key, String params);
-  external JSArray<JSString> get extensionNames;
-
-  Future<void> maybeInvokeFlutterDisassemble() async {
-    final method = 'ext.flutter.disassemble';
-    if (extensionNames.toDart.contains(method.toJS)) {
-      await invokeExtension(method, '{}').toDart;
-    }
-  }
-
-  Future<void> maybeInvokeFlutterReassemble() async {
-    final method = 'ext.flutter.reassemble';
-    if (extensionNames.toDart.contains(method.toJS)) {
-      await invokeExtension(method, '{}').toDart;
-    }
-  }
-}
-
-@JS('XMLHttpRequest')
-extension type _XMLHttpRequest._(JSObject _) implements JSObject {
-  external _XMLHttpRequest();
-  external set withCredentials(bool value);
-  external set onreadystatechange(JSFunction fun);
-  external void open(String method, String url, bool async);
-  void get(String url, bool async) => open('GET', url, async);
-  external void send();
-  external int get readyState;
-  external int get status;
-  external String get responseText;
-}
-
-extension on JSArray<JSString> {
-  external void push(JSString value);
-}
-
-class DdcLibraryBundleRestarter implements Restarter, TwoPhaseRestarter {
-  JSFunction? _capturedHotReloadEndCallback;
-
-  Future<void> _runMainWhenReady(
-    Future? readyToRunMain,
-    JSFunction runMain,
-  ) async {
-    if (readyToRunMain != null) {
-      await readyToRunMain;
-    }
-
-    runMain.callAsFunction();
-  }
-
-  Future<List<Map>> _getSrcModuleLibraries(String reloadedSourcesPath) async {
-    final completer = Completer<String>();
-    final xhr = _XMLHttpRequest();
-    xhr.onreadystatechange = () {
-      // If the request has completed and is OK or unchanged, send the response
-      // text. Otherwise, we should report an error reading the reloaded
-      // sources file.
-      if (xhr.readyState == 4) {
-        if (xhr.status == 200 || xhr.status == 304) {
-          completer.complete(xhr.responseText);
-        } else {
-          completer.completeError(
-            'Failed to fetch reloaded sources at $reloadedSourcesPath.',
-          );
-        }
-      }
-    }.toJS;
-    xhr.get(reloadedSourcesPath, true);
-    xhr.send();
-    final responseText = await completer.future;
-
-    return (json.decode(responseText) as List).cast<Map>();
-  }
-
-  @override
-  Future<(bool, JSArray<JSObject>)> restart({
-    String? runId,
-    Future? readyToRunMain,
-    String? reloadedSourcesPath,
-  }) async {
-    assert(
-      reloadedSourcesPath != null,
-      "Expected 'reloadedSourcesPath' to not be null in a hot restart.",
-    );
-    await _dartDevEmbedder.debugger.maybeInvokeFlutterDisassemble();
-    final mainHandler = (JSFunction runMain) {
-      _dartDevEmbedder.config.capturedMainHandler = null;
-      safeUnawaited(_runMainWhenReady(readyToRunMain, runMain));
-    }.toJS;
-    _dartDevEmbedder.config.capturedMainHandler = mainHandler;
-    final srcModuleLibraries = await _getSrcModuleLibraries(
-      reloadedSourcesPath!,
-    );
-    await _dartDevEmbedder.hotRestart().toDart;
-    return (true, srcModuleLibraries.jsify() as JSArray<JSObject>);
-  }
-
-  @override
-  Future<JSArray<JSObject>> hotRestartBegin(String reloadedSourcesPath) async {
-    await _dartDevEmbedder.debugger.maybeInvokeFlutterDisassemble();
-    final srcModuleLibraries = await _getSrcModuleLibraries(
-      reloadedSourcesPath,
-    );
-    final jsFilesToRequest = srcModuleLibraries.jsify() as JSArray<JSObject>;
-    final requestedJsFiles = await _dartDevEmbedder
-        .hotRestartBegin(jsFilesToRequest)
-        .toDart;
-    return requestedJsFiles;
-  }
-
-  @override
-  void hotRestartEnd() => _dartDevEmbedder.hotRestartEnd();
-
-  @override
-  Future<JSArray<JSObject>> hotReloadStart(String reloadedSourcesPath) async {
-    final filesToLoad = JSArray<JSString>();
-    final librariesToReload = JSArray<JSString>();
-    final srcModuleLibraries = await _getSrcModuleLibraries(
-      reloadedSourcesPath,
-    );
-    for (final srcModuleLibrary in srcModuleLibraries) {
-      final srcModuleLibraryCast = srcModuleLibrary.cast<String, Object>();
-      final src = srcModuleLibraryCast['src'] as String;
-      final libraries = (srcModuleLibraryCast['libraries'] as List)
-          .cast<String>();
-      filesToLoad.push(src.toJS);
-      for (final library in libraries) {
-        librariesToReload.push(library.toJS);
-      }
-    }
-    _dartDevEmbedder.config.capturedHotReloadEndHandler =
-        (JSFunction hotReloadEndCallback) {
-          _capturedHotReloadEndCallback = hotReloadEndCallback;
-        }.toJS;
-    await _dartDevEmbedder.hotReload(filesToLoad, librariesToReload).toDart;
-    return srcModuleLibraries.jsify() as JSArray<JSObject>;
-  }
-
-  @override
-  Future<void> hotReloadEnd() async {
-    // Requires a previous call to `hotReloadStart`.
-    _capturedHotReloadEndCallback!.callAsFunction();
-    _dartDevEmbedder.config.capturedHotReloadEndHandler = null;
-    _capturedHotReloadEndCallback = null;
-  }
-
-  /// Handles service extension requests using the dart dev embedder
-  Future<Map<String, dynamic>?> handleServiceExtension(
-    String method,
-    Map<String, dynamic> args,
-  ) async {
-    if (method == 'ext.flutter.reassemble') {
-      await _dartDevEmbedder.debugger.maybeInvokeFlutterReassemble();
-      return {'status': 'reassemble invoked'};
-    } else if (method == 'getExtensionRpcs') {
-      final rpcs = _dartDevEmbedder.debugger.extensionNames.toDart
-          .cast<String>();
-      return {'rpcs': rpcs};
-    } else {
-      // For other extension methods, delegate to the debugger
-      final params = args.isNotEmpty ? jsonEncode(args) : '{}';
-      final resultJson = await _dartDevEmbedder.debugger
-          .invokeExtension(method, params)
-          .toDart;
-      return jsonDecode(resultJson.toDart) as Map<String, dynamic>;
-    }
-  }
-}
diff --git a/dwds/web/reloader/ddc_restarter.dart b/dwds/web/reloader/ddc_restarter.dart
deleted file mode 100644
index 696f4e4..0000000
--- a/dwds/web/reloader/ddc_restarter.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:js_interop';
-
-import 'package:web/web.dart';
-
-import 'restarter.dart';
-
-@JS(r'dart_library')
-external DartLibrary dartLibrary;
-
-extension type DartLibrary._(JSObject _) implements JSObject {
-  external void reload(ReloadConfiguration configuration);
-}
-
-@anonymous
-@JS()
-@staticInterop
-class ReloadConfiguration {
-  external factory ReloadConfiguration({
-    String? runId,
-    JSPromise? readyToRunMain,
-  });
-}
-
-class DdcRestarter implements Restarter {
-  @override
-  Future<(bool, JSArray<JSObject>?)> restart({
-    String? runId,
-    Future? readyToRunMain,
-    String? reloadedSourcesPath,
-  }) async {
-    assert(
-      reloadedSourcesPath == null,
-      "'reloadedSourcesPath' should not be used for the DDC module format.",
-    );
-    dartLibrary.reload(
-      ReloadConfiguration(runId: runId, readyToRunMain: readyToRunMain?.toJS),
-    );
-    final reloadCompleter = Completer<bool>();
-    final sub = window.onMessage.listen((event) {
-      final message = event.data?.dartify();
-      if (message is Map &&
-          message['type'] == 'DDC_STATE_CHANGE' &&
-          message['state'] == 'restart_end') {
-        reloadCompleter.complete(true);
-      }
-    });
-    return (
-      await reloadCompleter.future.then((value) {
-        sub.cancel();
-        return value;
-      }),
-      null,
-    );
-  }
-
-  @override
-  Future<void> hotReloadEnd() => throw UnimplementedError(
-    'Hot reload is not supported for the DDC module format.',
-  );
-
-  @override
-  Future<JSArray<JSObject>> hotReloadStart(String reloadedSourcesPath) =>
-      throw UnimplementedError(
-        'Hot reload is not supported for the DDC module format.',
-      );
-}
diff --git a/dwds/web/reloader/manager.dart b/dwds/web/reloader/manager.dart
deleted file mode 100644
index f1f7ac1..0000000
--- a/dwds/web/reloader/manager.dart
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2019, 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:convert';
-import 'dart:js_interop';
-
-import 'package:dwds/data/isolate_events.dart';
-import 'package:dwds/src/sockets.dart';
-import 'package:web/web.dart';
-
-import 'ddc_library_bundle_restarter.dart';
-import 'restarter.dart';
-
-class ReloadingManager {
-  final SocketClient _client;
-  final Restarter _restarter;
-
-  ReloadingManager(this._client, this._restarter);
-
-  /// Attempts to perform a hot restart.
-  ///
-  /// [runId] is used to hot restart code in the browser for all apps that
-  /// - are loaded on the same page
-  /// - called hotRestart with the same runId
-  ///
-  /// The apps are restarted at the same time on the first call.
-  ///
-  /// [reloadedSourcesPath] is the path to a JSONified list of maps that
-  /// represents the sources that were reloaded in this restart and follows the
-  /// following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  ///
-  /// Returns either the JS version of the list of maps from
-  /// [reloadedSourcesPath] if [reloadedSourcesPath] is non-null and null
-  /// otherwise.
-  Future<JSArray<JSObject>?> hotRestart({
-    String? runId,
-    Future? readyToRunMain,
-    String? reloadedSourcesPath,
-  }) async {
-    _beforeRestart();
-    final result = await _restarter.restart(
-      runId: runId,
-      readyToRunMain: readyToRunMain,
-      reloadedSourcesPath: reloadedSourcesPath,
-    );
-    _afterRestart(result.$1);
-    return result.$2;
-  }
-
-  bool get supportsTwoPhaseHotRestart => _restarter is TwoPhaseRestarter;
-
-  Future<JSArray<JSObject>> hotRestartBegin(String reloadedSourcesPath) async {
-    final requestedSources = await (_restarter as TwoPhaseRestarter)
-        .hotRestartBegin(reloadedSourcesPath);
-    // Notify package:dwds that the isolate is exiting and a new isolate will
-    // be created.
-    _beforeRestart();
-    _afterRestart(true);
-    return requestedSources;
-  }
-
-  void hotRestartEnd() {
-    (_restarter as TwoPhaseRestarter).hotRestartEnd();
-  }
-
-  /// After a previous call to [hotReloadStart], completes the hot
-  /// reload by pushing the libraries into the Dart runtime.
-  Future<void> hotReloadEnd() async {
-    await _restarter.hotReloadEnd();
-  }
-
-  /// Using [reloadedSourcesPath] as the path to a JSONified list of maps which
-  /// follows the following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// computes the sources and libraries to reload, loads them into the page,
-  /// and returns a JS version of the list of maps.
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  Future<JSArray<JSObject>> hotReloadStart(String reloadedSourcesPath) =>
-      _restarter.hotReloadStart(reloadedSourcesPath);
-
-  /// Does a hard reload of the application.
-  void reloadPage() {
-    window.location.reload();
-  }
-
-  /// Handles service extension requests by delegating to the appropriate
-  /// restarter
-  Future<Map<String, dynamic>?> handleServiceExtension(
-    String method,
-    Map<String, dynamic> args,
-  ) async {
-    final restarter = _restarter;
-    if (restarter is DdcLibraryBundleRestarter) {
-      return await restarter.handleServiceExtension(method, args);
-    }
-    // For other restarter types, return null to indicate not supported
-    return null;
-  }
-
-  void _afterRestart(bool succeeded) {
-    if (!succeeded) return;
-    // Notify package:dwds that the isolate has been created.
-    // package:dwds will respond with a [RunRequest].
-    _client.sink.add(jsonEncode(['IsolateStart', IsolateStart().toJson()]));
-  }
-
-  void _beforeRestart() {
-    // Notify package:dwds that the isolate is about to exit.
-    _client.sink.add(jsonEncode(['IsolateExit', IsolateExit().toJson()]));
-  }
-}
diff --git a/dwds/web/reloader/require_restarter.dart b/dwds/web/reloader/require_restarter.dart
deleted file mode 100644
index 61ba853..0000000
--- a/dwds/web/reloader/require_restarter.dart
+++ /dev/null
@@ -1,321 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:convert';
-import 'dart:js_interop';
-
-import 'package:dwds/src/utilities/shared.dart';
-import 'package:graphs/graphs.dart' as graphs;
-import 'package:http/browser_client.dart';
-import 'package:web/web.dart';
-
-import '../run_main.dart';
-import '../web_utils.dart';
-import 'restarter.dart';
-
-@JS(r'$dartRunMain')
-external set dartRunMain(JSFunction func);
-
-@JS(r'$dartRunMain')
-external JSFunction get dartRunMain;
-
-@JS(r'$requireLoader')
-external RequireLoader get requireLoader;
-
-@anonymous
-@JS()
-@staticInterop
-class RequireLoader {}
-
-extension RequireLoaderExtension on RequireLoader {
-  external String get digestsPath;
-
-  external JsMap<JSString, JSArray> get moduleParentsGraph;
-
-  external void forceLoadModule(
-    JSString moduleId,
-    JSFunction callback,
-    JSFunction onError,
-  );
-}
-
-@anonymous
-@JS()
-@staticInterop
-class Sdk {}
-
-@anonymous
-@JS()
-@staticInterop
-class SdkDeveloper {}
-
-@anonymous
-@JS()
-@staticInterop
-class SdkDart {}
-
-@anonymous
-@JS()
-@staticInterop
-class SdkExt {}
-
-@anonymous
-@JS()
-@staticInterop
-class MainLibrary {}
-
-@JS(r'$loadModuleConfig')
-external Sdk require(String value);
-
-Sdk get sdk => require('dart_sdk');
-
-extension SdkExtension on Sdk {
-  external SdkDart get dart;
-  external SdkDeveloper get developer;
-}
-
-extension SdkDeveloperExtension on SdkDeveloper {
-  external JSPromise<JSString> invokeExtension(String key, String params);
-  external SdkExt get _extensions;
-
-  Future<void> maybeInvokeFlutterDisassemble() async {
-    final method = 'ext.flutter.disassemble';
-    if (_extensions.containsKey(method)) {
-      await invokeExtension(method, '{}').toDart;
-    }
-  }
-}
-
-extension SdkDartExtension on SdkDart {
-  external void hotRestart();
-  external JSObject getModuleLibraries(String? moduleId);
-
-  MainLibrary getMainLibrary(String? moduleId) {
-    final libraries = getModuleLibraries(moduleId).values;
-    return libraries.first! as MainLibrary;
-  }
-}
-
-extension SdkExtExtension on SdkExt {
-  external bool containsKey(String key);
-}
-
-extension MainLibraryExtension on MainLibrary {
-  external void main();
-}
-
-class HotReloadFailedException implements Exception {
-  final String _s;
-
-  HotReloadFailedException(this._s);
-  @override
-  String toString() => "HotReloadFailedException: '$_s'";
-}
-
-/// Handles hot restart reloading for use with the require module system.
-class RequireRestarter implements Restarter {
-  /// The last known digests of all the modules in the application.
-  ///
-  /// This is updated in place during calls to hotRestart.
-  static late Map<String, String> _lastKnownDigests;
-
-  final _moduleOrdering = HashMap<String, int>();
-  late SplayTreeSet<String> _dirtyModules;
-  var _running = Completer<bool>()..complete(true);
-
-  int count = 0;
-
-  RequireRestarter._() {
-    _dirtyModules = SplayTreeSet(_moduleTopologicalCompare);
-  }
-
-  @override
-  Future<(bool, JSArray<JSObject>?)> restart({
-    String? runId,
-    Future? readyToRunMain,
-    String? reloadedSourcesPath,
-  }) async {
-    assert(
-      reloadedSourcesPath == null,
-      "'reloadedSourcesPath' should not be used for the AMD module format.",
-    );
-    await sdk.developer.maybeInvokeFlutterDisassemble();
-
-    final newDigests = await _getDigests();
-    final modulesToLoad = <String>[];
-    for (final moduleId in newDigests.keys) {
-      if (!_lastKnownDigests.containsKey(moduleId)) {
-        print(
-          'Error during script reloading, refreshing the page. \n'
-          'Unable to find an existing digest for module: $moduleId.',
-        );
-        _reloadPage();
-      } else if (_lastKnownDigests[moduleId] != newDigests[moduleId]) {
-        _lastKnownDigests[moduleId] = newDigests[moduleId]!;
-        modulesToLoad.add(moduleId);
-      }
-    }
-
-    var result = true;
-    if (modulesToLoad.isNotEmpty) {
-      _updateGraph();
-      result = await _reload(modulesToLoad);
-    }
-    sdk.dart.hotRestart();
-    safeUnawaited(_runMainWhenReady(readyToRunMain));
-    return (result, null);
-  }
-
-  @override
-  Future<void> hotReloadEnd() => throw UnimplementedError(
-    'Hot reload is not supported for the AMD module format.',
-  );
-
-  @override
-  Future<JSArray<JSObject>> hotReloadStart(String reloadedSourcesPath) =>
-      throw UnimplementedError(
-        'Hot reload is not supported for the AMD module format.',
-      );
-
-  Future<void> _runMainWhenReady(Future? readyToRunMain) async {
-    if (readyToRunMain != null) {
-      await readyToRunMain;
-    }
-    runMain();
-  }
-
-  Iterable<String> _allModules() => requireLoader.moduleParentsGraph.modules;
-
-  Future<Map<String, String>> _getDigests() async {
-    final client = BrowserClient();
-    final response = await client.get(Uri.parse(requireLoader.digestsPath));
-    return (jsonDecode(response.body) as Map).cast<String, String>();
-  }
-
-  Future<void> _initialize() async {
-    _lastKnownDigests = await _getDigests();
-  }
-
-  List<String> _moduleParents(String module) =>
-      requireLoader.moduleParentsGraph.parents(module);
-
-  int _moduleTopologicalCompare(String module1, String module2) {
-    var topological = 0;
-
-    final order1 = _moduleOrdering[module1];
-    final order2 = _moduleOrdering[module2];
-
-    if (order1 == null || order2 == null) {
-      final missing = order1 == null ? module1 : module2;
-      throw HotReloadFailedException(
-        'Unable to fetch ordering info for module: $missing',
-      );
-    }
-
-    topological = Comparable.compare(
-      _moduleOrdering[module2]!,
-      _moduleOrdering[module1]!,
-    );
-
-    if (topological == 0) {
-      // If modules are in cycle (same strongly connected component) compare
-      // their string id, to ensure total ordering for SplayTreeSet uniqueness.
-      topological = module1.compareTo(module2);
-    }
-
-    return topological;
-  }
-
-  /// Returns `true` if the reload was fully handled, `false` if it failed
-  /// explicitly, or `null` for an unhandled reload.
-  Future<bool> _reload(List<String> modules) async {
-    final dart = sdk.dart;
-
-    // As function is async, it can potentially be called second time while
-    // first invocation is still running. In this case just mark as dirty and
-    // wait until loop from the first call will do the work
-    if (!_running.isCompleted) return await _running.future;
-    _running = Completer();
-
-    var reloadedModules = 0;
-    try {
-      _dirtyModules.addAll(modules);
-      String? previousModuleId;
-      while (_dirtyModules.isNotEmpty) {
-        final moduleId = _dirtyModules.first;
-        _dirtyModules.remove(moduleId);
-        final parentIds = _moduleParents(moduleId);
-        // Check if this is the root / bootstrap module.
-        if (parentIds.isEmpty) {
-          // The bootstrap module is not reloaded but we need to update the
-          // $dartRunMain reference to the newly loaded child module.
-          // ignore: unnecessary_lambdas
-          dartRunMain = () {
-            dart.getMainLibrary(previousModuleId).main();
-          }.toJS;
-        } else {
-          ++reloadedModules;
-          await _reloadModule(moduleId);
-          parentIds.sort(_moduleTopologicalCompare);
-          _dirtyModules.addAll(parentIds);
-          previousModuleId = moduleId;
-        }
-      }
-      print('$reloadedModules module(s) were hot-reloaded.');
-      _running.complete(true);
-    } on HotReloadFailedException catch (e) {
-      print('Error during script reloading. Firing full page reload. $e');
-      _reloadPage();
-      _running.complete(false);
-    }
-    return _running.future;
-  }
-
-  Future<void> _reloadModule(String moduleId) {
-    final completer = Completer<void>();
-    final stackTrace = StackTrace.current;
-    requireLoader.forceLoadModule(
-      moduleId.toJS,
-      // Removing the argument type in complete()
-      // ignore: unnecessary_lambdas
-      () {
-        completer.complete();
-      }.toJS,
-      (JsError e) {
-        completer.completeError(
-          HotReloadFailedException(e.message),
-          stackTrace,
-        );
-      }.toJS,
-    );
-    return completer.future;
-  }
-
-  void _reloadPage() {
-    window.location.reload();
-  }
-
-  void _updateGraph() {
-    final allModules = _allModules();
-
-    final stronglyConnectedComponents = graphs.stronglyConnectedComponents(
-      allModules,
-      _moduleParents,
-    );
-    _moduleOrdering.clear();
-    for (var i = 0; i < stronglyConnectedComponents.length; i++) {
-      for (final module in stronglyConnectedComponents[i]) {
-        _moduleOrdering[module] = i;
-      }
-    }
-  }
-
-  static Future<RequireRestarter> create() async {
-    final reloader = RequireRestarter._();
-    await reloader._initialize();
-    return reloader;
-  }
-}
diff --git a/dwds/web/reloader/restarter.dart b/dwds/web/reloader/restarter.dart
deleted file mode 100644
index 1810cca..0000000
--- a/dwds/web/reloader/restarter.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2019, 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_interop';
-
-/// A Restarter that supports a hot restart over two phases.
-///
-/// The APIs here should be used in place of [Restarter.restart].
-///
-/// This is a temporary interface that is only useful while there are
-/// `Restarter`s that don't use the two phase restart.
-// TODO(nshahan): Move these members into `Restarter` when all have been
-// migrated to the two phase restart.
-abstract class TwoPhaseRestarter implements Restarter {
-  /// Starts a hot restart operation.
-  ///
-  /// Passes the [reloadedSourcesPath] through to the `DartDevEmbedder` and
-  /// bubbles up the returned array of scripts that were actually requested.
-  Future<JSArray<JSObject>> hotRestartBegin(String reloadedSourcesPath);
-
-  /// Finishes the hot restart operation that must have been previously started
-  /// by [hotRestartBegin].
-  void hotRestartEnd();
-}
-
-abstract class Restarter {
-  /// Attempts to perform a hot restart.
-  ///
-  /// [reloadedSourcesPath] is the path to a JSONified list of maps that
-  /// represents the sources that were reloaded in this restart and follows the
-  /// following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  ///
-  /// Returns a record containing whether the hot restart succeeded and either
-  /// the JS version of the list of maps from [reloadedSourcesPath] if
-  /// [reloadedSourcesPath] is non-null and null otherwise.
-  // TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd.
-  // https://github.com/dart-lang/webdev/issues/2826
-  Future<(bool, JSArray<JSObject>?)> restart({
-    String? runId,
-    Future? readyToRunMain,
-    String? reloadedSourcesPath,
-  });
-
-  /// After a previous call to [hotReloadStart], completes the hot
-  /// reload by pushing the libraries into the Dart runtime.
-  Future<void> hotReloadEnd();
-
-  /// Using [reloadedSourcesPath] as the path to a JSONified list of maps which
-  /// follows the following format:
-  ///
-  /// ```json
-  /// [
-  ///   {
-  ///     "src": "<base_uri>/<file_name>",
-  ///     "module": "<module_name>",
-  ///     "libraries": ["<lib1>", "<lib2>"],
-  ///   },
-  /// ]
-  /// ```
-  ///
-  /// computes the sources and libraries to reload, loads them into the page,
-  /// and returns a JS version of the list of maps.
-  ///
-  /// `src`: A string that corresponds to the file path containing a DDC library
-  /// bundle.
-  /// `module`: The name of the library bundle in `src`.
-  /// `libraries`: An array of strings containing the libraries that were
-  /// compiled in `src`.
-  Future<JSArray<JSObject>> hotReloadStart(String reloadedSourcesPath);
-}
diff --git a/dwds/web/run_main.dart b/dwds/web/run_main.dart
deleted file mode 100644
index 9ead9dd..0000000
--- a/dwds/web/run_main.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2019, 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_interop';
-
-import 'package:web/web.dart';
-
-// According to the CSP3 spec a nonce must be a valid base64 string.
-final _noncePattern = RegExp('^[\\w+/_-]+[=]{0,2}\$');
-
-/// Returns CSP nonce, if set for any script tag.
-String? _findNonce() {
-  final elements = window.document.querySelectorAll('script');
-
-  for (var i = 0; i < elements.length; i++) {
-    final element = elements.item(i);
-    final nonceValue = (element as HTMLElement).nonce;
-    if (_noncePattern.hasMatch(nonceValue)) {
-      return nonceValue;
-    }
-  }
-  return null;
-}
-
-/// Creates a script that will run properly when strict CSP is enforced.
-///
-/// More specifically, the script has the correct `nonce` value set.
-final HTMLElement Function() _createScript = (() {
-  final nonce = _findNonce();
-
-  if (nonce == null) {
-    return () => document.createElement('script') as HTMLElement;
-  }
-  return () {
-    final scriptElement = document.createElement('script') as HTMLElement;
-    return scriptElement..setAttribute('nonce', nonce);
-  };
-})();
-
-/// Runs `window.$dartRunMain()` by injecting a script tag.
-///
-/// We do this so that we don't see user exceptions bubble up in our own error
-/// handling zone.
-void runMain() {
-  final scriptElement = _createScript()
-    ..innerHTML = r'window.$dartRunMain();'.toJS;
-  document.body!.append(scriptElement.jsify()!);
-  // External tear-offs are not allowed.
-  // ignore: unnecessary_lambdas
-  Future.microtask(() => scriptElement.remove());
-}
diff --git a/dwds/web/web_utils.dart b/dwds/web/web_utils.dart
deleted file mode 100644
index c82c6ed..0000000
--- a/dwds/web/web_utils.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2023, 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_interop';
-
-@JS('window')
-external WindowContext get windowContext;
-
-@JS('Error')
-@staticInterop
-abstract class WindowContext {}
-
-extension WindowContextExtension on WindowContext {
-  external bool? get $isInternalBuild;
-  external bool? get $isFlutterApp;
-  external String? get $dartAppId;
-  external String? get $dartExtensionUri;
-}
-
-@JS('Array.from')
-external JSArray _jsArrayFrom(JSAny any);
-
-@JS('Object.values')
-external JSArray _jsObjectValues(JSAny any);
-
-@JS('Error')
-@staticInterop
-abstract class JsError {}
-
-extension JsErrorExtension on JsError {
-  external String get message;
-  external String get stack;
-}
-
-@JS('Map')
-@staticInterop
-abstract class JsMap<K extends JSAny, V extends JSAny> {}
-
-extension JsMapExtension<K extends JSAny, V extends JSAny> on JsMap<K, V> {
-  external V? get(K key);
-  external JSObject keys();
-}
-
-extension JSObjectExtension on JSObject {
-  Iterable<Object?> get values => _jsObjectValues(this).toDartIterable();
-}
-
-extension JSArrayExtension on JSArray {
-  Iterable<T> toDartIterable<T>() => toDart.map((e) => e.dartify() as T);
-
-  List<T> toDartList<T>() => toDartIterable<T>().toList();
-}
-
-extension ModuleDependencyGraph on JsMap<JSString, JSArray> {
-  Iterable<String> get modules => _jsArrayFrom(keys()).toDartIterable();
-
-  List<String> parents(String key) => get(key.toJS)?.toDartList() ?? [];
-}
diff --git a/dwds_test_common/.dartignore b/dwds_test_common/.dartignore
deleted file mode 100644
index fdaa1da..0000000
--- a/dwds_test_common/.dartignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Exclude test fixture packages from Dart tooling
-fixtures/
\ No newline at end of file
diff --git a/dwds_test_common/LICENSE b/dwds_test_common/LICENSE
deleted file mode 100644
index 9035a41..0000000
--- a/dwds_test_common/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2026, the Dart project authors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-    * Neither the name of Google LLC nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dwds_test_common/OWNERS b/dwds_test_common/OWNERS
deleted file mode 100644
index 77bdf63..0000000
--- a/dwds_test_common/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-set noparent
-# Dart Development Infrastructure Team
-file:/tools/OWNERS_DEV_INFRA
\ No newline at end of file
diff --git a/dwds_test_common/dart_test.yaml b/dwds_test_common/dart_test.yaml
deleted file mode 100644
index 50f6115..0000000
--- a/dwds_test_common/dart_test.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-concurrency: 1
-retry: 3
-
-tags:
-  # The release tests are only run from the release_reminder.yml workflow.
-  # This allows them to be skipped with the `prepare-release` label.
-  release:
diff --git a/dwds_test_common/fixtures/_experiment/pubspec.yaml b/dwds_test_common/fixtures/_experiment/pubspec.yaml
deleted file mode 100644
index b106411..0000000
--- a/dwds_test_common/fixtures/_experiment/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: _experiment
-version: 1.0.0
-description: >-
-  A fake package used for testing experimental language features.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.8.2
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_experiment/web/index.html b/dwds_test_common/fixtures/_experiment/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_experiment/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_experiment/web/main.dart b/dwds_test_common/fixtures/_experiment/web/main.dart
deleted file mode 100644
index 773fd1a..0000000
--- a/dwds_test_common/fixtures/_experiment/web/main.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2023, 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.
-
-// @dart = 3.9
-
-import 'dart:async';
-import 'dart:core';
-import 'dart:js_interop';
-
-@JS('document.body.append')
-external void append(String text);
-
-void main() {
-  // for evaluation
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    printSimpleLocalRecord();
-    printComplexLocalRecord();
-    printNestedLocalRecord();
-    printSimpleNamedLocalRecord();
-    printComplexNamedLocalRecord();
-    printNestedNamedLocalRecord();
-    print('Patterns'); // Breakpoint: callTestPattern1
-    testPattern(['a', 1]);
-    testPattern([3.14, 'b']);
-    testPattern([0, 1]);
-    testPattern2();
-    print('Classes');
-    testClass();
-  });
-
-  append('Program is running!');
-}
-
-void printSimpleLocalRecord() {
-  final record = (true, 3);
-  print(record); // Breakpoint: printSimpleLocalRecord
-}
-
-void printSimpleNamedLocalRecord() {
-  final record = (true, cat: 'Vasya');
-  print(record); // Breakpoint: printSimpleNamedLocalRecord
-}
-
-void printComplexLocalRecord() {
-  final record = (true, 3, {'a': 1, 'b': 5});
-  print(record); // Breakpoint: printComplexLocalRecord
-}
-
-void printComplexNamedLocalRecord() {
-  final record = (true, 3, array: {'a': 1, 'b': 5});
-  print(record); // Breakpoint: printComplexNamedLocalRecord
-}
-
-void printNestedLocalRecord() {
-  final record = (true, (false, 5));
-  print(record); // Breakpoint: printNestedLocalRecord
-}
-
-void printNestedNamedLocalRecord() {
-  final record = (true, inner: (false, 5));
-  print(record); // Breakpoint: printNestedNamedLocalRecord
-}
-
-void testClass() {
-  final greeter = GreeterClass(greeteeName: 'Charlie Brown');
-  greeter.sayHello();
-}
-
-String testPattern(Object obj) {
-  switch (obj) {
-    case [final a, final int n] || [final int n, final a]
-        when n == 1 && a is String:
-      return a.toString(); // Breakpoint: testPatternCase1
-    case [final double n, final a] || [final a, final double n]
-        when (n - 3.14).abs() < 0.001:
-      return a.toString(); // Breakpoint: testPatternCase2
-    default:
-      return 'default'; // Breakpoint: testPatternDefault
-  }
-}
-
-String testPattern2() {
-  final dog = 'Prismo';
-  final cats = ['Garfield', 'Tom']; // Breakpoint: testPattern2Case1
-  final [firstCat, secondCat] = cats;
-  print(firstCat); // Breakpoint: testPattern2Case2
-  return '$dog, $firstCat, $secondCat';
-}
-
-class GreeterClass {
-  final String greeteeName;
-  final bool useFrench;
-
-  GreeterClass({this.greeteeName = 'Snoopy', this.useFrench = false});
-
-  void sayHello() {
-    useFrench ? greetInFrench() : greetInEnglish();
-  }
-
-  void greetInEnglish() {
-    print('Hello $greeteeName'); // Breakpoint: testClass1Case1
-  }
-
-  void greetInFrench() {
-    print('Bonjour $greeteeName');
-  }
-}
diff --git a/dwds_test_common/fixtures/_test/example/append_body/index.html b/dwds_test_common/fixtures/_test/example/append_body/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test/example/append_body/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test/example/append_body/main.dart b/dwds_test_common/fixtures/_test/example/append_body/main.dart
deleted file mode 100644
index 8a89205..0000000
--- a/dwds_test_common/fixtures/_test/example/append_body/main.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:developer';
-import 'dart:js_interop';
-
-@JS('console.log')
-external void log(String _);
-
-// We use this to test whether a hot restart or a full reload occurred. In the
-// former, we should see the old log, but in the latter, we should not.
-@JS('\$previousLog')
-external String? previousLog;
-
-void main() {
-  var count = 0;
-  // For setting breakpoints.
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    print('Count is: ${++count}'); // Breakpoint: printCount
-  });
-
-  var logMessage = 'Hello World!';
-  // Note that we concatenate instead of logging each one separately to avoid
-  // possibly mixing up logs with a previous call to `main`.
-  if (previousLog != null) logMessage = '$previousLog $logMessage';
-  log(logMessage);
-  previousLog = logMessage;
-
-  registerExtension('ext.flutter.disassemble', (_, __) async {
-    log('start disassemble');
-    await Future.delayed(const Duration(seconds: 1));
-    log('end disassemble');
-    return ServiceExtensionResponse.result('{}');
-  });
-}
diff --git a/dwds_test_common/fixtures/_test/example/hello_world/index.html b/dwds_test_common/fixtures/_test/example/hello_world/index.html
deleted file mode 100644
index 9bd15c8..0000000
--- a/dwds_test_common/fixtures/_test/example/hello_world/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-
-<head>
-  <meta charset='utf-8'>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test/example/hello_world/main.dart b/dwds_test_common/fixtures/_test/example/hello_world/main.dart
deleted file mode 100644
index b4918d0..0000000
--- a/dwds_test_common/fixtures/_test/example/hello_world/main.dart
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:convert';
-import 'dart:developer';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:html';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:js';
-
-import 'package:intl/intl.dart';
-import 'package:path/path.dart' as p;
-
-part 'part.dart';
-
-// Create a series of top level objects for tests in
-// dwds/test/chrome_proxy_service_test.dart
-
-final topLevelList = () {
-  final l = List.filled(1001, 5);
-  l[4] = 100;
-  return l;
-}();
-
-final topLevelMap = LinkedHashMap.from(
-  Iterable.generate(1001).toList().reversed.toList().asMap(),
-);
-
-final myInstance = MyTestClass();
-
-void main() async {
-  print(DateFormat());
-  // Long running so that we can test the pause / resume behavior.
-  Timer.periodic(const Duration(seconds: 1), (_) {});
-
-  print(p.join('Hello', 'World')); // Breakpoint: printHelloWorld
-
-  // long running to test evaluateInFrame
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    final local = 42;
-    print(local); // Breakpoint: printLocal
-  });
-
-  context['inspectInstance'] = () {
-    inspect(myInstance);
-  };
-
-  context['postEvent'] = (String kind) {
-    postEvent(kind, {'example': 'data'});
-  };
-
-  context['registerExtension'] = (String method) {
-    registerExtension(method, (
-      String method,
-      Map<String, String> parameters,
-    ) async {
-      return ServiceExtensionResponse.result(jsonEncode(parameters));
-    });
-  };
-
-  context['registerExtensionWithError'] = (String method) {
-    registerExtension(method, (
-      String method,
-      Map<String, String> parameters,
-    ) async {
-      return ServiceExtensionResponse.error(
-        int.parse(parameters['code']!),
-        parameters['details']!,
-      );
-    });
-  };
-
-  context['sendLog'] = (String message) {
-    log(message, name: 'testLogCategory');
-  };
-
-  context['throwUncaughtException'] = () {
-    scheduleMicrotask(() => throw Exception('UncaughtException'));
-  };
-
-  Timer.periodic(const Duration(seconds: 1), (timer) {
-    printCount(); // Breakpoint: callPrintCount
-  });
-
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    asyncCall();
-  });
-
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    throwsException();
-  });
-
-  // Register one up front before the proxy connects, the isolate should still
-  // recognize this as an available extension.
-  registerExtension(
-    'ext.hello_world.existing',
-    (_, __) => Future.value(ServiceExtensionResponse.error(0, '')),
-  );
-
-  window.console.debug('Page Ready');
-}
-
-var count = 0;
-
-// An easy location to add a breakpoint.
-void printCount() {
-  print('The count is ${++count}'); // Breakpoint: inPrintCount
-  doSomething();
-}
-
-void asyncCall() async {
-  final now = DateTime.now();
-
-  await Future.delayed(Duration.zero);
-
-  final then = DateTime.now(); // Breakpoint: asyncCall
-  // ignore: unused_local_variable
-  final diff = then.difference(now);
-}
-
-void throwsException() {
-  try {
-    throw Exception('new exception');
-  } catch (e) {
-    // ignore
-  }
-}
-
-String helloString(String response) => response;
-
-bool helloBool(bool response) => response;
-
-num? helloNum(num? response) => response;
-
-MyTestClass createObject(String message) => MyTestClass(message: message);
-
-String messageFor(MyTestClass instance) => instance.message;
-
-String messagesCombined(MyTestClass a, MyTestClass b) => a.message + b.message;
-
-class MyTestClass {
-  final String message;
-
-  String? notFinal;
-
-  static final String staticMessage = 'static';
-
-  static String staticHello() => 'static hello';
-
-  MyTestClass({this.message = 'world'});
-
-  String hello() => message;
-}
diff --git a/dwds_test_common/fixtures/_test/example/hello_world/part.dart b/dwds_test_common/fixtures/_test/example/hello_world/part.dart
deleted file mode 100644
index 8d77975..0000000
--- a/dwds_test_common/fixtures/_test/example/hello_world/part.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of 'main.dart';
-
-var blah = 'blah';
-
-void doSomething() {
-  print(blah);
-}
diff --git a/dwds_test_common/fixtures/_test/example/scopes/main.dart b/dwds_test_common/fixtures/_test/example/scopes/main.dart
deleted file mode 100644
index 4b21bd5..0000000
--- a/dwds_test_common/fixtures/_test/example/scopes/main.dart
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// An example with more complicated scope.
-library;
-
-import 'dart:async';
-import 'dart:collection';
-
-final libraryPublicFinal = MyTestClass();
-
-final _libraryPrivateFinal = 1;
-Object? libraryNull;
-var libraryPublic = <String>['library', 'public', 'variable'];
-var notAList = NotReallyAList();
-
-var _libraryPrivate = ['library', 'private', 'variable'];
-
-var identityMap = <String, int>{};
-
-var map = <Object, Object>{};
-
-final stream = Stream.value(1);
-
-MyTestClass getLibraryPublicFinal() => libraryPublicFinal;
-
-List<String> getLibraryPublic() => libraryPublic;
-
-Map<Object, Object> getMap() => map;
-
-Map<String, int> getIdentityMap() => identityMap;
-
-Stream<int> getStream() => stream;
-
-void staticFunction(int formal) {
-  print(formal); // Breakpoint: staticFunction
-}
-
-void staticAsyncFunction(String value) async {
-  // ignore: unused_local_variable
-  final myLocal = await 'a local value';
-  print(value); // Breakpoint: staticAsyncFunction
-}
-
-void staticAsyncLoopFunction(String value) async {
-  Function? f;
-  for (var i in [1, 2, 3]) {
-    print(i);
-    final myLocal = await 'my local value';
-    f ??= () {
-      print(value);
-      print(i);
-      return myLocal; // Breakpoint: staticAsyncLoopFunction
-    };
-  }
-  f!();
-}
-
-void main() async {
-  print('Initial print from scopes app');
-  final local = 'local in main';
-  final intLocalInMain = 42;
-  final testClass = MyTestClass();
-  Object? localThatsNull;
-  identityMap['a'] = 1;
-  identityMap['b'] = 2;
-  map['a'] = [1, 2, 3];
-  map['b'] = 'something';
-  notAList.add(7);
-
-  String nestedFunction<T>(T parameter, Object aClass) {
-    final another = int.tryParse('$parameter');
-    return '$local: parameter, $another'; // Breakpoint: nestedFunction
-  }
-
-  dynamic nestedWithClosure(String banana) {
-    return () => '$local + $banana';
-  }
-
-  Timer.periodic(const Duration(seconds: 1), (Timer t) {
-    final ticks = t.tick;
-    // ignore: unused_local_variable, prefer_typing_uninitialized_variables
-    var closureLocal;
-    libraryPublicFinal.printCount();
-    staticFunction(1);
-    staticAsyncFunction('arg1');
-    staticAsyncLoopFunction('arg2');
-    print('ticking... $ticks (the answer is $intLocalInMain)');
-    print(nestedFunction('$ticks ${testClass.message}', Timer));
-    print(localThatsNull);
-    print(libraryNull);
-    final localList = libraryPublic;
-    print(localList);
-    localList.add('abc');
-    final f = testClass.methodWithVariables();
-    print(f('parameter'));
-    final num = '1234'.someExtensionMethod();
-    print('$num');
-  });
-
-  print(_libraryPrivateFinal);
-  print(_libraryPrivate);
-  print(nestedFunction(_libraryPrivate.first, Object));
-  print(nestedWithClosure(_libraryPrivate.first)());
-}
-
-String libraryFunction(String arg) {
-  print('calling a library function with $arg');
-  final concat = 'some constant plus $arg plus whatever';
-  print(concat);
-  return concat;
-}
-
-abstract class MyAbstractClass {
-  String abstractField = 'abstract-field-value';
-}
-
-class MyTestClass<T> extends MyAbstractClass {
-  final String message;
-
-  String? notFinal;
-
-  MyTestClass({this.message = 'world'}) {
-    myselfField = this;
-    tornOff = toString;
-  }
-
-  String hello() => message;
-
-  String Function(String) methodWithVariables() {
-    final local = '$message + something';
-    print(local);
-    return (String parameter) {
-      // Be sure to use a field from this, so it isn't entirely optimized away.
-      final closureLocalInsideMethod = '$message/$local/$parameter';
-      print(closureLocalInsideMethod);
-      return closureLocalInsideMethod; // Breakpoint: nestedClosure
-    };
-  }
-
-  //ignore: avoid_returning_this
-  MyTestClass get myselfGetter => this;
-
-  late final MyTestClass myselfField;
-
-  var count = 0;
-  // This should never be updated during execution.
-  var unchangedCount = 42;
-
-  // An easy location to add a breakpoint.
-  void printCount() {
-    print('The count is ${++count}');
-    libraryFunction('abc'); // Breakpoint: printMethod
-  }
-
-  final _privateField = 'a private field';
-
-  // ignore: unused_element
-  String privateMethod(String s) => '$s : $_privateField';
-
-  @override
-  String toString() => 'A test class with message $message';
-
-  bool equals(Object other) {
-    if (other is MyTestClass) return message == other.hello();
-    return false;
-  }
-
-  Function closure = someFunction;
-
-  late final String Function() tornOff;
-}
-
-Function? someFunction() => null;
-
-// ignore: unused_element
-int _libraryPrivateFunction(int a, int b) => a + b;
-
-class NotReallyAList extends ListBase<Object?> {
-  final List<Object?> _internal;
-
-  NotReallyAList() : _internal = [];
-
-  @override
-  Object? operator [](x) => _internal[x];
-
-  @override
-  operator []=(int x, Object? y) => _internal[x] = y;
-
-  @override
-  int get length => _internal.length;
-
-  @override
-  set length(x) => _internal.length = x;
-}
-
-extension NumberParsing on String {
-  int someExtensionMethod() {
-    final ret = int.parse(this);
-    return ret; // Breakpoint: extension
-  }
-}
diff --git a/dwds_test_common/fixtures/_test/example/scopes/scopes.html b/dwds_test_common/fixtures/_test/example/scopes/scopes.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test/example/scopes/scopes.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test/lib/deferred_library.dart b/dwds_test_common/fixtures/_test/lib/deferred_library.dart
deleted file mode 100644
index 71d1c1d..0000000
--- a/dwds_test_common/fixtures/_test/lib/deferred_library.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-/// A library that we can import.
-library;
-
-void deferredPrintLocal() {
-  print('hello from deferred library'); // Breakpoint: DeferredPrintLocal
-}
diff --git a/dwds_test_common/fixtures/_test/lib/library.dart b/dwds_test_common/fixtures/_test/lib/library.dart
deleted file mode 100644
index c00cf8a..0000000
--- a/dwds_test_common/fixtures/_test/lib/library.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2021, 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.
-
-/// A library that we can import.
-library;
-
-int aVariable = 3;
-
-String concatenate(String a, String b) {
-  return '$a$b'; // Breakpoint: Concatenate
-}
diff --git a/dwds_test_common/fixtures/_test/pubspec.yaml b/dwds_test_common/fixtures/_test/pubspec.yaml
deleted file mode 100644
index 3e86a35..0000000
--- a/dwds_test_common/fixtures/_test/pubspec.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: _test
-version: 1.0.0
-description: >-
-  A fake package used for testing.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.8.2
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.8.1
-
diff --git a/dwds_test_common/fixtures/_test_circular1/lib/library1.dart b/dwds_test_common/fixtures/_test_circular1/lib/library1.dart
deleted file mode 100644
index 5044995..0000000
--- a/dwds_test_common/fixtures/_test_circular1/lib/library1.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2019, 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.
-
-/// A library that we can import.
-library;
-
-import 'package:_test_circular2/library2.dart';
-
-String concatenate(String a, String b) {
-  return '$a$b'; // Breakpoint: Concatenate
-}
-
-void printGlobal() {
-  print(globalValue);
-}
diff --git a/dwds_test_common/fixtures/_test_circular1/pubspec.yaml b/dwds_test_common/fixtures/_test_circular1/pubspec.yaml
deleted file mode 100644
index b81da7f..0000000
--- a/dwds_test_common/fixtures/_test_circular1/pubspec.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: _test_circular1
-version: 1.0.0
-description: >-
-  A fake package used for testing imports with circular dependency.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.6.1
-  _test_circular2:
-    path: ../_test_circular2
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_test_circular2/lib/library2.dart b/dwds_test_common/fixtures/_test_circular2/lib/library2.dart
deleted file mode 100644
index c62a979..0000000
--- a/dwds_test_common/fixtures/_test_circular2/lib/library2.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:_test_circular1/library1.dart';
-
-int globalValue = 0;
-
-void testCircularDependencies() {
-  print(concatenate('a', 'b')); // Breakpoint: testCircularDependencies
-}
diff --git a/dwds_test_common/fixtures/_test_circular2/pubspec.yaml b/dwds_test_common/fixtures/_test_circular2/pubspec.yaml
deleted file mode 100644
index e814478..0000000
--- a/dwds_test_common/fixtures/_test_circular2/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: _test_circular2
-version: 1.0.0
-description: >-
-  A fake package used for testing imports with circular dependency.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  _test_circular1:
-    path: ../_test_circular1
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_test_circular2/web/base_index.html b/dwds_test_common/fixtures/_test_circular2/web/base_index.html
deleted file mode 100644
index affdbcb..0000000
--- a/dwds_test_common/fixtures/_test_circular2/web/base_index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-
-<head>
-  <base href="/abc/">
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_circular2/web/index.html b/dwds_test_common/fixtures/_test_circular2/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_circular2/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_circular2/web/main.dart b/dwds_test_common/fixtures/_test_circular2/web/main.dart
deleted file mode 100644
index 2e5728a..0000000
--- a/dwds_test_common/fixtures/_test_circular2/web/main.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:core';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:html';
-
-import 'package:_test_circular1/library1.dart';
-import 'package:_test_circular2/library2.dart';
-
-void main() {
-  // For setting breakpoints.
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    testCircularDependencies();
-  });
-
-  document.body!.appendText(concatenate('Program', ' is running!'));
-}
diff --git a/dwds_test_common/fixtures/_test_dot_shorthands/pubspec.yaml b/dwds_test_common/fixtures/_test_dot_shorthands/pubspec.yaml
deleted file mode 100644
index bbc2e8b..0000000
--- a/dwds_test_common/fixtures/_test_dot_shorthands/pubspec.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: _test_dot_shorthands
-version: 1.0.0
-description: >-
-  A fake package used for testing dot shorthands.
-publish_to: none
-environment:
-  sdk: ^3.10.0
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_test_dot_shorthands/web/index.html b/dwds_test_common/fixtures/_test_dot_shorthands/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_dot_shorthands/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_dot_shorthands/web/main.dart b/dwds_test_common/fixtures/_test_dot_shorthands/web/main.dart
deleted file mode 100644
index bc5f6bb..0000000
--- a/dwds_test_common/fixtures/_test_dot_shorthands/web/main.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2025, 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.
-
-// @dart = 3.10
-
-class C {
-  int value;
-  C(this.value); // lineA
-
-  static C two = C(2); // lineB
-  static C get three => C(3); // lineC
-  static C four() => C(4); // lineD
-}
-
-void testDotShorthands() {
-  C c = C(1);
-  print('breakpoint'); // Breakpoint: testDotShorthands
-  // ignore: experiment_not_enabled
-  c = .two; // lineE
-  // ignore: experiment_not_enabled
-  c = .three; // lineF
-  // ignore: experiment_not_enabled
-  c = .four(); // lineG
-  print(c.value); // lineH
-}
-
-void main() {}
diff --git a/dwds_test_common/fixtures/_test_hot_reload/lib/library1.dart b/dwds_test_common/fixtures/_test_hot_reload/lib/library1.dart
deleted file mode 100644
index 1daf3d4..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload/lib/library1.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2025, 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.
-
-String get reloadValue => 'Hello World!';
diff --git a/dwds_test_common/fixtures/_test_hot_reload/pubspec.yaml b/dwds_test_common/fixtures/_test_hot_reload/pubspec.yaml
deleted file mode 100644
index 6dc814a..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload/pubspec.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: _test_hot_reload
-version: 1.0.0
-description: >-
-  A fake package used for testing hot reload.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.8.1
diff --git a/dwds_test_common/fixtures/_test_hot_reload/web/index.html b/dwds_test_common/fixtures/_test_hot_reload/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_hot_reload/web/main.dart b/dwds_test_common/fixtures/_test_hot_reload/web/main.dart
deleted file mode 100644
index a85a43a..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload/web/main.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2025, 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:core';
-import 'dart:js_interop';
-
-import 'package:_test_hot_reload/library1.dart';
-
-@JS('console.log')
-external void log(String _);
-
-void evaluate() {
-  log('$reloadValue');
-}
-
-void main() {
-  evaluate();
-}
diff --git a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/pubspec.yaml b/dwds_test_common/fixtures/_test_hot_reload_breakpoints/pubspec.yaml
deleted file mode 100644
index 916f649..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/pubspec.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: _test_hot_reload_breakpoints
-version: 1.0.0
-description: >-
-  A fake package used for testing hot reload breakpoints.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.8.1
diff --git a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/index.html b/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/main.dart b/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/main.dart
deleted file mode 100644
index 2c9baa8..0000000
--- a/dwds_test_common/fixtures/_test_hot_reload_breakpoints/web/main.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2025, 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_interop';
-
-@JS('console.log')
-external void log(String _);
-
-String get mainValue => 'main gen0';
-
-void evaluate() {
-  // Use a future instead of directly calling because evaluating this method
-  // with a breakpoint would never complete otherwise.
-  Future.delayed(Duration(milliseconds: 10), printToConsole);
-}
-
-void printToConsole() {
-  log('$mainValue'); // Breakpoint: callLog
-}
-
-final closure = () {
-  return 'captured closure gen0'; // Breakpoint: capturedString
-};
-
-void main() {}
diff --git a/dwds_test_common/fixtures/_test_hot_restart1/lib/library1.dart b/dwds_test_common/fixtures/_test_hot_restart1/lib/library1.dart
deleted file mode 100644
index e2018bf..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart1/lib/library1.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2024, 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.
-
-class B {
-  final int x;
-  const B(this.x);
-}
-
-B get value1 => const B(2);
diff --git a/dwds_test_common/fixtures/_test_hot_restart1/pubspec.yaml b/dwds_test_common/fixtures/_test_hot_restart1/pubspec.yaml
deleted file mode 100644
index 9acf0a4..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart1/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: _test_hot_restart1
-version: 1.0.0
-description: >-
-  A fake package used for testing hot restart.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.6.1
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_test_hot_restart2/lib/library2.dart b/dwds_test_common/fixtures/_test_hot_restart2/lib/library2.dart
deleted file mode 100644
index 2e3198f..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart2/lib/library2.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:_test_hot_restart1/library1.dart';
-
-int variableToModifyToForceRecompile = 23;
-B get value2 => const B(2);
diff --git a/dwds_test_common/fixtures/_test_hot_restart2/pubspec.yaml b/dwds_test_common/fixtures/_test_hot_restart2/pubspec.yaml
deleted file mode 100644
index 1027a22..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart2/pubspec.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: _test_hot_restart2
-version: 1.0.0
-description: >-
-  A fake package used for testing hot restart.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.6.1
-  _test_hot_restart1:
-    path: ../_test_hot_restart1
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.8.1
diff --git a/dwds_test_common/fixtures/_test_hot_restart2/web/base_index.html b/dwds_test_common/fixtures/_test_hot_restart2/web/base_index.html
deleted file mode 100644
index affdbcb..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart2/web/base_index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-
-<head>
-  <base href="/abc/">
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_hot_restart2/web/index.html b/dwds_test_common/fixtures/_test_hot_restart2/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart2/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_hot_restart2/web/main.dart b/dwds_test_common/fixtures/_test_hot_restart2/web/main.dart
deleted file mode 100644
index 055bc3d..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart2/web/main.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2019, 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:core';
-import 'dart:js_interop';
-
-import 'package:_test_hot_restart1/library1.dart';
-import 'package:_test_hot_restart2/library2.dart';
-
-/// Tests for constant semantics across hot restart in DDC.
-///
-/// DDC has multiple layers of constant caching. Failing to clear them can
-/// result in stale constants being referenced across hot restarts.
-///
-/// Cases tested include:
-/// 1) Failing to clear all constant caches.
-///   An old 'ConstObject' is returned, which fails to reflect the edited
-///   'variableToModifyToForceRecompile'.
-/// 2) Clearing constant caches but failing to clear constant containers.
-///   Constants in reloaded modules fail to compare with constants in stale
-///   constant containers, causing 'ConstantEqualityFailure's.
-
-@JS('console.log')
-external void log(String _);
-
-class ConstObject {
-  const ConstObject();
-  String get text =>
-      'ConstObject('
-      'reloadVariable: $variableToModifyToForceRecompile, '
-      '${value1 == value2 ? 'ConstantEqualitySuccess' : 'ConstantEqualityFailure'})';
-}
-
-void printConst() {
-  log('${const ConstObject().text}');
-}
-
-void main() {
-  printConst();
-}
diff --git a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/pubspec.yaml b/dwds_test_common/fixtures/_test_hot_restart_breakpoints/pubspec.yaml
deleted file mode 100644
index 8bbeb52..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/pubspec.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: _test_hot_restart_breakpoints
-version: 1.0.0
-description: >-
-  A fake package used for testing hot restart breakpoints.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.8.1
-
diff --git a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/index.html b/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/main.dart b/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/main.dart
deleted file mode 100644
index fad2e17..0000000
--- a/dwds_test_common/fixtures/_test_hot_restart_breakpoints/web/main.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2025, 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_interop';
-
-@JS('console.log')
-external void log(String _);
-
-void main() {
-  log('main gen0'); // Breakpoint: callLog
-}
diff --git a/dwds_test_common/fixtures/_test_package/lib/src/test_part.dart b/dwds_test_common/fixtures/_test_package/lib/src/test_part.dart
deleted file mode 100644
index 5478db2..0000000
--- a/dwds_test_common/fixtures/_test_package/lib/src/test_part.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of '../test_library.dart';
-
-int testPartLibraryValue = 4;
-
-int testLibraryPartFunction(int formal) {
-  return formal; // Breakpoint: testLibraryPartFunction
-}
-
-class TestLibraryPartClass {
-  final int field;
-  final int _field;
-
-  TestLibraryPartClass(this.field, this._field) {
-    print('Constructor'); // Breakpoint: testLibraryPartClassConstructor
-  }
-
-  @override
-  String toString() => 'field: $field, _field: $_field';
-}
diff --git a/dwds_test_common/fixtures/_test_package/lib/src/version.dart b/dwds_test_common/fixtures/_test_package/lib/src/version.dart
deleted file mode 100644
index 526cd53..0000000
--- a/dwds_test_common/fixtures/_test_package/lib/src/version.dart
+++ /dev/null
@@ -1,2 +0,0 @@
-// Generated code. Do not modify.
-const packageVersion = '1.0.0';
diff --git a/dwds_test_common/fixtures/_test_package/lib/test_library.dart b/dwds_test_common/fixtures/_test_package/lib/test_library.dart
deleted file mode 100644
index ac9eb90..0000000
--- a/dwds_test_common/fixtures/_test_package/lib/test_library.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part 'src/test_part.dart';
-
-int testLibraryValue = 3;
-
-int testLibraryFunction(int formal) {
-  return formal; // Breakpoint: testLibraryFunction
-}
-
-class TestLibraryClass {
-  final int field;
-  final int _field;
-  TestLibraryClass(this.field, this._field) {
-    print('Constructor'); // Breakpoint: testLibraryClassConstructor
-  }
-
-  @override
-  String toString() => 'field: $field, _field: $_field';
-}
diff --git a/dwds_test_common/fixtures/_test_package/pubspec.yaml b/dwds_test_common/fixtures/_test_package/pubspec.yaml
deleted file mode 100644
index 9725812..0000000
--- a/dwds_test_common/fixtures/_test_package/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: _test_package
-version: 1.0.0
-description: >-
-  A fake package used for testing imports. Imports _test.
-publish_to: none
-environment:
-  sdk: ^3.10.0-0.0.dev
-
-dependencies:
-  _test:
-    path: ../_test
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
\ No newline at end of file
diff --git a/dwds_test_common/fixtures/_test_package/web/base_index.html b/dwds_test_common/fixtures/_test_package/web/base_index.html
deleted file mode 100644
index affdbcb..0000000
--- a/dwds_test_common/fixtures/_test_package/web/base_index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-
-<head>
-  <base href="/abc/">
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_package/web/index.html b/dwds_test_common/fixtures/_test_package/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_package/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_package/web/main.dart b/dwds_test_common/fixtures/_test_package/web/main.dart
deleted file mode 100644
index 04c7084..0000000
--- a/dwds_test_common/fixtures/_test_package/web/main.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:core';
-import 'dart:developer';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:html';
-
-import 'package:_test_package/test_library.dart';
-import 'package:_test/deferred_library.dart' deferred as d;
-import 'package:_test/library.dart';
-
-extension NumberParsing on String {
-  int parseInt() {
-    final ret = int.parse(this);
-    return ret; // Breakpoint: extension
-  }
-}
-
-void main() async {
-  var count = 0;
-  // For setting breakpoints.
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    print('Count is: ${++count}');
-    print(testLibraryValue);
-    print(testPartLibraryValue);
-  });
-
-  // for evaluation
-  var extensionId = 0;
-  Timer.periodic(const Duration(seconds: 1), (_) async {
-    await asyncMethod();
-    printLocal();
-    printFieldFromLibraryClass(); // Breakpoint: callPrintFieldFromLibraryClass
-    printFieldFromLibraryPartClass();
-    printFieldMain();
-    printGlobal();
-    printFromTestLibrary();
-    printFromTestLibraryPart();
-    printFromTestPackage();
-    printCallExtension();
-    printLoopVariable();
-    printGeneric<int>(0);
-    printObjectMultiLine(); // Breakpoint: callPrintObjectMultiLine
-    printNestedObjectsMultiLine(); // Breakpoint: callPrintEnclosingFunctionMultiLine
-    printStream(); // Breakpoint: callPrintStream
-    printList();
-    printMap();
-    printSet();
-    printFrame2();
-    printLargeScope();
-    // For testing evaluation in async JS frames.
-    registerUserExtension(extensionId++);
-  });
-
-  document.body?.appendText(concatenate('Program', ' is running!'));
-}
-
-void registerUserExtension(int id) async {
-  registerExtension('ext.extension$id', (_, __) async {
-    print('Hello World from extension$id');
-    return ServiceExtensionResponse.result(json.encode({'success': true}));
-  });
-}
-
-Future<int> asyncMethod() async {
-  printLocal();
-  return 0;
-}
-
-void printGeneric<T>(T formal) {
-  print(formal);
-}
-
-void printLocal() {
-  final local = 42;
-  print('Local is: $local'); // Breakpoint: printLocal
-}
-
-void printFieldFromLibraryClass() {
-  final instance = TestLibraryClass(1, 2); // Breakpoint: createLibraryObject
-  print('$instance'); // Breakpoint: printFieldFromLibraryClass
-}
-
-void printFieldFromLibraryPartClass() {
-  final instance = TestLibraryPartClass(1, 2);
-  print('$instance'); // Breakpoint: printFieldFromLibraryPartClass
-}
-
-void printFieldMain() {
-  final instance = MainClass(2, 1);
-  print('$instance'); // Breakpoint: printFieldMain
-}
-
-void printGlobal() {
-  print(testLibraryValue); // Breakpoint: printGlobal
-}
-
-void printFromTestPackage() {
-  print(concatenate('Hello', ' World'));
-}
-
-void printFromTestLibrary() {
-  final local = 23;
-  print(testLibraryFunction(local));
-}
-
-void printFromTestLibraryPart() {
-  final local = 23;
-  print(testLibraryPartFunction(local));
-}
-
-void printCallExtension() {
-  final local = '23';
-  print(local.parseInt());
-}
-
-void printLoopVariable() {
-  final list = <String>['1'];
-  for (var item in list) {
-    print(item); // Breakpoint: printLoopVariable
-  }
-}
-
-Future<void> printDeferred() async {
-  d.deferredPrintLocal();
-}
-
-void printNestedObjectsMultiLine() {
-  // dart format off
-  printEnclosingObject( // Breakpoint: printEnclosingFunctionMultiLine
-    EnclosingClass( // Breakpoint: printEnclosingObjectMultiLine
-      EnclosedClass(0), // Breakpoint: printNestedObjectMultiLine
-    ),
-  );
-  // dart format on
-}
-
-void printObjectMultiLine() {
-  // dart format off
-  print( // Breakpoint: printMultiLine
-    // Breakpoint: Do not remove, will break callstack tests!
-    createObject() // Breakpoint: printObjectMultiLine
-      ..initialize(),
-  );
-  // dart format on
-}
-
-void printEnclosingObject(EnclosingClass o) {
-  print(o); // Breakpoint: printEnclosingObject
-}
-
-void printStream() {
-  final controller = StreamController<int>();
-  final stream = controller.stream.asBroadcastStream();
-  final subscription = stream.listen(print);
-  controller.sink.add(0);
-  subscription.cancel(); // Breakpoint: printStream
-}
-
-void printList() {
-  final list = [0, 1, 2];
-  print(list); // Breakpoint: printList
-}
-
-void printMap() {
-  final map = {'a': 1, 'b': 2, 'c': 3};
-  print(map); // Breakpoint: printMap
-}
-
-void printSet() {
-  final mySet = {1, 4, 5, 7};
-  print(mySet); // Breakpoint: printSet
-}
-
-ClassWithMethod createObject() {
-  return ClassWithMethod(0); // Breakpoint: createObjectWithMethod
-}
-
-void printFrame2() {
-  final local2 = 2;
-  print(local2);
-  printFrame1();
-}
-
-void printFrame1() {
-  final local1 = 1;
-  print(local1); // Breakpoint: printFrame1
-}
-
-void printLargeScope() {
-  final t0 = 0;
-  final t1 = 1;
-  final t2 = 2;
-  final t3 = 3;
-  final t4 = 4;
-  final t5 = 5;
-  final t6 = 6;
-  final t7 = 7;
-  final t8 = 8;
-  final t9 = 9;
-  final t10 = 10;
-  final t11 = 11;
-  final t12 = 12;
-  final t13 = 13;
-  final t14 = 14;
-  final t15 = 15;
-  final t16 = 16;
-  final t17 = 17;
-  final t18 = 18;
-  final t19 = 19;
-
-  // dart format off
-  print('$t0 $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9, $t10, '
-    '$t11, $t12, $t13, $t14, $t15, $t16, $t17, $t18, $t19'); // Breakpoint: printLargeScope
-  // dart format on
-}
-
-class MainClass {
-  final int field;
-  final int _field;
-  MainClass(this.field, this._field); // Breakpoint: newMainClass
-
-  @override
-  String toString() => '$field, $_field'; // Breakpoint: toStringMainClass
-}
-
-class EnclosedClass {
-  final int _field;
-  EnclosedClass(this._field); // Breakpoint: newEnclosedClass
-
-  @override
-  String toString() => '$_field';
-}
-
-class ClassWithMethod {
-  final int _field;
-  ClassWithMethod(this._field);
-
-  void initialize() {}
-
-  @override
-  String toString() => '$_field';
-}
-
-class EnclosingClass {
-  final EnclosedClass _field;
-  EnclosingClass(this._field); // Breakpoint: newEnclosingClass
-
-  @override
-  String toString() => '$_field';
-}
diff --git a/dwds_test_common/fixtures/_test_parts/lib/library.dart b/dwds_test_common/fixtures/_test_parts/lib/library.dart
deleted file mode 100644
index 5dcccc6..0000000
--- a/dwds_test_common/fixtures/_test_parts/lib/library.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part 'part1.dart';
-part 'part2.dart';
-part 'part3.dart';
-
-String concatenate1(String a, String b) {
-  // Padding...........................
-  // 'return' is at line 12, column 3, offset 410.
-  return '$a$b'; // Breakpoint: Concatenate1
-}
diff --git a/dwds_test_common/fixtures/_test_parts/lib/part1.dart b/dwds_test_common/fixtures/_test_parts/lib/part1.dart
deleted file mode 100644
index ba85247..0000000
--- a/dwds_test_common/fixtures/_test_parts/lib/part1.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of 'library.dart';
-
-String concatenate2(int a, int b) {
-  // Padding............
-  // Padding..............
-  // Padding..............
-  // 'return' is at line 12, column 3, offset 410.
-  return '$a$b'; // Breakpoint: Concatenate2
-}
diff --git a/dwds_test_common/fixtures/_test_parts/lib/part2.dart b/dwds_test_common/fixtures/_test_parts/lib/part2.dart
deleted file mode 100644
index 956fcee..0000000
--- a/dwds_test_common/fixtures/_test_parts/lib/part2.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of 'library.dart';
-
-// Padding....
-//
-//
-// 'return' below is at line that doesn't exist in the previous files,
-// but still at offset 410.
-//
-
-String concatenate3(String a, double b) {
-  return '$a$b'; // Breakpoint: Concatenate3
-}
diff --git a/dwds_test_common/fixtures/_test_parts/lib/part3.dart b/dwds_test_common/fixtures/_test_parts/lib/part3.dart
deleted file mode 100644
index f44084e..0000000
--- a/dwds_test_common/fixtures/_test_parts/lib/part3.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of 'library.dart';
-
-// Padding
-// Padding
-// Padding
-// Padding
-// Padding
-// Padding
-// Padding
-// Padding
-// Padding
-// 'return' below is at line that doesn't exist in the other files,
-// and at offset that doesn't exist in the other files.
-
-String concatenate4(List a, Map b) {
-  return '$a$b'; // Breakpoint: Concatenate4
-}
diff --git a/dwds_test_common/fixtures/_test_parts/pubspec.yaml b/dwds_test_common/fixtures/_test_parts/pubspec.yaml
deleted file mode 100644
index c3129bf..0000000
--- a/dwds_test_common/fixtures/_test_parts/pubspec.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: _test_parts
-version: 1.0.0
-description: >-
-  A fake package used for testing parts.
-publish_to: none
-environment:
-  sdk: ^3.2.0
-
-dependencies:
-  intl: ^0.17.0
-  path: ^1.6.1
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_test_parts/web/base_index.html b/dwds_test_common/fixtures/_test_parts/web/base_index.html
deleted file mode 100644
index affdbcb..0000000
--- a/dwds_test_common/fixtures/_test_parts/web/base_index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-
-<head>
-  <base href="/abc/">
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_parts/web/index.html b/dwds_test_common/fixtures/_test_parts/web/index.html
deleted file mode 100644
index d93440a..0000000
--- a/dwds_test_common/fixtures/_test_parts/web/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_test_parts/web/main.dart b/dwds_test_common/fixtures/_test_parts/web/main.dart
deleted file mode 100644
index 4e489d3..0000000
--- a/dwds_test_common/fixtures/_test_parts/web/main.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:core';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:html';
-
-import 'package:_test_parts/library.dart';
-
-void main() {
-  // For setting breakpoints.
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    concatenate1('hello', 'world');
-    concatenate2(2, 3);
-    concatenate3('hello', 36.42);
-    concatenate4(['hello', 'world'], {'foo': 'bar'});
-  });
-
-  document.body!.appendText(concatenate1('Program', ' is running!'));
-}
diff --git a/dwds_test_common/fixtures/_webdev_smoke/build.yaml b/dwds_test_common/fixtures/_webdev_smoke/build.yaml
deleted file mode 100644
index 5b9378c..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/build.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-global_options:
-  build_web_compilers:ddc:
-    options:
-      canary: false
-  build_web_compilers:sdk_js:
-    options:
-      canary: false
diff --git a/dwds_test_common/fixtures/_webdev_smoke/canary_build.yaml b/dwds_test_common/fixtures/_webdev_smoke/canary_build.yaml
deleted file mode 100644
index 5b9378c..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/canary_build.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-global_options:
-  build_web_compilers:ddc:
-    options:
-      canary: false
-  build_web_compilers:sdk_js:
-    options:
-      canary: false
diff --git a/dwds_test_common/fixtures/_webdev_smoke/localhost+2-key.pem b/dwds_test_common/fixtures/_webdev_smoke/localhost+2-key.pem
deleted file mode 100644
index 7bc7c1e..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/localhost+2-key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDR8FlEhQ8XZctL
-mGdx78Z5EInK2mcfU9Nq4oUKkPeiql7Sd3cd3prd+m5MYylL255wAZf8Fdupkko2
-cjQEsU24jUBWVG5q3YqZ+OidFYdxYnPbDhFtzL3Lr2zHGAi+MgqVENUF6ED2O5tU
-9U1crceXmXHb3E8Sg+zXX6TMVCS11OH9VQ1ZutM0fFMPZxmfU5aOfd5kuTmTiaOt
-OMyymroUPgzRW6UcbLfSdD7KuNFQgHDHiWkr2MtoZffgGM/cOfmCdgE85MdL6kyb
-7TUTbAlTSpJNWwygObce7DN7qwM8HocRWSAfH+y3ewbs2NtzG1Az+a/kUBjhvmjT
-WFiwDT+1AgMBAAECggEBALkJMXTeHh4OP2+ipVJb9r/P3tMnSornFEl5268jdNAv
-f6HbX+a4xCDwUHUNVWGh8XRhQzcRgOllofl5EPYt3AXUoac1hZi1KStqooOJbTZ3
-gwvIy33OXl5/gM2+Fj6k1oTqMAej3FXq1Y69InGUTX4F5b/V3u+/zWlKyHK7mxuT
-LIP3/iAxbpST5FB1G7ZPyz5mvzvEQFRiv9ubuMxYg3fzORULtbnnHNAM5jLG3IzZ
-9EM/1umaeZu1bg9rGVVgr0l/rWMJSg5u+Z6jcrt9+Oj7hYrMPGHKHXAPhC1gaq+k
-tlKHj/mhmJyN0jUXt71UgrsWF3MhrK2W2AlIfxXhIIECgYEA8oaIEOaeNmtDqlH5
-MmU0jd2EcMRnLrlfKs4fKObFoSMqELRB3yJ1u5Yt/wQCCSpN9bhkinR0l4Q7YsAy
-4sg5Q3VaA/rUWkVKkv2sD04LbBmpHr5vksPnIPKcfAY3csQ1F5pu9gY6zgzdxBvN
-nWEu8tqbUSdC5+0F+tB8IDW+/lUCgYEA3ZpVXmBLvgeZJ8rNjCCeKR5hXMYdFKqC
-Yd5KfasTKH7h8a4GWo/mtUsS5UPRRjhrP5mPjdUKBFhSaJtX+k9Hhot58RN20fWR
-4Ake4yV/cNFRykD1jsv9JJiPkggnVLVXN91+/EnKJozWv46q6nG44iX+q2w2i9FQ
-6lohgwQp2+ECgYEAwKJY+0uiiUkD0woPbJb0emZj5wophvRYgfB80YkTmt0KcYAr
-/icp6pjr6e3uDAedKrqOqWa8oQi3/sT45ibxTQKuQBEAkL8O79grzXBJJFDxgujy
-SFnwgLwTzXNGoZL1NM1Gq4XhOX8Aut72n7Xsi5tV2MzdmMgsgr8MiK0ICo0CgYBA
-h4yMauYjc/r5R2kLgQQNXTdk2JvnRK+q6Bww8/wkMq6AvfhDrtuztyTNdi4ekJdK
-ceEHoB3GniGBLJs13JgrabocpVpYUXYlEwLXijfOFmYGy1u2NViFq5dDIvSxCg1X
-yzwLI0GmcCSoq1bB5lO8Juw95skLdexmEdDoYfH+gQKBgDgaFlF9lYuKd0HhAxxm
-oJ8WBv26FWxR8/UsvUPqI8Mzmb8J1Q22tZEMEVr8bN/HkcL+8DVQ4uh2zx9+rqC0
-aPqJZNgePGpRDhZ/cwA8xsg+Xkou8rrFjpGRuVuG9FvMEexufkHoDc94ppONuwsR
-QzjTUxgXdLjtxT95ISwX83Nr
------END PRIVATE KEY-----
diff --git a/dwds_test_common/fixtures/_webdev_smoke/localhost+2.pem b/dwds_test_common/fixtures/_webdev_smoke/localhost+2.pem
deleted file mode 100644
index a62046b..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/localhost+2.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEgjCCAuqgAwIBAgIQBeTmjjlnyrCQUy06Xx/ybzANBgkqhkiG9w0BAQsFADCB
-pTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMT0wOwYDVQQLDDRMQVBU
-T1AtQUFSSFFPMkxcV2Rlc3RATEFQVE9QLUFBUkhRTzJMIChXYWduZXIgRC4gRi4p
-MUQwQgYDVQQDDDtta2NlcnQgTEFQVE9QLUFBUkhRTzJMXFdkZXN0QExBUFRPUC1B
-QVJIUU8yTCAoV2FnbmVyIEQuIEYuKTAeFw0yNTAyMTQxNDI2MjFaFw0yNzA1MTQx
-NDI2MjFaMGgxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0aWZpY2F0
-ZTE9MDsGA1UECww0TEFQVE9QLUFBUkhRTzJMXFdkZXN0QExBUFRPUC1BQVJIUU8y
-TCAoV2FnbmVyIEQuIEYuKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ANHwWUSFDxdly0uYZ3HvxnkQicraZx9T02rihQqQ96KqXtJ3dx3emt36bkxjKUvb
-nnABl/wV26mSSjZyNASxTbiNQFZUbmrdipn46J0Vh3Fic9sOEW3MvcuvbMcYCL4y
-CpUQ1QXoQPY7m1T1TVytx5eZcdvcTxKD7NdfpMxUJLXU4f1VDVm60zR8Uw9nGZ9T
-lo593mS5OZOJo604zLKauhQ+DNFbpRxst9J0Psq40VCAcMeJaSvYy2hl9+AYz9w5
-+YJ2ATzkx0vqTJvtNRNsCVNKkk1bDKA5tx7sM3urAzwehxFZIB8f7Ld7BuzY23Mb
-UDP5r+RQGOG+aNNYWLANP7UCAwEAAaNqMGgwDgYDVR0PAQH/BAQDAgWgMBMGA1Ud
-JQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFLmYo+uZjtNZbL0jyR7XVnK/FICG
-MCAGA1UdEQQZMBeCCWxvY2FsaG9zdIcEfwAAAYcEAAAAADANBgkqhkiG9w0BAQsF
-AAOCAYEAbUhcggR4p8n/Us+ov8zvI+hBIrDi7GevWQQKrU1Rp2gzHV6glhqGMQ1A
-BkGlj56L9O4P02awFZzB/55d2CsufzMD+d4aMKpdIJivwXByg6fJCtPOIprAiGeR
-GuE9Q9ceUUJVrTYiy5CZeKTIQp4ZqWu5/wBQ+yvbsvxnzq2ESDpGmCkY6/ToMWmu
-5cZPbZcyF7XBybSBdvaMGFsthRpawvQMsGHDZBaVhLn099Hjx2p35jNiM+HqCQXn
-NweLYMJx9FZtOYyNJoTj0w97ViaSubz7V9n7LVIxW1QXmDXAk+75Fwq3x+n/tfhe
-1BTLEOKvARvRVB6M1EE0z+zeNusHIu/TUMSmGv59OhsQdW5Lp1D0o3JK2mHu6tgP
-+v1XRMaTQq73oHqU0oXCtsEdPuoFBNREBDhBOGB5wtFjfniu1zD0cKSDbVslSD5B
-LKu9Yi1PzZTWVkaOWQolA6sYwWFLhQbHoyQoNjAJz58VNNtYIMjR6fZ0xTYiPQpJ
-4Jh3TJKU
------END CERTIFICATE-----
diff --git a/dwds_test_common/fixtures/_webdev_smoke/mono_pkg.yaml b/dwds_test_common/fixtures/_webdev_smoke/mono_pkg.yaml
deleted file mode 100644
index 12cfc85..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/mono_pkg.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-# See https://pub.dev/packages/mono_repo for details
-stages:
-  - analyzer_and_format:
-    - group:
-      - format
-      - analyze: --fatal-infos .
-      sdk: dev
-
-cache:
-  directories:
-    - .dart_tool/build
-    - .dart_tool/pub
diff --git a/dwds_test_common/fixtures/_webdev_smoke/pubspec.yaml b/dwds_test_common/fixtures/_webdev_smoke/pubspec.yaml
deleted file mode 100644
index 550a165..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/pubspec.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: _webdev_smoke
-description: A test fixture for webdev testing.
-
-publish_to: none
-
-environment:
-  sdk: ^3.14.0-286.0.dev
-
-dev_dependencies:
-  build_daemon: ^4.1.4
-  build_runner: ^2.16.0
-  build_web_compilers: ^4.4.12
diff --git a/dwds_test_common/fixtures/_webdev_smoke/web/index.html b/dwds_test_common/fixtures/_webdev_smoke/web/index.html
deleted file mode 100644
index 7b69801..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/web/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>webdev example</title>
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <script defer src="main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_webdev_smoke/web/main.dart b/dwds_test_common/fixtures/_webdev_smoke/web/main.dart
deleted file mode 100644
index 8e3be28..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/web/main.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:developer';
-// TODO: https://github.com/dart-lang/webdev/issues/2508
-// ignore: deprecated_member_use
-import 'dart:html';
-
-void main() {
-  print('Initial Print');
-
-  registerExtension('ext.print', (_, __) async {
-    print('Hello World');
-    return ServiceExtensionResponse.result(json.encode({'success': true}));
-  });
-  document.body?.append(SpanElement()..text = 'Hello World!!');
-
-  var count = 0;
-  Timer.periodic(const Duration(seconds: 1), (_) {
-    print('Counter is: ${++count}'); // Breakpoint: printCounter
-  });
-}
-
-String topLevelMethod() => 'verify this!';
diff --git a/dwds_test_common/fixtures/_webdev_smoke/web/scopes.html b/dwds_test_common/fixtures/_webdev_smoke/web/scopes.html
deleted file mode 100644
index 6c33073..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/web/scopes.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-
-<head>
-  <script defer src="scopes_main.dart.js"></script>
-</head>
-
-</html>
diff --git a/dwds_test_common/fixtures/_webdev_smoke/web/scopes_main.dart b/dwds_test_common/fixtures/_webdev_smoke/web/scopes_main.dart
deleted file mode 100644
index c1a4e0e..0000000
--- a/dwds_test_common/fixtures/_webdev_smoke/web/scopes_main.dart
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright (c) 2020, 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.
-
-/// An example with more complicated scope.
-library;
-
-import 'dart:async';
-import 'dart:collection';
-
-final libraryPublicFinal = MyTestClass();
-
-final _libraryPrivateFinal = 1;
-Object? libraryNull;
-var libraryPublic = <String>['library', 'public', 'variable'];
-var notAList = NotReallyAList();
-
-var _libraryPrivate = ['library', 'private', 'variable'];
-
-var identityMap = <String, int>{};
-
-var map = <Object, Object>{};
-
-void staticFunction(int formal) {
-  print(formal); // Breakpoint: staticFunction
-}
-
-void main() async {
-  print('Initial print from scopes app');
-  final local = 'local in main';
-  final intLocalInMain = 42;
-  final testClass = MyTestClass();
-  Object? localThatsNull;
-  identityMap['a'] = 1;
-  identityMap['b'] = 2;
-  map['a'] = [1, 2, 3];
-  map['b'] = 'something';
-  notAList.add(7);
-
-  String nestedFunction<T>(T parameter, Object aClass) {
-    final another = int.tryParse('$parameter');
-    return '$local: parameter, $another'; // Breakpoint: nestedFunction
-  }
-
-  dynamic nestedWithClosure(String banana) {
-    return () => '$local + $banana';
-  }
-
-  Timer.periodic(const Duration(seconds: 1), (Timer t) {
-    final ticks = t.tick;
-    // ignore: unused_local_variable, prefer_typing_uninitialized_variables
-    var closureLocal;
-    libraryPublicFinal.printCount();
-    staticFunction(1);
-    print('ticking... $ticks (the answer is $intLocalInMain)');
-    print(nestedFunction('$ticks ${testClass.message}', Timer));
-    print(localThatsNull);
-    print(libraryNull);
-    final localList = libraryPublic;
-    print(localList);
-    localList.add('abc');
-    final f = testClass.methodWithVariables();
-    print(f('parameter'));
-  });
-
-  print(_libraryPrivateFinal);
-  print(_libraryPrivate);
-  print(nestedFunction(_libraryPrivate.first, Object));
-  print(nestedWithClosure(_libraryPrivate.first)());
-}
-
-String libraryFunction(String arg) {
-  print('calling a library function with $arg');
-  final concat = 'some constant plus $arg plus whatever';
-  print(concat);
-  return concat;
-}
-
-class MyTestClass<T> {
-  final String message;
-
-  late String notFinal;
-
-  MyTestClass({this.message = 'world'}) {
-    myselfField = this;
-    tornOff = toString;
-  }
-
-  String hello() => message;
-
-  String Function(String) methodWithVariables() {
-    final local = '$message + something';
-    print(local);
-    return (String parameter) {
-      // Be sure to use a field from this, so it isn't entirely optimized away.
-      final closureLocalInsideMethod = '$message/$local/$parameter';
-      print(closureLocalInsideMethod);
-      return closureLocalInsideMethod; // Breakpoint: nestedClosure
-    };
-  }
-
-  //ignore: avoid_returning_this
-  MyTestClass get myselfGetter => this;
-
-  late MyTestClass myselfField;
-
-  var count = 0;
-
-  // An easy location to add a breakpoint.
-  void printCount() {
-    print('The count is ${++count}');
-    libraryFunction('abc'); // Breakpoint: printMethod
-  }
-
-  final _privateField = 'a private field';
-
-  // ignore: unused_element
-  String privateMethod(String s) => '$s : $_privateField';
-
-  @override
-  String toString() => 'A test class with message $message';
-
-  bool equals(Object other) {
-    if (other is MyTestClass) return message == other.hello();
-    return false;
-  }
-
-  Function closure = someFunction;
-
-  late String Function() tornOff;
-}
-
-Function? someFunction() => null;
-
-// ignore: unused_element
-int _libraryPrivateFunction(int a, int b) => a + b;
-
-class NotReallyAList extends ListBase {
-  final List<Object?> _internal;
-
-  NotReallyAList() : _internal = [];
-
-  @override
-  Object? operator [](x) => _internal[x];
-
-  @override
-  operator []=(x, y) => _internal[x] = y as Object?;
-
-  @override
-  int get length => _internal.length;
-
-  @override
-  set length(x) => _internal.length = x;
-}
diff --git a/dwds_test_common/fixtures/analysis_options.yaml b/dwds_test_common/fixtures/analysis_options.yaml
deleted file mode 100644
index 064de52..0000000
--- a/dwds_test_common/fixtures/analysis_options.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file prevents sub-packages from picking up the parent's analysis options,
-# which eliminates package resolution errors during 'dart format'.
-
-analyzer:
-  exclude:
-    - "**"
\ No newline at end of file
diff --git a/dwds_test_common/lib/logging.dart b/dwds_test_common/lib/logging.dart
deleted file mode 100644
index 1d870b0..0000000
--- a/dwds_test_common/lib/logging.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:logging/logging.dart';
-import 'package:test/test.dart';
-
-typedef LogWriter =
-    void Function(
-      Level level,
-      String message, {
-      String? error,
-      String? loggerName,
-      String? stackTrace,
-    });
-
-StreamSubscription<LogRecord>? _loggerSub;
-
-/// Redirect the logs for the current zone to emit on failure.
-///
-/// If [debug] is false, messages are stored and reported on test failure.
-/// If [debug] is true, messages are always printed to the console.
-///
-/// Note that the [LogWriter] uses [printOnFailure] that stores the messages
-/// on the current zone. As a result, [setCurrentLogWriter] needs to be set
-/// in both `setUpAll` and `setUp` to store messages for the same zone as the
-/// failure in order to report all stored messages on that failure.
-///
-/// For example:
-///
-/// // Enable verbose logging for debugging.
-/// bool debug = true;
-///
-/// group('shared context', () {
-///     setUpAll(() async {
-///       // Set the logger for the current group.
-///       setCurrentLogWriter(debug: debug);
-///       ...
-///     });
-///     setUp(() async {
-///       // Reset the logger for the current test.
-///       setCurrentLogWriter(debug: debug);
-///       ...
-///     });
-///     ...
-/// });
-void setCurrentLogWriter({bool debug = false}) =>
-    configureLogWriter(customLogWriter: createLogWriter(debug: debug));
-
-/// Configure test log writer.
-///
-/// Tests and groups of tests can use this to configure individual
-/// log writers on setup.
-void configureLogWriter({LogWriter? customLogWriter}) {
-  _logWriter = customLogWriter ?? _logWriter;
-  Logger.root.level = Level.ALL;
-  _loggerSub?.cancel();
-  _loggerSub = Logger.root.onRecord.listen((event) {
-    logWriter(
-      event.level,
-      event.message,
-      error: event.error?.toString(),
-      loggerName: event.loggerName,
-      stackTrace: event.stackTrace?.toString(),
-    );
-  });
-}
-
-void stopLogWriter() {
-  _loggerSub?.cancel();
-  _loggerSub = null;
-}
-
-LogWriter _logWriter = createLogWriter();
-
-LogWriter createLogWriter({bool debug = false}) =>
-    (level, message, {String? error, String? loggerName, String? stackTrace}) {
-      final printFn = debug ? print : printOnFailure;
-      final errorMessage = error == null ? '' : ':\n$error';
-      final stackMessage = stackTrace == null ? '' : ':\n$stackTrace';
-      printFn(
-        '[$level] $loggerName: $message'
-        '$errorMessage'
-        '$stackMessage',
-      );
-    };
-
-LogWriter get logWriter => _logWriter;
diff --git a/dwds_test_common/lib/sdk_asset_generator.dart b/dwds_test_common/lib/sdk_asset_generator.dart
deleted file mode 100644
index ea1f06e..0000000
--- a/dwds_test_common/lib/sdk_asset_generator.dart
+++ /dev/null
@@ -1,185 +0,0 @@
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:file/file.dart';
-import 'package:file/local.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-import 'test_sdk_layout.dart';
-
-/// Generates sdk.js, sdk.map, files.
-
-class SdkAssetGenerator {
-  bool _sdkAssetsGenerated = false;
-  final _logger = Logger('SdkAssetGenerator');
-
-  final FileSystem fileSystem;
-  final bool canaryFeatures;
-  final ModuleFormat ddcModuleFormat;
-  final bool verbose;
-
-  late final TestSdkLayout sdkLayout;
-
-  SdkAssetGenerator({
-    this.fileSystem = const LocalFileSystem(),
-    required this.sdkLayout,
-    required this.canaryFeatures,
-    required this.ddcModuleFormat,
-    this.verbose = false,
-  });
-
-  /// Generate all SDK assets, once for the current executable run.
-  Future<void> generateSdkAssets() async {
-    if (!_sdkAssetsGenerated) {
-      _sdkAssetsGenerated = true;
-
-      // SDK full and outline .dill files are shipped with the SDK,
-      // but the JavaScript and sourcemaps are generated by other tooling
-      // i.e. flutter SDK or build_web_compilers.
-      // Generate missing files for tests if needed.
-      await _generateSdkJavaScript(canaryFeatures: canaryFeatures);
-    }
-  }
-
-  String resolveSdkJsPath({required bool canaryFeatures}) =>
-      switch (ddcModuleFormat) {
-        ModuleFormat.amd => sdkLayout.amdJsPath,
-        ModuleFormat.ddc => sdkLayout.ddcJsPath,
-        _ => throw Exception('Unsupported DDC module format $ddcModuleFormat.'),
-      };
-
-  String resolveSdkSourcemapPath({required bool canaryFeatures}) =>
-      switch (ddcModuleFormat) {
-        ModuleFormat.amd => sdkLayout.amdJsMapPath,
-        ModuleFormat.ddc => sdkLayout.ddcJsMapPath,
-        _ => throw Exception('Unsupported DDC module format $ddcModuleFormat.'),
-      };
-
-  String resolveSdkJsFilename({required bool canaryFeatures}) =>
-      switch (ddcModuleFormat) {
-        ModuleFormat.amd => sdkLayout.amdJsFileName,
-        ModuleFormat.ddc => sdkLayout.ddcJsFileName,
-        _ => throw Exception('Unsupported DDC module format $ddcModuleFormat.'),
-      };
-
-  Future<void> _generateSdkJavaScript({required bool canaryFeatures}) async {
-    Directory? outputDir;
-    try {
-      // Files to copy generated files to.
-      final outputJsPath = resolveSdkJsPath(canaryFeatures: canaryFeatures);
-      final outputJsMapPath = resolveSdkSourcemapPath(
-        canaryFeatures: canaryFeatures,
-      );
-      final outputFullDillPath = sdkLayout.fullDillPath;
-
-      final hasJsAsset = _exists(outputJsPath);
-      final hasJsMapAsset = _exists(outputJsMapPath);
-      final hasFullDillAsset = _exists(outputFullDillPath);
-      final hasAssets = hasFullDillAsset && hasJsAsset && hasJsMapAsset;
-
-      // Files already exist.
-      if (hasAssets) return;
-
-      // Generate missing files.
-      outputDir = fileSystem.systemTempDirectory.createTempSync();
-
-      // Files to generate
-      final jsPath = p.join(
-        outputDir.path,
-        resolveSdkJsFilename(canaryFeatures: canaryFeatures),
-      );
-      final jsMapPath = p.setExtension(jsPath, '.js.map');
-
-      _logger.info('Generating SDK JavaScript and sourcemap files...');
-
-      final sdkDirectoryUri = fileSystem.directory(sdkLayout.sdkDirectory).uri;
-      final args = <String>[
-        'compile',
-        'js-dev',
-        '--compile-sdk',
-        '--multi-root',
-        '$sdkDirectoryUri',
-        '--multi-root-scheme',
-        'org-dartlang-sdk',
-        '--libraries-file',
-        'org-dartlang-sdk:///lib/libraries.json',
-        '--modules',
-        ddcModuleFormat.name,
-        'dart:core',
-        '-o',
-        jsPath,
-        if (canaryFeatures) '--canary',
-      ];
-
-      final output = <String>[];
-      _logger.fine('Executing dart ${args.join(' ')}');
-      final process = await Process.start(
-        sdkLayout.dartPath,
-        args,
-        workingDirectory: sdkLayout.sdkDirectory,
-      );
-
-      process.stdout
-          .transform<String>(utf8.decoder)
-          .transform<String>(const LineSplitter())
-          .listen((line) {
-            _logger.fine(line);
-            output.add(line);
-          });
-
-      process.stderr
-          .transform<String>(utf8.decoder)
-          .transform<String>(const LineSplitter())
-          .listen((line) {
-            _logger.warning(line);
-            output.add(line);
-          });
-
-      await process.exitCode.then((int code) {
-        if (code != 0) {
-          _logger.warning('Error generating $jsPath: ${output.join('\n')}');
-          throw Exception('The Dart compiler exited unexpectedly');
-        }
-      });
-
-      final outputJsDir = fileSystem.directory(p.dirname(outputJsPath));
-      if (!outputJsDir.existsSync()) {
-        outputJsDir.createSync(recursive: true);
-      }
-      await _moveAndValidate(jsPath, outputJsPath);
-      await _moveAndValidate(jsMapPath, outputJsMapPath);
-
-      _logger.info('Done generating SDK JavaScript and sourcemap files.');
-    } catch (e, s) {
-      _logger.severe(
-        'Failed to generate SDK JavaScript and sourcemap files',
-        e,
-        s,
-      );
-      rethrow;
-    } finally {
-      outputDir?.deleteSync(recursive: true);
-    }
-  }
-
-  bool _exists(String path) => fileSystem.file(path).existsSync();
-  void _delete(String path) => fileSystem.file(path).deleteSync();
-
-  Future<void> _moveAndValidate(String from, String to) async {
-    _logger.fine('Renaming $from to $to');
-
-    if (!_exists(from)) {
-      _logger.severe('Failed to generate SDK asset at $to');
-      throw Exception('File "$from" does not exist.');
-    }
-
-    if (_exists(to)) _delete(to);
-    await fileSystem.file(from).rename(to);
-
-    if (!_exists(to)) {
-      _logger.severe('Failed to generate SDK asset at $to');
-      throw Exception('File "$to" does not exist.');
-    }
-  }
-}
diff --git a/dwds_test_common/lib/test_sdk_configuration.dart b/dwds_test_common/lib/test_sdk_configuration.dart
deleted file mode 100644
index c6fabc0..0000000
--- a/dwds_test_common/lib/test_sdk_configuration.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds/sdk_configuration.dart';
-import 'package:logging/logging.dart';
-
-import 'sdk_asset_generator.dart';
-import 'test_sdk_layout.dart';
-
-/// Implementation for SDK configuration for tests that can generate
-/// missing assets.
-///
-///  - Generate SDK js, source map (normally included in flutter SDK
-///    or produced by build).
-class TestSdkConfigurationProvider extends SdkConfigurationProvider {
-  final _logger = Logger('TestSdkConfigurationProvider');
-
-  final bool verbose;
-  final bool canaryFeatures;
-  final ModuleFormat ddcModuleFormat;
-  late final Directory _sdkDirectory;
-  SdkConfiguration? _configuration;
-
-  late final TestSdkLayout sdkLayout;
-
-  TestSdkConfigurationProvider({
-    this.canaryFeatures = false,
-    this.verbose = false,
-    this.ddcModuleFormat = ModuleFormat.amd,
-  }) {
-    _sdkDirectory = Directory.systemTemp.createTempSync('sdk_copy');
-    sdkLayout = TestSdkLayout.createDefault(_sdkDirectory.path);
-  }
-
-  @override
-  Future<SdkConfiguration> get configuration async =>
-      _configuration ??= await _create();
-
-  /// Generate missing assets in the default SDK layout.
-  ///
-  /// Creates a copy of the SDK directory where all the missing assets
-  /// are generated. Tests using this configuration run using the copy
-  /// sdk layout to make sure the actual SDK is not modified.
-  Future<SdkConfiguration> _create() async {
-    try {
-      await copyDirectory(
-        TestSdkLayout.defaultSdkDirectory,
-        _sdkDirectory.path,
-      );
-    } catch (e, s) {
-      _logger.severe('Failed to create SDK directory copy', e, s);
-      dispose();
-      rethrow;
-    }
-
-    try {
-      final assetGenerator = SdkAssetGenerator(
-        sdkLayout: sdkLayout,
-        canaryFeatures: canaryFeatures,
-        verbose: verbose,
-        ddcModuleFormat: ddcModuleFormat,
-      );
-
-      await assetGenerator.generateSdkAssets();
-      return TestSdkLayout.createConfiguration(sdkLayout);
-    } catch (e, s) {
-      _logger.severe('Failed generate missing assets', e, s);
-      dispose();
-      rethrow;
-    }
-  }
-
-  void dispose({bool retry = true}) {
-    try {
-      if (_sdkDirectory.existsSync()) {
-        _sdkDirectory.deleteSync(recursive: true);
-      }
-    } catch (e, s) {
-      _logger.warning('Failed delete SDK directory copy', e, s);
-      if (retry) {
-        dispose(retry: false);
-      }
-    }
-  }
-}
diff --git a/dwds_test_common/lib/test_sdk_layout.dart b/dwds_test_common/lib/test_sdk_layout.dart
deleted file mode 100644
index c44b08e..0000000
--- a/dwds_test_common/lib/test_sdk_layout.dart
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:dwds/sdk_configuration.dart';
-import 'package:path/path.dart' as p;
-
-/// Test Dart SDK layout.
-///
-/// Contains definition of the default SDK layout required for tests.
-/// We keep all the path constants in one place for ease of update.
-class TestSdkLayout {
-  static final defaultSdkDirectory = SdkLayout.defaultSdkDirectory;
-
-  static TestSdkLayout defaultSdkLayout = TestSdkLayout.createDefault(
-    defaultSdkDirectory,
-  );
-
-  static SdkConfiguration defaultSdkConfiguration = createConfiguration(
-    defaultSdkLayout,
-  );
-
-  factory TestSdkLayout.createDefault(String sdkDirectory) =>
-      TestSdkLayout.createDefaultFromSdkLayout(
-        SdkLayout.createDefault(sdkDirectory),
-      );
-
-  factory TestSdkLayout.createDefaultFromSdkLayout(SdkLayout sdkLayout) =>
-      TestSdkLayout(
-        sdkDirectory: sdkLayout.sdkDirectory,
-        summaryPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          '_internal',
-          'ddc_outline.dill',
-        ),
-        fullDillPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          '_internal',
-          'ddc_platform.dill',
-        ),
-        amdJsPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'kernel',
-          'amd',
-          'dart_sdk.js',
-        ),
-        amdJsMapPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'kernel',
-          'amd',
-          'dart_sdk.js.map',
-        ),
-        ddcJsPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'kernel',
-          'ddc',
-          'dart_sdk.js',
-        ),
-        ddcJsMapPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'kernel',
-          'ddc',
-          'dart_sdk.js.map',
-        ),
-        ddcModuleLoaderJsPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'ddc',
-          'ddc_module_loader.js',
-        ),
-        requireJsPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'amd',
-          'require.js',
-        ),
-        stackTraceMapperPath: p.join(
-          sdkLayout.sdkDirectory,
-          'lib',
-          'dev_compiler',
-          'web',
-          'dart_stack_trace_mapper.js',
-        ),
-        dartPath: p.join(
-          sdkLayout.sdkDirectory,
-          'bin',
-          Platform.isWindows ? 'dart.exe' : 'dart',
-        ),
-        dartAotRuntimePath: p.join(
-          sdkLayout.sdkDirectory,
-          'bin',
-          Platform.isWindows ? 'dartaotruntime.exe' : 'dartaotruntime',
-        ),
-        frontendServerSnapshotPath: p.join(
-          sdkLayout.sdkDirectory,
-          'bin',
-          'snapshots',
-          'frontend_server_aot.dart.snapshot',
-        ),
-        dartdevcSnapshotPath: sdkLayout.dartdevcSnapshotPath,
-        kernelWorkerSnapshotPath: p.join(
-          sdkLayout.sdkDirectory,
-          'bin',
-          'snapshots',
-          'kernel_worker_aot.dart.snapshot',
-        ),
-        devToolsDirectory: p.join(
-          sdkLayout.sdkDirectory,
-          'bin',
-          'resources',
-          'devtools',
-        ),
-      );
-
-  final String sdkDirectory;
-
-  String get amdJsFileName => p.basename(amdJsPath);
-  String get amdJsMapFileName => p.basename(amdJsMapPath);
-  String get ddcJsFileName => p.basename(ddcJsPath);
-  String get ddcJsMapFileName => p.basename(ddcJsMapPath);
-  String get summaryFileName => p.basename(summaryPath);
-  String get fullDillFileName => p.basename(fullDillPath);
-
-  final String amdJsPath;
-  final String amdJsMapPath;
-  final String ddcJsPath;
-  final String ddcJsMapPath;
-  final String summaryPath;
-  final String fullDillPath;
-
-  final String ddcModuleLoaderJsPath;
-  final String requireJsPath;
-  final String stackTraceMapperPath;
-
-  final String dartPath;
-  final String dartAotRuntimePath;
-  final String frontendServerSnapshotPath;
-  final String dartdevcSnapshotPath;
-  final String kernelWorkerSnapshotPath;
-  final String devToolsDirectory;
-
-  const TestSdkLayout({
-    required this.sdkDirectory,
-    required this.amdJsPath,
-    required this.amdJsMapPath,
-    required this.ddcJsPath,
-    required this.ddcJsMapPath,
-    required this.summaryPath,
-    required this.fullDillPath,
-    required this.ddcModuleLoaderJsPath,
-    required this.requireJsPath,
-    required this.stackTraceMapperPath,
-    required this.dartPath,
-    required this.dartAotRuntimePath,
-    required this.frontendServerSnapshotPath,
-    required this.dartdevcSnapshotPath,
-    required this.kernelWorkerSnapshotPath,
-    required this.devToolsDirectory,
-  });
-
-  /// Creates configuration from sdk layout.
-  static SdkConfiguration createConfiguration(TestSdkLayout sdkLayout) =>
-      SdkConfiguration(
-        sdkDirectory: sdkLayout.sdkDirectory,
-        sdkSummaryPath: sdkLayout.summaryPath,
-        compilerWorkerPath: sdkLayout.dartdevcSnapshotPath,
-      );
-}
-
-// Update modified files.
-Future<void> copyDirectory(String from, String to) async {
-  if (!Directory(from).existsSync()) return;
-  await Directory(to).create(recursive: true);
-
-  await for (final file in Directory(from).list(followLinks: false)) {
-    final copyTo = p.join(to, p.relative(file.path, from: from));
-    if (file is Directory) {
-      await copyDirectory(file.path, copyTo);
-    } else if (file is File) {
-      await File(file.path).copy(copyTo);
-    } else if (file is Link) {
-      await Link(copyTo).create(await file.target(), recursive: true);
-    }
-  }
-}
diff --git a/dwds_test_common/lib/utilities.dart b/dwds_test_common/lib/utilities.dart
deleted file mode 100644
index 640cbc3..0000000
--- a/dwds_test_common/lib/utilities.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2026, 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:convert';
-import 'dart:io';
-import 'dart:isolate';
-
-import 'package:path/path.dart' as p;
-import 'package:pub_semver/pub_semver.dart';
-
-const webdevDirName = 'webdev';
-const dwdsDirName = 'dwds';
-const fixturesDirName = 'fixtures';
-
-/// The path to the project root directory, e.g. `webdev/` or `pkg/` in the
-/// Dart SDK.
-String get projectRootDir {
-  return p.dirname(_dwdsTestCommonPackageRoot);
-}
-
-/// The path to the DWDS directory in the local machine, e.g.
-/// 'webdev/dwds' or 'pkg/dwds'.
-String get dwdsPath {
-  return p.join(projectRootDir, dwdsDirName);
-}
-
-/// The path to the fixtures directory in the local machine, e.g.
-/// 'webdev/dwds_test_common/fixtures' or 'pkg/dwds_test_common/fixtures'.
-String get fixturesPath {
-  return p.join(_dwdsTestCommonPackageRoot, fixturesDirName);
-}
-
-/// The path to the webdev/dwds_test_common or pkg/dwds_test_common package
-/// root in the local machine, e.g. 'webdev/dwds_test_common' or
-/// 'pkg/dwds_test_common'.
-String get _dwdsTestCommonPackageRoot {
-  // Try to resolve any `package:dwds_test_common` file.
-  final packageUri = Isolate.resolvePackageUriSync(
-    Uri.parse('package:dwds_test_common/utilities.dart'),
-  );
-  if (packageUri != null) {
-    // Strip `lib/utilities.dart`.
-    return p.dirname(p.dirname(packageUri.toFilePath()));
-  }
-  // If there's no package config, try to find it from the current dir.
-  for (var dir = p.current; dir != p.dirname(dir); dir = p.dirname(dir)) {
-    final file = File(p.join(dir, '.dart_tool', 'package_config.json'));
-    if (!file.existsSync()) continue;
-    final config = jsonDecode(file.readAsStringSync()) as Map<String, Object?>;
-    for (final package in config['packages'] as List<Object?>) {
-      if (package case {
-        'name': 'dwds_test_common',
-        'rootUri': final String rootUri,
-      }) {
-        return p.fromUri(file.uri.resolve(rootUri));
-      }
-    }
-  }
-  throw StateError('Could not find dwds_test_common from ${p.current}.');
-}
-
-// Creates a path compatible for web.
-String webCompatiblePath(List<String> pathParts) {
-  final context = p.Context(style: p.Style.posix);
-  return context.joinAll([...pathParts]);
-}
-
-/// Expects one of [pathFromWebdev], [pathFromDwds] or [pathFromFixtures] to
-/// be provided. Returns the absolute path in the local machine to that path,
-/// e.g. absolutePath(pathFromFixtures: '_test/example') ->
-/// '/workstation/webdev/dwds_test_common/fixtures/_test/example'
-String absolutePath({
-  String? pathFromWebdev,
-  String? pathFromDwds,
-  String? pathFromFixtures,
-}) {
-  if (pathFromWebdev != null) {
-    assert(pathFromDwds == null && pathFromFixtures == null);
-    return p.normalize(p.join(projectRootDir, pathFromWebdev));
-  }
-  if (pathFromDwds != null) {
-    assert(pathFromFixtures == null);
-    return p.normalize(p.join(dwdsPath, pathFromDwds));
-  }
-  if (pathFromFixtures != null) {
-    assert(pathFromDwds == null && pathFromWebdev == null);
-    return p.normalize(p.join(fixturesPath, pathFromFixtures));
-  }
-  throw Exception('Expected a path parameter.');
-}
-
-bool dartSdkIsAtLeast(String sdkVersion) {
-  final expectedVersion = Version.parse(sdkVersion);
-  final actualVersion = Version.parse(Platform.version.split(' ')[0]);
-  return actualVersion >= expectedVersion;
-}
diff --git a/dwds_test_common/mono_pkg.yaml b/dwds_test_common/mono_pkg.yaml
deleted file mode 100644
index 1366dce..0000000
--- a/dwds_test_common/mono_pkg.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# See https://pub.dev/packages/mono_repo for details
-stages:
-  - analyzer_and_format:
-      - group:
-          - format
-          - analyze: --fatal-infos .
-        sdk: dev
-  - unit_test:
-      # Linux tests:
-      # Note: `Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &` must be
-      # run first for Linux.
-      - group:
-          - command: Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
-          - test: --exclude-tags=release
-        sdk: dev
-        os:
-          - linux
-        # Windows tests:
-      - group:
-          - test: --exclude-tags=release
-        sdk: dev
-        os:
-          - windows
diff --git a/dwds_test_common/pubspec.yaml b/dwds_test_common/pubspec.yaml
deleted file mode 100644
index e93dd69..0000000
--- a/dwds_test_common/pubspec.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: dwds_test_common
-publish_to: none
-description: >-
-  Common test functionality.
-environment:
-  sdk: ^3.12.0-0
-
-dependencies:
-  dwds: any
-  file: ">=6.0.0 <8.0.0"
-  logging: ^1.0.1
-  path: ^1.8.1
-  pub_semver: ^2.1.1
-  test: ^1.21.1
-
-dev_dependencies:
-  dart_flutter_team_lints: ^3.5.2
diff --git a/dwds_test_common/pubspec_overrides.yaml b/dwds_test_common/pubspec_overrides.yaml
deleted file mode 100644
index d3d78b8..0000000
--- a/dwds_test_common/pubspec_overrides.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependency_overrides:
-  dwds:
-    path: ../dwds
diff --git a/dwds_test_common/test/sdk_asset_generator_test.dart b/dwds_test_common/test/sdk_asset_generator_test.dart
deleted file mode 100644
index 7f7563d..0000000
--- a/dwds_test_common/test/sdk_asset_generator_test.dart
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2023, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/sdk_asset_generator.dart';
-import 'package:dwds_test_common/test_sdk_layout.dart';
-import 'package:test/test.dart';
-
-void main() {
-  group('SDK asset generator', () {
-    const debug = false;
-
-    late Directory tempDir;
-    late String sdkDirectory;
-    late String compilerWorkerPath;
-
-    // Missing assets
-    late String amdSdkJsPath;
-    late String amdSdkJsMapPath;
-    late String ddcSdkJsPath;
-    late String ddcSdkJsMapPath;
-
-    setUp(() async {
-      setCurrentLogWriter(debug: debug);
-      tempDir = Directory.systemTemp.createTempSync();
-
-      sdkDirectory = tempDir.path;
-      final copySdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-
-      compilerWorkerPath = copySdkLayout.dartdevcSnapshotPath;
-
-      // Copy the SDK directory into a temp directory.
-      await copyDirectory(TestSdkLayout.defaultSdkDirectory, sdkDirectory);
-
-      // Simulate missing assets.
-      amdSdkJsPath = copySdkLayout.amdJsPath;
-      amdSdkJsMapPath = copySdkLayout.amdJsMapPath;
-      ddcSdkJsPath = copySdkLayout.ddcJsPath;
-      ddcSdkJsMapPath = copySdkLayout.ddcJsMapPath;
-
-      _deleteIfExists(amdSdkJsPath);
-      _deleteIfExists(amdSdkJsMapPath);
-      _deleteIfExists(ddcSdkJsPath);
-      _deleteIfExists(ddcSdkJsMapPath);
-    });
-
-    tearDown(() {
-      tempDir.deleteSync(recursive: true);
-    });
-
-    test(
-      'Can generate missing SDK assets and validate SDK configuration for the '
-      'AMD module system',
-      () async {
-        final sdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-        final configuration = TestSdkLayout.createConfiguration(sdkLayout);
-
-        final assetGenerator = SdkAssetGenerator(
-          sdkLayout: sdkLayout,
-          verbose: true,
-          canaryFeatures: false,
-          ddcModuleFormat: ModuleFormat.amd,
-        );
-        await assetGenerator.generateSdkAssets();
-
-        // Make sure SDK configuration and asset generator agree on the file
-        // paths.
-        expect(configuration.sdkDirectory, equals(sdkDirectory));
-        expect(configuration.compilerWorkerPath, equals(compilerWorkerPath));
-
-        expect(sdkLayout.amdJsPath, equals(amdSdkJsPath));
-        expect(sdkLayout.amdJsMapPath, equals(amdSdkJsMapPath));
-
-        // Validate that configuration files exist.
-        configuration.validateSdkDir();
-        configuration.validate();
-
-        // Validate all assets exist.
-        expect(sdkLayout.amdJsPath, _exists);
-        expect(sdkLayout.amdJsMapPath, _exists);
-      },
-    );
-
-    test(
-      'Can generate missing SDK assets and validate SDK configuration for the '
-      'DDC module system',
-      () async {
-        final sdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-        final configuration = TestSdkLayout.createConfiguration(sdkLayout);
-
-        final assetGenerator = SdkAssetGenerator(
-          sdkLayout: sdkLayout,
-          verbose: true,
-          canaryFeatures: false,
-          ddcModuleFormat: ModuleFormat.ddc,
-        );
-        await assetGenerator.generateSdkAssets();
-
-        // Make sure SDK configuration and asset generator agree on the file
-        // paths.
-        expect(configuration.sdkDirectory, equals(sdkDirectory));
-        expect(configuration.compilerWorkerPath, equals(compilerWorkerPath));
-
-        expect(sdkLayout.ddcJsPath, equals(ddcSdkJsPath));
-        expect(sdkLayout.ddcJsMapPath, equals(ddcSdkJsMapPath));
-
-        // Validate that configuration files exist.
-        configuration.validateSdkDir();
-        configuration.validate();
-
-        // Validate all assets exist.
-        expect(sdkLayout.ddcJsPath, _exists);
-        expect(sdkLayout.ddcJsMapPath, _exists);
-      },
-    );
-
-    test(
-      'Can generate missing SDK assets with canary features enabled',
-      () async {
-        final sdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-
-        final assetGenerator = SdkAssetGenerator(
-          sdkLayout: sdkLayout,
-          verbose: true,
-          canaryFeatures: true,
-          ddcModuleFormat: ModuleFormat.amd,
-        );
-        await assetGenerator.generateSdkAssets();
-
-        final sdk = File(amdSdkJsPath).readAsStringSync();
-        expect(sdk, contains('canary'));
-      },
-    );
-
-    test('Can generate missing SDK assets with canary features enabled for the '
-        'DDC module system', () async {
-      final sdkLayout = TestSdkLayout.createDefault(sdkDirectory);
-
-      final assetGenerator = SdkAssetGenerator(
-        sdkLayout: sdkLayout,
-        verbose: true,
-        canaryFeatures: true,
-        ddcModuleFormat: ModuleFormat.ddc,
-      );
-      await assetGenerator.generateSdkAssets();
-
-      final sdk = File(ddcSdkJsPath).readAsStringSync();
-      expect(sdk, contains('canary'));
-    });
-  });
-}
-
-Matcher _exists = predicate(
-  (String path) => File(path).existsSync(),
-  'File exists',
-);
-
-void _deleteIfExists(String path) {
-  final file = File(path);
-  if (file.existsSync()) {
-    file.deleteSync();
-  }
-}
diff --git a/dwds_test_common/test/test_sdk_configuration_test.dart b/dwds_test_common/test/test_sdk_configuration_test.dart
deleted file mode 100644
index 3ff5fdd..0000000
--- a/dwds_test_common/test/test_sdk_configuration_test.dart
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright (c) 2019, 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.
-
-@TestOn('vm')
-@Timeout(Duration(minutes: 2))
-library;
-
-import 'dart:io';
-
-import 'package:dwds/expression_compiler.dart';
-import 'package:dwds_test_common/logging.dart';
-import 'package:dwds_test_common/test_sdk_configuration.dart';
-import 'package:test/test.dart';
-
-void main() {
-  const debug = false;
-
-  group('Test SDK configuration provider |', () {
-    setUpAll(() {
-      setCurrentLogWriter(debug: debug);
-    });
-
-    test('Creates and deletes SDK directory copy', () async {
-      final provider = TestSdkConfigurationProvider(
-        verbose: debug,
-        ddcModuleFormat: ModuleFormat.amd,
-      );
-      final sdkDirectory = provider.sdkLayout.sdkDirectory;
-      final sdkSummary = provider.sdkLayout.summaryPath;
-      try {
-        expect(
-          sdkDirectory,
-          _directoryExists,
-          reason: 'SDK directory should be created',
-        );
-        expect(
-          sdkSummary,
-          isNot(_fileExists),
-          reason: 'SDK summary should not be generated yet.',
-        );
-
-        await provider.configuration;
-        expect(
-          sdkSummary,
-          _fileExists,
-          reason: 'SDK summary should be generated',
-        );
-      } finally {
-        provider.dispose();
-        expect(
-          sdkDirectory,
-          isNot(_directoryExists),
-          reason: 'SDK directory copy should be deleted on dispose',
-        );
-      }
-    });
-  });
-
-  group('Test SDK configuration | DDC with DDC modules |', () {
-    setCurrentLogWriter(debug: debug);
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      ddcModuleFormat: ModuleFormat.ddc,
-    );
-    tearDownAll(provider.dispose);
-
-    test('Can validate configuration with generated assets', () async {
-      final sdkConfiguration = await provider.configuration;
-      sdkConfiguration.validateSdkDir();
-      sdkConfiguration.validate();
-    });
-
-    test('SDK layout exists', () async {
-      await provider.configuration;
-      final sdkLayout = provider.sdkLayout;
-
-      expect(sdkLayout.sdkDirectory, _directoryExists);
-      expect(sdkLayout.ddcJsPath, _fileExists);
-      expect(sdkLayout.ddcJsMapPath, _fileExists);
-      expect(sdkLayout.summaryPath, _fileExists);
-      expect(sdkLayout.fullDillPath, _fileExists);
-
-      expect(sdkLayout.ddcModuleLoaderJsPath, _fileExists);
-      expect(sdkLayout.stackTraceMapperPath, _fileExists);
-
-      expect(sdkLayout.dartPath, _fileExists);
-      expect(sdkLayout.frontendServerSnapshotPath, _fileExists);
-      expect(sdkLayout.dartdevcSnapshotPath, _fileExists);
-      expect(sdkLayout.kernelWorkerSnapshotPath, _fileExists);
-      expect(sdkLayout.devToolsDirectory, _directoryExists);
-    });
-  });
-
-  group('Test SDK configuration | DDC with AMD modules |', () {
-    setCurrentLogWriter(debug: debug);
-    final provider = TestSdkConfigurationProvider(
-      verbose: debug,
-      ddcModuleFormat: ModuleFormat.amd,
-    );
-    tearDownAll(provider.dispose);
-
-    test('Can validate configuration with generated assets', () async {
-      final sdkConfiguration = await provider.configuration;
-      sdkConfiguration.validateSdkDir();
-      sdkConfiguration.validate();
-    });
-
-    test('SDK layout exists', () async {
-      await provider.configuration;
-      final sdkLayout = provider.sdkLayout;
-
-      expect(sdkLayout.sdkDirectory, _directoryExists);
-      expect(sdkLayout.amdJsPath, _fileExists);
-      expect(sdkLayout.amdJsMapPath, _fileExists);
-      expect(sdkLayout.summaryPath, _fileExists);
-      expect(sdkLayout.fullDillPath, _fileExists);
-
-      expect(sdkLayout.requireJsPath, _fileExists);
-      expect(sdkLayout.stackTraceMapperPath, _fileExists);
-
-      expect(sdkLayout.dartPath, _fileExists);
-      expect(sdkLayout.dartAotRuntimePath, _fileExists);
-      expect(sdkLayout.frontendServerSnapshotPath, _fileExists);
-      expect(sdkLayout.dartdevcSnapshotPath, _fileExists);
-      expect(sdkLayout.kernelWorkerSnapshotPath, _fileExists);
-      expect(sdkLayout.devToolsDirectory, _directoryExists);
-    });
-  });
-}
-
-Matcher _fileExists = predicate(
-  (String path) => File(path).existsSync(),
-  'File exists',
-);
-
-Matcher _directoryExists = predicate(
-  (String path) => Directory(path).existsSync(),
-  'Directory exists',
-);
diff --git a/dwds_webdev_integration_test/README.md b/dwds_webdev_integration_test/README.md
new file mode 100644
index 0000000..acb1d56
--- /dev/null
+++ b/dwds_webdev_integration_test/README.md
@@ -0,0 +1,43 @@
+# DWDS webdev integration tests
+
+This unpublished package runs DWDS integration tests from webdev. Currently it
+runs the shared DWDS integration tests against apps that are built and served
+by `build_runner` (through the build daemon).
+
+`package:dwds` and `package:dwds_test_common` live in the Dart SDK
+(`pkg/dwds` and `pkg/dwds_test_common`). This package depends on them through
+git `dependency_overrides` pointing at the SDK's `main` branch, so these tests
+always run against the latest DWDS.
+
+## Layout
+
+- `test/integration/fixtures/build_daemon_context.dart`: The
+  `BuildDaemonTestContext`, the build daemon counterpart of the SDK's
+  `FrontendServerTestContext`.
+- `test/integration/build_daemon/`: Wrappers that run the shared integration
+  test scenarios defined in `package:dwds_test_common/integration` with the
+  `BuildDaemonTestContext`.
+- `test/integration/`: Tests that don't need a build context.
+
+## Running the tests
+
+The tests require Chrome and a matching version of ChromeDriver. By default
+they look for `google-chrome` and `chromedriver` on the `PATH`; set the
+`CHROME_EXECUTABLE` and `CHROMEDRIVER_PATH` environment variables to use other
+binaries.
+
+```sh
+dart pub upgrade
+dart test
+```
+
+To test against local changes to DWDS, point the `dependency_overrides` at your
+Dart SDK checkout in a `pubspec_overrides.yaml` file:
+
+```yaml
+dependency_overrides:
+  dwds:
+    path: <path to the sdk>/pkg/dwds
+  dwds_test_common:
+    path: <path to the sdk>/pkg/dwds_test_common
+```
diff --git a/dwds_test_common/analysis_options.yaml b/dwds_webdev_integration_test/analysis_options.yaml
similarity index 62%
rename from dwds_test_common/analysis_options.yaml
rename to dwds_webdev_integration_test/analysis_options.yaml
index 3faabb5..420dc7e 100644
--- a/dwds_test_common/analysis_options.yaml
+++ b/dwds_webdev_integration_test/analysis_options.yaml
@@ -1,5 +1,5 @@
 include: package:dart_flutter_team_lints/analysis_options.yaml
 
 analyzer:
-  exclude:
-    - fixtures/**
+  errors:
+    implementation_imports: ignore
diff --git a/dwds/dart_test.yaml b/dwds_webdev_integration_test/dart_test.yaml
similarity index 100%
rename from dwds/dart_test.yaml
rename to dwds_webdev_integration_test/dart_test.yaml
diff --git a/dwds/mono_pkg.yaml b/dwds_webdev_integration_test/mono_pkg.yaml
similarity index 95%
rename from dwds/mono_pkg.yaml
rename to dwds_webdev_integration_test/mono_pkg.yaml
index cf4a65a..739237b 100644
--- a/dwds/mono_pkg.yaml
+++ b/dwds_webdev_integration_test/mono_pkg.yaml
@@ -4,7 +4,6 @@
     - group:
       - format
       - analyze: --fatal-infos .
-      - test: test/build/ensure_version_test.dart
       sdk: dev
   - unit_test:
     # Linux extension tests:
diff --git a/dwds_webdev_integration_test/pubspec.yaml b/dwds_webdev_integration_test/pubspec.yaml
new file mode 100644
index 0000000..7dd7869
--- /dev/null
+++ b/dwds_webdev_integration_test/pubspec.yaml
@@ -0,0 +1,34 @@
+name: dwds_webdev_integration_test
+publish_to: none
+description: >-
+  DWDS integration tests run from webdev, e.g. the shared DWDS test suites from
+  the Dart SDK against apps built with build_runner (via the build daemon).
+environment:
+  sdk: ^3.14.0-286.0.dev
+
+dev_dependencies:
+  build_daemon: ^4.1.4
+  dart_flutter_team_lints: ^3.5.2
+  dwds: any
+  dwds_test_common: any
+  http: ^1.0.0
+  logging: ^1.0.2
+  shelf: ^1.3.0
+  shelf_proxy: ^1.0.4
+  test: ^1.21.6
+  vm_service: ">=14.2.4 <16.0.0"
+  webkit_inspection_protocol: ^1.0.1
+
+# DWDS and its shared test suites live in the Dart SDK. Always test against the
+# latest versions there.
+dependency_overrides:
+  dwds:
+    git:
+      url: https://github.com/dart-lang/sdk.git
+      ref: main
+      path: pkg/dwds
+  dwds_test_common:
+    git:
+      url: https://github.com/dart-lang/sdk.git
+      ref: main
+      path: pkg/dwds_test_common
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/README.md b/dwds_webdev_integration_test/test/integration/build_daemon/README.md
new file mode 100644
index 0000000..724dfc0
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/README.md
@@ -0,0 +1,5 @@
+# Build Daemon Integration Tests
+
+The tests in this directory are wrappers around the shared integration test scenarios defined in `package:dwds_test_common/integration`.
+
+They execute the test scenarios defined there using `build_runner` (via the build daemon) as the build client.
diff --git a/dwds/test/integration/breakpoint_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_amd_test.dart
similarity index 73%
rename from dwds/test/integration/breakpoint_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_amd_test.dart
index c2b1947..1cfc687 100644
--- a/dwds/test/integration/breakpoint_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_amd_test.dart
@@ -7,11 +7,11 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/breakpoint.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'breakpoint_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -26,14 +26,7 @@
   group('Build Daemon |', () {
     testBreakpoint(
       provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-
-  group('Frontend Server |', () {
-    testBreakpoint(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
+      contextFactory: BuildDaemonTestContext.new,
     );
   });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_ddc_library_bundle_test.dart
similarity index 73%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_ddc_library_bundle_test.dart
index d0494e7..42f0614 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/breakpoint_ddc_library_bundle_test.dart
@@ -2,33 +2,32 @@
 // 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.
 
-@Tags(['daily'])
 @TestOn('vm')
-@Timeout(Duration(minutes: 5))
+@Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/breakpoint.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
+  group('Build Daemon |', () {
+    testBreakpoint(
       provider: provider,
-      compilationMode: CompilationMode.frontendServer,
+      contextFactory: BuildDaemonTestContext.new,
     );
   });
 }
diff --git a/dwds/test/integration/callstack_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/callstack_amd_test.dart
similarity index 73%
rename from dwds/test/integration/callstack_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/callstack_amd_test.dart
index e511a65..ff271f3 100644
--- a/dwds/test/integration/callstack_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/callstack_amd_test.dart
@@ -7,11 +7,11 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/callstack.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'callstack_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -26,14 +26,7 @@
   group('Build Daemon |', () {
     testCallStack(
       provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-
-  group('Frontend Server |', () {
-    testCallStack(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
+      contextFactory: BuildDaemonTestContext.new,
     );
   });
 }
diff --git a/dwds/test/integration/callstack_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/callstack_ddc_library_bundle_test.dart
similarity index 74%
rename from dwds/test/integration/callstack_ddc_library_bundle_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/callstack_ddc_library_bundle_test.dart
index 3344150..4778e87 100644
--- a/dwds/test/integration/callstack_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/callstack_ddc_library_bundle_test.dart
@@ -7,11 +7,11 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/callstack.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'callstack_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -27,14 +27,7 @@
   group('Build Daemon |', () {
     testCallStack(
       provider: provider,
-      compilationMode: CompilationMode.buildDaemon,
-    );
-  });
-
-  group('Frontend Server |', () {
-    testCallStack(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
+      contextFactory: BuildDaemonTestContext.new,
     );
   });
 }
diff --git a/dwds/test/integration/chrome_proxy_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_amd_test.dart
similarity index 66%
rename from dwds/test/integration/chrome_proxy_service_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_amd_test.dart
index fef60fc..571b78f 100644
--- a/dwds/test/integration/chrome_proxy_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_amd_test.dart
@@ -2,38 +2,35 @@
 // 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.
 
-@TestOn('vm')
 @Tags(['daily'])
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/chrome_proxy_service.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'common/chrome_proxy_service_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
   final canaryFeatures = false;
   final moduleFormat = ModuleFormat.amd;
-  final compilationMode = CompilationMode.buildDaemon;
 
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canaryFeatures,
-    ddcModuleFormat: moduleFormat,
-  );
-
-  group('canary: $canaryFeatures |', () {
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
     tearDownAll(provider.dispose);
-
     runTests(
       provider: provider,
       moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
+      contextFactory: BuildDaemonTestContext.new,
       canaryFeatures: canaryFeatures,
     );
   });
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..98296e0
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/chrome_proxy_service_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/chrome_proxy_service.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final canaryFeatures = true;
+  final moduleFormat = ModuleFormat.ddc;
+
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
+    tearDownAll(provider.dispose);
+    runTests(
+      provider: provider,
+      moduleFormat: moduleFormat,
+      contextFactory: BuildDaemonTestContext.new,
+      canaryFeatures: canaryFeatures,
+    );
+  });
+}
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_amd_test.dart
similarity index 69%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_amd_test.dart
index d0494e7..648d113 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_amd_test.dart
@@ -8,27 +8,23 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate_circular.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
+    ddcModuleFormat: ModuleFormat.amd,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_ddc_library_bundle_test.dart
similarity index 74%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_ddc_library_bundle_test.dart
index d0494e7..c283c5d 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/circular_evaluate/circular_evaluate_ddc_library_bundle_test.dart
@@ -8,27 +8,24 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate_circular.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/debug_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_debugger_module_names_test.dart
similarity index 67%
copy from dwds/test/integration/debug_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_debugger_module_names_test.dart
index c9b17f2..00d1415 100644
--- a/dwds/test/integration/debug_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_debugger_module_names_test.dart
@@ -6,16 +6,20 @@
 @Timeout(Duration(minutes: 2))
 library;
 
+import 'package:dwds_test_common/integration/dart_uri_file_uri_debugger_module_names.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'debug_service_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(verbose: debug);
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
+  });
 }
diff --git a/dwds/test/integration/debug_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_test.dart
similarity index 69%
copy from dwds/test/integration/debug_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_test.dart
index c9b17f2..a5d4595 100644
--- a/dwds/test/integration/debug_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/dart_uri_file_uri_test.dart
@@ -6,16 +6,20 @@
 @Timeout(Duration(minutes: 2))
 library;
 
+import 'package:dwds_test_common/integration/dart_uri_file_uri.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'debug_service_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(verbose: debug);
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
+  });
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/dds_port_amd_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/dds_port_amd_test.dart
index 4f1edd3..a8c6cda 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/dds_port_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/dds_port.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/dds_port_ddc_library_bundle_test.dart
similarity index 76%
rename from dwds/test/integration/run_request_ddc_library_bundle_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/dds_port_ddc_library_bundle_test.dart
index 4e51bb3..3049f74 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/dds_port_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/dds_port.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/debug_service_amd_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/debug_service_amd_test.dart
index 4f1edd3..4ab7213 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/debug_service_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/debug_service.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/debug_service_ddc_library_bundle_test.dart
similarity index 76%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/debug_service_ddc_library_bundle_test.dart
index 4e51bb3..25121d4 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/debug_service_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/debug_service.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/devtools_amd_test.dart
similarity index 72%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/devtools_amd_test.dart
index 4f1edd3..5f35e92 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/devtools_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
-@Timeout(Duration(minutes: 2))
+@TestOn('vm')
+@Timeout(Duration(minutes: 5))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/devtools.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/devtools_ddc_library_bundle_test.dart
similarity index 73%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/devtools_ddc_library_bundle_test.dart
index d0494e7..7fce4ad 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/devtools_ddc_library_bundle_test.dart
@@ -2,33 +2,27 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@Tags(['daily'])
 @TestOn('vm')
 @Timeout(Duration(minutes: 5))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/devtools.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
-  });
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_amd_test.dart
similarity index 69%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_amd_test.dart
index d0494e7..b3cb49a 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_amd_test.dart
@@ -8,27 +8,23 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
+    ddcModuleFormat: ModuleFormat.amd,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_ddc_library_bundle_test.dart
similarity index 75%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_ddc_library_bundle_test.dart
index d0494e7..04a0115 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/evaluate/evaluate_ddc_library_bundle_test.dart
@@ -8,27 +8,24 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/events_amd_test.dart
similarity index 70%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/events_amd_test.dart
index 4f1edd3..995442a 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/events_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/events.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,10 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  group('Build Daemon', () {
+    testWithDwds(
+      provider: provider,
+      contextFactory: BuildDaemonTestContext.new,
+    );
+  });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/events_ddc_library_bundle_test.dart
similarity index 73%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/events_ddc_library_bundle_test.dart
index d0494e7..a7537ee 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/events_ddc_library_bundle_test.dart
@@ -2,33 +2,32 @@
 // 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.
 
-@Tags(['daily'])
 @TestOn('vm')
-@Timeout(Duration(minutes: 5))
+@Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/events.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
+  group('Build Daemon', () {
+    testWithDwds(
       provider: provider,
-      compilationMode: CompilationMode.frontendServer,
+      contextFactory: BuildDaemonTestContext.new,
     );
   });
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_amd_test.dart
similarity index 74%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_amd_test.dart
index 4f1edd3..9a0bc28 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/asset_handler.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_ddc_library_bundle_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_ddc_library_bundle_test.dart
index 4e51bb3..82794a4 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/handlers/asset_handler_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/asset_handler.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/chrome_proxy_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_amd_test.dart
similarity index 63%
copy from dwds/test/integration/chrome_proxy_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_amd_test.dart
index fef60fc..52cb6a6 100644
--- a/dwds/test/integration/chrome_proxy_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_amd_test.dart
@@ -2,38 +2,34 @@
 // 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.
 
-@TestOn('vm')
 @Tags(['daily'])
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/hot_restart.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'common/chrome_proxy_service_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
   final canaryFeatures = false;
   final moduleFormat = ModuleFormat.amd;
-  final compilationMode = CompilationMode.buildDaemon;
 
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canaryFeatures,
-    ddcModuleFormat: moduleFormat,
-  );
-
-  group('canary: $canaryFeatures |', () {
-    tearDownAll(provider.dispose);
-
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
     runTests(
       provider: provider,
       moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
+      contextFactory: BuildDaemonTestContext.new,
       canaryFeatures: canaryFeatures,
     );
   });
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_breakpoints_ddc_library_bundle_test.dart
similarity index 74%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_breakpoints_ddc_library_bundle_test.dart
index d0494e7..b86c5d6 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_breakpoints_ddc_library_bundle_test.dart
@@ -8,27 +8,24 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/hot_restart_breakpoints.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon', () {
+    runTests(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/chrome_proxy_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_amd_test.dart
similarity index 63%
copy from dwds/test/integration/chrome_proxy_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_amd_test.dart
index fef60fc..bd3cad2 100644
--- a/dwds/test/integration/chrome_proxy_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_amd_test.dart
@@ -2,38 +2,34 @@
 // 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.
 
-@TestOn('vm')
 @Tags(['daily'])
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/hot_restart_correctness.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'common/chrome_proxy_service_common.dart';
-import 'fixtures/context.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
   final canaryFeatures = false;
   final moduleFormat = ModuleFormat.amd;
-  final compilationMode = CompilationMode.buildDaemon;
 
-  final provider = TestSdkConfigurationProvider(
-    verbose: debug,
-    canaryFeatures: canaryFeatures,
-    ddcModuleFormat: moduleFormat,
-  );
-
-  group('canary: $canaryFeatures |', () {
-    tearDownAll(provider.dispose);
-
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
     runTests(
       provider: provider,
       moduleFormat: moduleFormat,
-      compilationMode: compilationMode,
+      contextFactory: BuildDaemonTestContext.new,
       canaryFeatures: canaryFeatures,
     );
   });
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..f125aff
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_correctness_ddc_library_bundle_test.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/hot_restart_correctness.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final canaryFeatures = true;
+  final moduleFormat = ModuleFormat.ddc;
+
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
+    runTests(
+      provider: provider,
+      moduleFormat: moduleFormat,
+      contextFactory: BuildDaemonTestContext.new,
+      canaryFeatures: canaryFeatures,
+    );
+  });
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..1aa9dfa
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/hot_restart_ddc_library_bundle_test.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/hot_restart.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+  final canaryFeatures = true;
+  final moduleFormat = ModuleFormat.ddc;
+
+  group('canary: $canaryFeatures | Build Daemon |', () {
+    final provider = TestSdkConfigurationProvider(
+      verbose: debug,
+      canaryFeatures: canaryFeatures,
+      ddcModuleFormat: moduleFormat,
+    );
+    runTests(
+      provider: provider,
+      moduleFormat: moduleFormat,
+      contextFactory: BuildDaemonTestContext.new,
+      canaryFeatures: canaryFeatures,
+    );
+  });
+}
diff --git a/dwds/test/integration/debug_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/inspector_test.dart
similarity index 74%
rename from dwds/test/integration/debug_service_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/inspector_test.dart
index c9b17f2..5b24cc3 100644
--- a/dwds/test/integration/debug_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/inspector_test.dart
@@ -6,16 +6,18 @@
 @Timeout(Duration(minutes: 2))
 library;
 
+import 'package:dwds_test_common/integration/inspector.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'debug_service_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(verbose: debug);
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  runTests(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_amd_test.dart
new file mode 100644
index 0000000..d82aa1e
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/class_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..72e4242
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/class_inspection_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/class_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_amd_test.dart
new file mode 100644
index 0000000..0602664
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/dot_shorthands.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..9b3b954
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/dot_shorthands_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/dot_shorthands.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_amd_test.dart
new file mode 100644
index 0000000..139dd18
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_amd_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/instance.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTypeSystemVerificationTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..df21ef3
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/instance.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_inspection_amd_test.dart
new file mode 100644
index 0000000..3ecf865
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/instance_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/instance_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_amd_test.dart
new file mode 100644
index 0000000..daddea9
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/patterns_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..cdc4ab3
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/patterns_inspection_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/patterns_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_amd_test.dart
new file mode 100644
index 0000000..53705d6
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/record_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..db088dd
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_inspection_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/record_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_amd_test.dart
new file mode 100644
index 0000000..bc9e570
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/record_type_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..5d04764
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/record_type_inspection_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/record_type_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_amd_test.dart
new file mode 100644
index 0000000..a141548
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_amd_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/type_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [false, true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.amd,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_ddc_library_bundle_test.dart
new file mode 100644
index 0000000..377ef4c
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/instances/type_inspection_ddc_library_bundle_test.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2026, 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.
+
+@Tags(['daily'])
+@TestOn('vm')
+@Timeout(Duration(minutes: 2))
+library;
+
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/type_inspection.dart';
+import 'package:dwds_test_common/test_sdk_configuration.dart';
+import 'package:test/test.dart';
+
+import '../../fixtures/build_daemon_context.dart';
+
+void main() {
+  // Enable verbose logging for debugging.
+  const debug = false;
+
+  for (final canaryFeatures in [true]) {
+    group('canary: $canaryFeatures | Build Daemon |', () {
+      final provider = TestSdkConfigurationProvider(
+        verbose: debug,
+        canaryFeatures: canaryFeatures,
+        ddcModuleFormat: ModuleFormat.ddc,
+      );
+      tearDownAll(provider.dispose);
+
+      runTests(
+        provider: provider,
+        contextFactory: BuildDaemonTestContext.new,
+        canaryFeatures: canaryFeatures,
+      );
+    });
+  }
+}
diff --git a/dwds/test/integration/debug_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/listviews_test.dart
similarity index 70%
copy from dwds/test/integration/debug_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/listviews_test.dart
index c9b17f2..90e7b14 100644
--- a/dwds/test/integration/debug_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/listviews_test.dart
@@ -6,16 +6,20 @@
 @Timeout(Duration(minutes: 2))
 library;
 
+import 'package:dwds_test_common/integration/listviews.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'debug_service_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(verbose: debug);
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
+  });
 }
diff --git a/dwds/test/integration/debug_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/load_strategy_test.dart
similarity index 66%
copy from dwds/test/integration/debug_service_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/load_strategy_test.dart
index c9b17f2..3123c67 100644
--- a/dwds/test/integration/debug_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/load_strategy_test.dart
@@ -3,19 +3,23 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('vm')
-@Timeout(Duration(minutes: 2))
+@Timeout(Duration(minutes: 1))
 library;
 
+import 'package:dwds_test_common/integration/load_strategy.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'debug_service_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(verbose: debug);
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
+  });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_amd_test.dart
similarity index 69%
copy from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_amd_test.dart
index d0494e7..0d6341d 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_amd_test.dart
@@ -8,27 +8,23 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate_parts.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
-    ddcModuleFormat: ModuleFormat.ddc,
+    ddcModuleFormat: ModuleFormat.amd,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_ddc_library_bundle_test.dart
similarity index 75%
rename from dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_ddc_library_bundle_test.dart
index d0494e7..eb08b15 100644
--- a/dwds/test/integration/hot_reload_breakpoints_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/parts_evaluate/parts_evaluate_ddc_library_bundle_test.dart
@@ -8,27 +8,24 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/evaluate_parts.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'fixtures/context.dart';
-import 'hot_reload_breakpoints_common.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
   const debug = false;
+
   final provider = TestSdkConfigurationProvider(
     verbose: debug,
-    canaryFeatures: true,
     ddcModuleFormat: ModuleFormat.ddc,
+    canaryFeatures: true,
   );
-
   tearDownAll(provider.dispose);
 
-  group('Frontend Server', () {
-    runTests(
-      provider: provider,
-      compilationMode: CompilationMode.frontendServer,
-    );
+  group('Build Daemon |', () {
+    testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
   });
 }
diff --git a/dwds/test/integration/readers/proxy_server_asset_reader_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_amd_test.dart
similarity index 97%
rename from dwds/test/integration/readers/proxy_server_asset_reader_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_amd_test.dart
index e7d2d05..1e80b2f 100644
--- a/dwds/test/integration/readers/proxy_server_asset_reader_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_amd_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
diff --git a/dwds/test/integration/readers/proxy_server_asset_reader_common.dart b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_common.dart
similarity index 87%
rename from dwds/test/integration/readers/proxy_server_asset_reader_common.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_common.dart
index b1b04f7..a4c970f 100644
--- a/dwds/test/integration/readers/proxy_server_asset_reader_common.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_common.dart
@@ -3,16 +3,16 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:dwds/src/readers/proxy_server_asset_reader.dart';
+import 'package:dwds_test_common/fixtures/project.dart';
+import 'package:dwds_test_common/fixtures/utilities.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import '../fixtures/context.dart';
-import '../fixtures/project.dart';
-import '../fixtures/utilities.dart';
+import '../../fixtures/build_daemon_context.dart';
 
 void testAll({required TestSdkConfigurationProvider provider}) {
   group('ProxyServerAssetReader', () {
-    final context = TestContext(TestProject.test, provider);
+    final context = BuildDaemonTestContext(TestProject.test, provider);
 
     late ProxyServerAssetReader assetReader;
     setUpAll(() async {
diff --git a/dwds/test/integration/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart
similarity index 97%
rename from dwds/test/integration/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart
index ee42cfd..1dec0c9 100644
--- a/dwds/test/integration/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/readers/proxy_server_asset_reader_ddc_library_bundle_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/refresh_amd_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/refresh_amd_test.dart
index 4f1edd3..c56f7c5 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/refresh_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/refresh.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/refresh_ddc_library_bundle_test.dart
similarity index 76%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/refresh_ddc_library_bundle_test.dart
index 4e51bb3..df699e9 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/refresh_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/refresh.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/run_request_amd_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/run_request_amd_test.dart
index 4f1edd3..5db8b44 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/run_request_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/run_request.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/run_request_ddc_library_bundle_test.dart
similarity index 76%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/run_request_ddc_library_bundle_test.dart
index 4e51bb3..7616636 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/run_request_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/run_request.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/screenshot_amd_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_amd_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/screenshot_amd_test.dart
index 4f1edd3..d5aa7b9 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/screenshot_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/screenshot.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/screenshot_ddc_library_bundle_test.dart
similarity index 76%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/screenshot_ddc_library_bundle_test.dart
index 4e51bb3..0d7e69a 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/screenshot_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/screenshot.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_amd_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_amd_test.dart
similarity index 75%
rename from dwds/test/integration/run_request_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_amd_test.dart
index 4f1edd3..cd61b46 100644
--- a/dwds/test/integration/run_request_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_amd_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/variable_scope.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -21,5 +23,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/run_request_ddc_library_bundle_test.dart b/dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_ddc_library_bundle_test.dart
similarity index 75%
copy from dwds/test/integration/run_request_ddc_library_bundle_test.dart
copy to dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_ddc_library_bundle_test.dart
index 4e51bb3..0dec68e 100644
--- a/dwds/test/integration/run_request_ddc_library_bundle_test.dart
+++ b/dwds_webdev_integration_test/test/integration/build_daemon/variable_scope_ddc_library_bundle_test.dart
@@ -2,14 +2,16 @@
 // 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.
 
+@TestOn('vm')
 @Timeout(Duration(minutes: 2))
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/variable_scope.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
 import 'package:test/test.dart';
 
-import 'run_request_common.dart';
+import '../fixtures/build_daemon_context.dart';
 
 void main() {
   // Enable verbose logging for debugging.
@@ -22,5 +24,5 @@
   );
   tearDownAll(provider.dispose);
 
-  testAll(provider: provider);
+  testAll(provider: provider, contextFactory: BuildDaemonTestContext.new);
 }
diff --git a/dwds/test/integration/expression_compiler_service_amd_test.dart b/dwds_webdev_integration_test/test/integration/expression_compiler_service_amd_test.dart
similarity index 87%
rename from dwds/test/integration/expression_compiler_service_amd_test.dart
rename to dwds_webdev_integration_test/test/integration/expression_compiler_service_amd_test.dart
index 19c8bdc..e4f50a7 100644
--- a/dwds/test/integration/expression_compiler_service_amd_test.dart
+++ b/dwds_webdev_integration_test/test/integration/expression_compiler_service_amd_test.dart
@@ -8,10 +8,9 @@
 library;
 
 import 'package:dwds/expression_compiler.dart';
+import 'package:dwds_test_common/integration/expression_compiler_service.dart';
 import 'package:test/test.dart';
 
-import 'expression_compiler_service_common.dart';
-
 void main() async {
   testAll(
     compilerOptions: CompilerOptions(
diff --git a/dwds_webdev_integration_test/test/integration/fixtures/build_daemon_context.dart b/dwds_webdev_integration_test/test/integration/fixtures/build_daemon_context.dart
new file mode 100644
index 0000000..feabb5f
--- /dev/null
+++ b/dwds_webdev_integration_test/test/integration/fixtures/build_daemon_context.dart
@@ -0,0 +1,284 @@
+// Copyright (c) 2026, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:io';
+
+import 'package:build_daemon/client.dart';
+import 'package:build_daemon/constants.dart';
+import 'package:build_daemon/data/build_status.dart' as daemon;
+import 'package:build_daemon/data/build_target.dart';
+import 'package:dwds/asset_reader.dart';
+import 'package:dwds/data/build_result.dart';
+import 'package:dwds/expression_compiler.dart';
+import 'package:dwds/src/loaders/build_runner_strategy_provider.dart';
+import 'package:dwds/src/loaders/strategy.dart';
+import 'package:dwds/src/readers/proxy_server_asset_reader.dart';
+import 'package:dwds/src/services/expression_compiler_service.dart';
+import 'package:dwds_test_common/fixtures/context.dart';
+import 'package:dwds_test_common/fixtures/utilities.dart';
+import 'package:logging/logging.dart' as logging;
+import 'package:shelf/shelf.dart';
+import 'package:shelf_proxy/shelf_proxy.dart';
+
+/// A [TestContext] that builds and serves the test app with `build_runner`,
+/// through the build daemon.
+class BuildDaemonTestContext extends TestContext {
+  BuildDaemonClient? _daemonClient;
+  ExpressionCompilerService? _expressionCompilerService;
+  AssetReader? _assetReader;
+  Handler? _assetHandler;
+  LoadStrategy? _loadStrategy;
+  Stream<BuildResult>? _buildResults;
+
+  final _logger = logging.Logger('BuildDaemonContext');
+
+  BuildDaemonTestContext(super.project, super.sdkConfigurationProvider)
+    : super.protected();
+
+  @override
+  String get appUrlPath => project.filePathToServe;
+
+  @override
+  bool get usesBuildDaemon => true;
+
+  BuildDaemonClient get daemonClient => _daemonClient!;
+
+  @override
+  AssetReader get assetReader => _assetReader!;
+
+  @override
+  Handler get assetHandler => _assetHandler!;
+
+  @override
+  LoadStrategy get loadStrategy => _loadStrategy!;
+
+  @override
+  ExpressionCompiler? get expressionCompiler => _expressionCompilerService;
+
+  @override
+  Stream<BuildResult> get buildResults => _buildResults!;
+
+  @override
+  Future<void> modeSetUp(
+    TestSettings testSettings,
+    TestDebugSettings debugSettings,
+    TestAppMetadata appMetadata,
+    Uri reloadedSourcesUri,
+  ) async {
+    final buildSettings = TestBuildSettings(
+      appEntrypoint: project.dartEntryFilePackageUri,
+      canaryFeatures: testSettings.canaryFeatures,
+      isFlutterApp: testSettings.isFlutterApp,
+      experiments: testSettings.experiments,
+    );
+
+    _daemonClient = await _connectDaemonClient(testSettings, buildSettings);
+    daemonClient
+      ..registerBuildTarget(
+        DefaultBuildTarget((b) => b..target = project.directoryToServe),
+      )
+      ..startBuild();
+    _buildResults = _toDwdsBuildResults(daemonClient.buildResults);
+
+    await waitForSuccessfulBuild();
+
+    final assetServerPort = _daemonAssetServerPort();
+    _assetHandler = _createAssetHandler(
+      assetServerPort,
+      serveReloadedSources: _usesDdcLibraryBundle(testSettings),
+    );
+    _assetReader = ProxyServerAssetReader(
+      assetServerPort,
+      root: project.directoryToServe,
+    );
+
+    if (testSettings.enableExpressionEvaluation) {
+      _expressionCompilerService = ExpressionCompilerService(
+        'localhost',
+        port,
+        verbose: testSettings.verboseCompiler,
+        sdkConfigurationProvider: sdkConfigurationProvider,
+      );
+    }
+
+    _loadStrategy = _createLoadStrategy(
+      testSettings,
+      buildSettings,
+      reloadedSourcesUri,
+    );
+  }
+
+  @override
+  Future<void> modeTearDown() async {
+    await _daemonClient?.close();
+    await _expressionCompilerService?.stop();
+    _daemonClient = null;
+    _expressionCompilerService = null;
+    _assetReader = null;
+    _assetHandler = null;
+    _loadStrategy = null;
+    _buildResults = null;
+  }
+
+  @override
+  Future<void> waitForSuccessfulBuild({
+    Duration? timeout,
+    bool propagateToBrowser = false,
+    bool allowFailure = false,
+  }) async {
+    final status = await _targetBuildStatuses(daemonClient.buildResults)
+        .firstWhere(
+          (status) =>
+              status == daemon.BuildStatus.succeeded ||
+              (allowFailure && status == daemon.BuildStatus.failed),
+        )
+        .timeout(timeout ?? const Duration(seconds: 60));
+    lastBuildFailed = status == daemon.BuildStatus.failed;
+
+    if (propagateToBrowser) {
+      // Allow change to propagate to the browser.
+      // Windows, or at least Travis on Windows, seems to need more time.
+      // TODO: Wait for an explicit finish signal instead of adding this delay.
+      final delay = Platform.isWindows
+          ? const Duration(seconds: 5)
+          : const Duration(seconds: 2);
+      await Future<void>.delayed(delay);
+    }
+  }
+
+  /// Starts a build daemon for the test project and connects to it.
+  Future<BuildDaemonClient> _connectDaemonClient(
+    TestSettings testSettings,
+    TestBuildSettings buildSettings,
+  ) => BuildDaemonClient.connect(
+    project.absolutePackageDirectory,
+    [
+      sdkConfigurationProvider.sdkLayout.dartPath,
+      'run',
+      'build_runner',
+      'daemon',
+      ..._buildRunnerOptions(testSettings, buildSettings),
+    ],
+    logHandler: (log) {
+      final record = log.toLogRecord();
+      final name = record.loggerName == '' ? '' : '${record.loggerName}: ';
+      _logger.log(
+        record.level,
+        '$name${record.message}',
+        record.error,
+        record.stackTrace,
+      );
+    },
+  );
+
+  /// The `build_runner daemon` options matching [testSettings].
+  List<String> _buildRunnerOptions(
+    TestSettings testSettings,
+    TestBuildSettings buildSettings,
+  ) => [
+    if (testSettings.enableExpressionEvaluation) ...[
+      '--define',
+      'build_web_compilers|ddc=generate-full-dill=true',
+    ],
+    for (final experiment in buildSettings.experiments)
+      '--enable-experiment=$experiment',
+    if (buildSettings.canaryFeatures) ...[
+      '--define',
+      'build_web_compilers|ddc=canary=true',
+      '--define',
+      'build_web_compilers|sdk_js=canary=true',
+    ],
+    if (testSettings.moduleFormat == ModuleFormat.ddc) ...[
+      '--define',
+      'build_web_compilers|ddc=ddc-library-bundle=true',
+      '--define',
+      'build_web_compilers|sdk_js=ddc-library-bundle=true',
+      '--define',
+      'build_web_compilers|entrypoint=ddc-library-bundle=true',
+      '--define',
+      'build_web_compilers|entrypoint_marker=ddc-library-bundle=true',
+    ],
+    '--verbose',
+  ];
+
+  /// Returns the port of the build daemon's asset server.
+  int _daemonAssetServerPort() {
+    final portFile = File(
+      '${daemonWorkspace(project.absolutePackageDirectory)}'
+      '/.asset_server_port',
+    );
+    if (!portFile.existsSync()) {
+      throw StateError('Unable to read daemon asset port file.');
+    }
+    return int.parse(portFile.readAsStringSync());
+  }
+
+  /// Creates a handler that proxies asset requests to the build daemon's
+  /// asset server.
+  ///
+  /// If [serveReloadedSources] is true, requests for the reloaded sources
+  /// manifest are served by this context instead.
+  Handler _createAssetHandler(
+    int assetServerPort, {
+    required bool serveReloadedSources,
+  }) {
+    final proxy = proxyHandler(
+      'http://localhost:$assetServerPort/${project.directoryToServe}/',
+      client: client,
+    );
+    return serveReloadedSources ? handleReloadedSources(proxy) : proxy;
+  }
+
+  LoadStrategy _createLoadStrategy(
+    TestSettings testSettings,
+    TestBuildSettings buildSettings,
+    Uri reloadedSourcesUri,
+  ) => switch ((testSettings.moduleFormat, buildSettings.canaryFeatures)) {
+    (ModuleFormat.ddc, true) => BuildRunnerDdcLibraryBundleStrategyProvider(
+      testSettings.reloadConfiguration,
+      assetReader,
+      buildSettings,
+      reloadedSourcesUri: reloadedSourcesUri,
+    ).strategy,
+    (ModuleFormat.ddc, false) => throw UnsupportedError(
+      'Unsupported DDC configuration: build daemon + canary (false) '
+      '+ DDC module format ${testSettings.moduleFormat.name}.',
+    ),
+    _ => BuildRunnerRequireStrategyProvider(
+      testSettings.reloadConfiguration,
+      assetReader,
+      buildSettings,
+    ).strategy,
+  };
+
+  /// Converts build daemon results into the [BuildResult]s DWDS expects,
+  /// keeping only results for the target being served.
+  Stream<BuildResult> _toDwdsBuildResults(
+    Stream<daemon.BuildResults> results,
+  ) => _targetBuildStatuses(results).map(
+    (status) => switch (status) {
+      daemon.BuildStatus.started => BuildResult(status: BuildStatus.started),
+      daemon.BuildStatus.failed => BuildResult(status: BuildStatus.failed),
+      daemon.BuildStatus.succeeded => BuildResult(
+        status: BuildStatus.succeeded,
+      ),
+      _ => throw StateError('Unexpected daemon build status: $status'),
+    },
+  );
+
+  /// The build statuses for the target being served.
+  Stream<daemon.BuildStatus> _targetBuildStatuses(
+    Stream<daemon.BuildResults> results,
+  ) => results.expand(
+    (results) => [
+      for (final result in results.results)
+        if (result.target == project.directoryToServe) result.status,
+    ],
+  );
+
+  static bool _usesDdcLibraryBundle(TestSettings testSettings) =>
+      testSettings.moduleFormat == ModuleFormat.ddc &&
+      testSettings.canaryFeatures;
+}
diff --git a/tool/ci.sh b/tool/ci.sh
index 7e75958..c123be8 100755
--- a/tool/ci.sh
+++ b/tool/ci.sh
@@ -80,34 +80,26 @@
         dart format --output=none --set-exit-if-changed . || EXIT_CODE=$?
         ;;
       test_0)
-        echo 'dart test test/build/ensure_version_test.dart'
-        dart test test/build/ensure_version_test.dart || EXIT_CODE=$?
-        ;;
-      test_1)
         echo 'dart test --tags=extension'
         dart test --tags=extension || EXIT_CODE=$?
         ;;
-      test_2)
+      test_1)
         echo 'dart test --total-shards 3 --shard-index 0 --exclude-tags=extension'
         dart test --total-shards 3 --shard-index 0 --exclude-tags=extension || EXIT_CODE=$?
         ;;
-      test_3)
+      test_2)
         echo 'dart test --total-shards 3 --shard-index 1 --exclude-tags=extension'
         dart test --total-shards 3 --shard-index 1 --exclude-tags=extension || EXIT_CODE=$?
         ;;
-      test_4)
+      test_3)
         echo 'dart test --total-shards 3 --shard-index 2 --exclude-tags=extension'
         dart test --total-shards 3 --shard-index 2 --exclude-tags=extension || EXIT_CODE=$?
         ;;
-      test_5)
+      test_4)
         echo 'dart test -j 1'
         dart test -j 1 || EXIT_CODE=$?
         ;;
-      test_6)
-        echo 'dart test --exclude-tags=release'
-        dart test --exclude-tags=release || EXIT_CODE=$?
-        ;;
-      test_7)
+      test_5)
         echo 'dart test test/build/ensure_build_test.dart'
         dart test test/build/ensure_build_test.dart || EXIT_CODE=$?
         ;;
diff --git a/webdev/pubspec.yaml b/webdev/pubspec.yaml
index 2b82ca2..7a29a5e 100644
--- a/webdev/pubspec.yaml
+++ b/webdev/pubspec.yaml
@@ -47,8 +47,8 @@
   build_verify: ^3.0.0
   build_version: ^2.1.1
   test: ^1.21.1
-  dwds_test_common:
-    path: ../dwds_test_common
+  # Overridden below to the copy in the Dart SDK.
+  dwds_test_common: any
   test_descriptor: ^2.0.0
   test_process: ^2.0.2
   webdriver: ^3.0.0
diff --git a/webdev/test/e2e_common.dart b/webdev/test/e2e_common.dart
index 51695e1..9ecc087 100644
--- a/webdev/test/e2e_common.dart
+++ b/webdev/test/e2e_common.dart
@@ -10,17 +10,14 @@
 
 import 'package:io/io.dart';
 import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
 import 'package:pub_semver/pub_semver.dart';
 import 'package:test/test.dart';
 import 'package:test_descriptor/test_descriptor.dart' as d;
-import 'package:test_process/test_process.dart';
 import 'package:vm_service/vm_service.dart';
 import 'package:vm_service/vm_service_io.dart';
 import 'package:webdev/src/logging.dart';
 import 'package:webdev/src/pubspec.dart';
 import 'package:webdev/src/serve/utils.dart';
-import 'package:webdev/src/util.dart';
 import 'package:yaml/yaml.dart';
 
 import 'daemon/utils.dart';
@@ -44,18 +41,7 @@
   setUpAll(() async {
     configureLogWriter(debug);
     await testRunner.setUpAll();
-    exampleDirectory = p.absolute(
-      p.join(p.current, '..', 'dwds_test_common', 'fixtures', '_webdev_smoke'),
-    );
-
-    final process = await TestProcess.start(
-      dartPath,
-      ['pub', 'upgrade'],
-      workingDirectory: exampleDirectory,
-      environment: getPubEnvironment(),
-    );
-
-    await process.shouldExit(0);
+    exampleDirectory = await testRunner.prepareWorkspace();
 
     await d
         .file('.dart_tool/package_config.json', isNotEmpty)
@@ -71,9 +57,13 @@
     ) as YamlMap;
     final webdevYaml =
         loadYaml(await File('pubspec.yaml').readAsString()) as YamlMap;
+    // The fixture lives in the Dart SDK's dwds_test_common, so its SDK
+    // constraint isn't kept in lockstep with webdev's. Require that it allows
+    // every SDK that webdev supports.
     expect(
-      smokeYaml['environment']['sdk'],
-      equals(webdevYaml['environment']['sdk']),
+      VersionConstraint.parse(smokeYaml['environment']['sdk'])
+          .allowsAll(VersionConstraint.parse(webdevYaml['environment']['sdk'])),
+      true,
     );
     expect(
       buildRunnerConstraint.allowsAny(
diff --git a/webdev/test/test_utils.dart b/webdev/test/test_utils.dart
index c37cdba..d03d11a 100644
--- a/webdev/test/test_utils.dart
+++ b/webdev/test/test_utils.dart
@@ -4,6 +4,7 @@
 
 import 'dart:async';
 import 'dart:io';
+import 'dart:isolate';
 
 import 'package:dwds/expression_compiler.dart';
 import 'package:dwds_test_common/test_sdk_configuration.dart';
@@ -122,9 +123,7 @@
   }
 
   Future<String> prepareWorkspace() async {
-    final originalDirectory = p.absolute(
-      p.join(p.current, '..', 'dwds_test_common', 'fixtures', '_webdev_smoke'),
-    );
+    final originalDirectory = _webdevSmokeFixturePath();
     final tempDir = Directory.systemTemp.createTempSync('webdev_smoke_');
     final exampleDirectory = tempDir.path;
     _copyCleanDirectory(Directory(originalDirectory), tempDir);
@@ -167,3 +166,16 @@
 
   return environment;
 }
+
+/// The path to the `_webdev_smoke` fixture in `package:dwds_test_common`.
+String _webdevSmokeFixturePath() {
+  final utilitiesUri = Isolate.resolvePackageUriSync(
+    Uri.parse('package:dwds_test_common/utilities.dart'),
+  );
+  if (utilitiesUri == null) {
+    throw StateError('Unable to resolve package:dwds_test_common.');
+  }
+  // Strip `lib/utilities.dart`.
+  final packageRoot = p.dirname(p.dirname(utilitiesUri.toFilePath()));
+  return p.join(packageRoot, 'fixtures', '_webdev_smoke');
+}
diff --git a/webdev/test/tls_common.dart b/webdev/test/tls_common.dart
index 6984ae6..20be686 100644
--- a/webdev/test/tls_common.dart
+++ b/webdev/test/tls_common.dart
@@ -6,10 +6,8 @@
 
 import 'package:collection/collection.dart';
 import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
 import 'package:test/test.dart';
 import 'package:test_descriptor/test_descriptor.dart' as d;
-import 'package:test_process/test_process.dart';
 
 import 'package:webdev/src/logging.dart';
 import 'package:webdev/src/serve/utils.dart';
@@ -26,24 +24,7 @@
     setUpAll(() async {
       configureLogWriter(debug);
       await testRunner.setUpAll();
-      exampleDirectory = p.absolute(
-        p.join(
-          p.current,
-          '..',
-          'dwds_test_common',
-          'fixtures',
-          '_webdev_smoke',
-        ),
-      );
-
-      final process = await TestProcess.start(
-        'dart',
-        ['pub', 'upgrade'],
-        workingDirectory: exampleDirectory,
-        environment: getPubEnvironment(),
-      );
-
-      await process.shouldExit(0);
+      exampleDirectory = await testRunner.prepareWorkspace();
 
       await d
           .file('.dart_tool/package_config.json', isNotEmpty)