Version 2.15.0-4.0.dev
Merge commit '6393841036f9f0f14e2cc1c62309b4a9657dd029' into 'dev'
diff --git a/pkg/dart2js_info/.github/move.yml b/pkg/dart2js_info/.github/move.yml
new file mode 100644
index 0000000..67155b2
--- /dev/null
+++ b/pkg/dart2js_info/.github/move.yml
@@ -0,0 +1,16 @@
+# Configuration for move-issues - https://github.com/dessant/move-issues
+
+# Delete the command comment when it contains no other content.
+deleteCommand: true
+
+# Close the source issue after moving.
+closeSourceIssue: true
+
+# Lock the source issue after moving.
+lockSourceIssue: false
+
+# Mention issue and comment authors.
+mentionAuthors: true
+
+# Preserve mentions in the issue content.
+keepContentMentions: true
diff --git a/pkg/dart2js_info/.github/workflows/test-package.yml b/pkg/dart2js_info/.github/workflows/test-package.yml
new file mode 100644
index 0000000..065727f
--- /dev/null
+++ b/pkg/dart2js_info/.github/workflows/test-package.yml
@@ -0,0 +1,61 @@
+name: Dart CI
+
+on:
+ # Run on PRs and pushes to the default branch.
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+ schedule:
+ - cron: "0 0 * * 0"
+
+env:
+ PUB_ENVIRONMENT: bot.github
+
+jobs:
+ # Check code formatting and static analysis on a single OS (linux)
+ # against Dart dev.
+ analyze:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ sdk: [dev]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: dart-lang/setup-dart@v1.0
+ with:
+ sdk: ${{ matrix.sdk }}
+ - id: install
+ name: Install dependencies
+ run: dart pub get
+ - name: Check formatting
+ run: dart format --output=none --set-exit-if-changed .
+ if: always() && steps.install.outcome == 'success'
+ - name: Analyze code
+ run: dart analyze
+ if: always() && steps.install.outcome == 'success'
+
+ # Run tests on a matrix consisting of two dimensions:
+ # 1. OS: ubuntu-latest, (macos-latest, windows-latest)
+ # 2. release channel: dev
+ test:
+ needs: analyze
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ # Add macos-latest and/or windows-latest if relevant for this package.
+ os: [ubuntu-latest]
+ sdk: [2.12.0, dev]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: dart-lang/setup-dart@v1.0
+ with:
+ sdk: ${{ matrix.sdk }}
+ - id: install
+ name: Install dependencies
+ run: dart pub get
+ - name: Run VM tests
+ run: dart test --platform vm
+ if: always() && steps.install.outcome == 'success'
diff --git a/pkg/dart2js_info/.gitignore b/pkg/dart2js_info/.gitignore
new file mode 100644
index 0000000..2bc83b8
--- /dev/null
+++ b/pkg/dart2js_info/.gitignore
@@ -0,0 +1,14 @@
+.buildlog
+.DS_Store
+*.swp
+*.swo
+.idea
+*.iml
+.pub/
+.settings/
+build/
+packages
+.packages
+pubspec.lock
+bin/inference/client.dart.js*
+.dart_tool/
diff --git a/pkg/dart2js_info/.status b/pkg/dart2js_info/.status
new file mode 100644
index 0000000..364ca4b
--- /dev/null
+++ b/pkg/dart2js_info/.status
@@ -0,0 +1,4 @@
+# Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
diff --git a/pkg/dart2js_info/AUTHORS b/pkg/dart2js_info/AUTHORS
new file mode 100644
index 0000000..e8063a8
--- /dev/null
+++ b/pkg/dart2js_info/AUTHORS
@@ -0,0 +1,6 @@
+# Below is a list of people and organizations that have contributed
+# to the project. Names should be added to the list like so:
+#
+# Name/Organization <email address>
+
+Google Inc.
diff --git a/pkg/dart2js_info/CHANGELOG.md b/pkg/dart2js_info/CHANGELOG.md
new file mode 100644
index 0000000..ea4fe67b
--- /dev/null
+++ b/pkg/dart2js_info/CHANGELOG.md
@@ -0,0 +1,180 @@
+## 0.6.5
+
+* Drop unused dependencies.
+
+## 0.6.4
+
+* Make compatible with the null-safe version of `args`.
+
+## 0.6.3
+
+* Broaden version ranges for `fixnum` and `protobuf` dependencies to make
+ `dart2js_info` compatible with null-safe `protobuf` version.
+
+## 0.6.2
+
+* Update `protobuf` dependency.
+* Set min SDK to `2.3.0`, as generated code contains this version.
+
+## 0.6.1
+
+* Move binary subcommands under src folder. Otherwise, `pub global activate`
+ fails.
+
+## 0.6.0
+
+This release contains several **breaking changes**:
+
+* The fields `Info.id` and `Info.serializedId` have been removed. These
+ properties were only used for serialization and deserialization. Those values
+ are now computed during the serialization process instead.
+
+* Added `CodeSpan` - a representation of code regions referring to output files.
+ This will be used to transition to a lighterweight dump-info that doesn't
+ embed code snippets (since they are duplicated with the output program).
+
+ Encoder produces a new format for code-spans, but for a transitional period
+ a flag is provided to produce the old format. The decoder is still backwards
+ compatible (filling in just the `text` in `CodeSpan` where the json contained
+ a String).
+
+* Deleted unused `Measurements`.
+
+* Split the json codec from info.dart.
+
+* Introduced `lib/binary_serialization.dart` a lighterweight
+ serialization/deserialization implementation. This will eventually be used by
+ default by dart2js.
+
+* Added backwards compatibility flag to the JSON codec, to make transition to
+ new tools more gradual.
+
+* Added a tool to dump info files in a readable text form.
+
+* Consolidated all binary tools under a single command. Now you can access all
+ tools as follows:
+ ```
+ pub global activate dart2js_info
+ dart2js_info <command> [arguments] ...
+ ```
+
+ See updated documentation in README.md
+
+## 0.5.17
+
+* Make `live_code_size_analysis` print library URIs and not library names.
+
+## 0.5.16
+
+* Split out IO dependency from `util.dart`, so all other utilities can be used
+ on any platform.
+
+## 0.5.15
+
+* Add `BasicInfo.resetIds` to free internal cache used for id uniqueness.
+
+## 0.5.14
+* Updates `coverage_log_server.dart` and `live_code_size_analysis.dart` to make
+ them strong clean and match the latest changes in dart2js.
+
+## 0.5.13
+
+* Use a more efficient `Map` implementation for decoding existing info files.
+
+* Use a relative path when generating unique IDs for elements in non-package
+ sources.
+
+## 0.5.12
+
+* Improved output of `dart2js_info_diff` by sorting the diffs by
+ size and outputting the summary in full output mode.
+
+## 0.5.11
+
+* Added `--summary` option to `dart2js_info_diff` tool.
+
+## 0.5.10
+
+* Set max SDK version to `<3.0.0`, and adjust other dependencies.
+
+## 0.5.6+4
+
+- Changes to make the library strong mode (runtime) clean.
+
+## 0.5.6
+
+- Added `isRuntimeTypeUsed`, `isIsolateInUse`, `isFunctionApplyUsed` and `isMirrorsUsed` to
+ `ProgramInfo`.
+
+## 0.5.5+1
+
+- Support the latest versions of `shelf` and `args` packages.
+
+## 0.5.5
+
+- Added `diff` tool.
+
+## 0.5.4+2
+
+- Updated minimum SDK dependency to align with package dependencies.
+- Allowed the latest version of `pkg/quiver`.
+- Updated the homepage.
+- Improved the stability and eliminated duplicates in "holding" dump info
+ output.
+
+## 0.5.4+1
+
+- Remove files published accidentally.
+
+## 0.5.4
+
+- Added script to show inferred types of functions and fields on the command
+ line.
+
+## 0.5.3+1
+
+- Improved the stability of `ConstantInfo.id`.
+
+## 0.5.3
+
+- Made IDs in the JSON format stable. Improves plain text diffing.
+
+## 0.2.7
+- Make dart2js_info strong-mode clean.
+
+## 0.2.6
+- Add tool to get breakdown of deferred libraries by size.
+
+## 0.2.5
+- Changed the `deferred_library_check` tool to allow parts to exclude packages
+ and to not assume that unspecified packages are in the main part.
+
+## 0.2.4
+- Added `imports` field for `OutputUnitInfo`
+
+## 0.2.3
+- Moved `deferred_library_check` functionality to a library
+
+## 0.2.2
+- Added `deferred_libary_check` tool
+
+## 0.2.1
+- Merged `verify_deps` tool into `debug_info` tool
+
+## 0.2.0
+- Added `AllInfoJsonCodec`
+- Added `verify_deps` tool
+
+## 0.1.0
+- Added `ProgramInfo.entrypoint`.
+- Added experimental information about calls in function bodies. This will
+ likely change again in the near future.
+
+## 0.0.3
+- Added executable names
+
+## 0.0.2
+- Add support for `ConstantInfo`
+
+## 0.0.1
+- Initial version
diff --git a/pkg/dart2js_info/CONTRIBUTING.md b/pkg/dart2js_info/CONTRIBUTING.md
new file mode 100644
index 0000000..6f5e0ea
--- /dev/null
+++ b/pkg/dart2js_info/CONTRIBUTING.md
@@ -0,0 +1,33 @@
+Want to contribute? Great! First, read this page (including the small print at
+the end).
+
+### Before you contribute
+Before we can use your code, you must sign the
+[Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual)
+(CLA), which you can do online. The CLA is necessary mainly because you own the
+copyright to your changes, even after your contribution becomes part of our
+codebase, so we need your permission to use and distribute your code. We also
+need to be sure of various other things—for instance that you'll tell us if you
+know that your code infringes on other people's patents. You don't have to sign
+the CLA until after you've submitted your code for review and a member has
+approved it, but you must do it before we can put your code into our codebase.
+
+Before you start working on a larger contribution, you should get in touch with
+us first through the issue tracker with your idea so that we can help out and
+possibly guide you. Coordinating up front makes it much easier to avoid
+frustration later on.
+
+### Code reviews
+All submissions, including submissions by project members, require review.
+
+### File headers
+All files in the project must start with the following header.
+
+ // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+ // for details. All rights reserved. Use of this source code is governed by a
+ // BSD-style license that can be found in the LICENSE file.
+
+### The small print
+Contributions made by corporations are covered by a different agreement than the
+one above, the
+[Software Grant and Corporate Contributor License Agreement](https://developers.google.com/open-source/cla/corporate).
diff --git a/pkg/dart2js_info/DEVELOPER.md b/pkg/dart2js_info/DEVELOPER.md
new file mode 100644
index 0000000..6f517b8
--- /dev/null
+++ b/pkg/dart2js_info/DEVELOPER.md
@@ -0,0 +1,54 @@
+# Notes for developers
+
+## Developing locally together with dart2js:
+
+* Use a path dependency on this repo to prepare changes.
+
+## Submitting changes.
+
+* Submit changes in this repo first.
+* Update the sdk/DEPS and sdk/tools/deps/dartium.deps/DEPS to use the latest
+ hash of this repo.
+* Submit dart2js changes together with the roll in DEPS.
+
+## Updating the dart2js\_info dart docs
+
+We use `dartdoc` and host the generated documentation as a [github page][1] in
+this repo. Here is how to update it:
+
+* Make sure you have the dartdoc tool installed:
+
+```
+pub global activate dartdoc
+```
+
+* Run the dartdoc tool on the root of the repo in master, specify an out
+ directory different than `doc`:
+
+```sh
+dartdoc --output _docs
+```
+
+* Switch to the `gh-pages` branch:
+
+```
+git checkout gh-pages
+git pull
+```
+
+* Override the existing docs by hand:
+
+```
+rm -r doc/api
+mv _docs doc/api
+git diff # validate changes look right
+git commit -a -m "Update documentation ... "
+```
+
+* Update the gh-pages branch in the server
+```
+git push origin gh-pages
+```
+
+
+[1]: http://dart-lang.github.io/dart2js_info/doc/api/dart2js_info.info/AllInfo-class.html
diff --git a/pkg/dart2js_info/LICENSE b/pkg/dart2js_info/LICENSE
new file mode 100644
index 0000000..dbd2843
--- /dev/null
+++ b/pkg/dart2js_info/LICENSE
@@ -0,0 +1,27 @@
+Copyright 2015, 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/pkg/dart2js_info/README.md b/pkg/dart2js_info/README.md
new file mode 100644
index 0000000..2f2fe11
--- /dev/null
+++ b/pkg/dart2js_info/README.md
@@ -0,0 +1,520 @@
+# Dart2js Info
+
+This package contains libraries and tools you can use to process info
+files produced when running dart2js with `--dump-info`.
+
+The info files contain data about each element included in the output of your
+program. The data includes information such as:
+
+ * the size that each function adds to the `.dart.js` output,
+ * dependencies between functions,
+ * how the code is clustered when using deferred libraries, and
+ * the declared and inferred type of each function argument.
+
+All of this information can help you understand why some piece of code is
+included in your compiled application, and how far was dart2js able to
+understand your code. This data can help you make changes to improve the quality
+and size of your framework or app.
+
+This package focuses on gathering libraries and tools that summarize all of that
+information. Bear in mind that even with all these tools, it is not trivial to
+isolate code-size issues. We just hope that these tools make things a bit
+easier.
+
+## Status
+
+[![Build Status](https://github.com/dart-lang/dart2js_info/workflows/Dart%20CI/badge.svg)](https://github.com/dart-lang/dart2js_info/actions?query=workflow%3A"Dart+CI"+branch%3Amaster)
+
+Currently, most tools available here can be used to analyze code-size and
+attribution of code-size to different parts of your app. With time, we hope to
+add more data to the info files, and include better tools to help
+understand the results of type inference.
+
+This package is still in flux and we might make breaking changes at any time.
+Our current goal is not to provide a stable API, we mainly want to expose the
+functionality and iterate on it. We recommend that you pin a specific version
+of this package and update when needed.
+
+## Tools
+
+All tools are provided as commands of a single command-line interface. To
+install:
+```console
+pub global activate dart2js_info
+```
+
+To run a tool, then run:
+```console
+dart2js_info <command> [arguments]
+```
+
+There is a short help available on the tool, and more details are provided
+below.
+
+## Format
+
+There are several formats of info files. Dart2js today produces a JSON format,
+but very soon will switch to produce a binary format by default.
+
+## Info API
+
+This package also exposes libraries to parse and represent the information from
+the info files. If there is data that is stored in the info files but not
+exposed by one of our tools, you may be able to use the info APIs to quickly put
+together your own tool.
+
+[AllInfo][AllInfo] exposes a Dart representation of all of the collected
+information. There are deserialization libraries in this package to decode any
+info file produced by the `dart2js` `--dump-info` option. See
+`lib/binary_serialization.dart` and `lib/json_info_codec.dart` to find the
+binary and JSON decoders respectively. For convenience,
+`package:dart2js_info/src/io.dart` also exposes a helper method that can choose,
+depending on the extension of the info file, whether to deserialize it using the
+binary or JSON decoder. For example:
+
+```dart
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
+
+main(args) async {
+ var infoPath = args[0];
+ var info = await infoFromFile(infoPath);
+ ...
+}
+```
+
+## Available tools
+
+The following tools are a available today:
+
+ * [`code_deps`][code_deps]: simple tool that can answer queries about the
+ dependency between functions and fields in your program. Currently it only
+ supports the `some_path` query, which shows a dependency path from one
+ function to another.
+
+ * [`diff`][diff]: a tool that diffs two info files and reports which
+ program elements have been added, removed, or changed size. This also
+ tells which elements are no longer deferred or have become deferred.
+
+ * [`library_size`][library_size]: a tool that shows how much code was
+ attributed to each library. This tool is configurable so it can group data
+ in many ways (e.g. to tally together all libraries that belong to a package,
+ or all libraries that match certain name pattern).
+
+ * [`deferred_check`][deferred_check]: a tool that verifies that code
+ was split into deferred parts as expected. This tool takes a specification
+ of the expected layout of code into deferred parts, and checks that the
+ output from `dart2js` meets the specification.
+
+ * [`deferred_size`][deferred_size]: a tool that gives a breakdown of
+ the sizes of the deferred parts of the program. This can show how much of
+ your total code size can be loaded deferred.
+
+ * [`deferred_layout`][deferred_layout]: a tool that reports which
+ code is included on each output unit.
+
+ * [`function_size`][function_size]: a tool that shows how much
+ code was attributed to each function. This tool also uses dependency
+ information to compute dominance and reachability data. This information can
+ sometimes help determine how much savings could come if the function was not
+ included in the program.
+
+ * [`coverage_server`][coverage_server] and [`coverage_analysis`][coverage_analysis]:
+ dart2js has an experimental feature to gather coverage data of your
+ application. The `coverage_log_server` can record this data, and
+ `live_code_size_analysis` can correlate that with the info file, so you
+ determine why code that is not used is being included in your app.
+
+ * [`convert`][convert]: a tool that converts info files from one format to
+ another. Accepted inputs are JSON or the internal binary form, outputs can
+ be JSON, backward-compatible JSON, binary, or protobuf schema (as defined in
+ `info.proto`).
+
+ * [`show`][show]: a tool that dumps info files in a readable text format.
+
+Next we describe in detail how to use each of these tools.
+
+### Code deps tool
+
+This command-line tool can be used to query for code dependencies. Currently
+this tool only supports the `some_path` query, which gives you the shortest path
+for how one function depends on another.
+
+Run this tool as follows:
+```console
+# activate is only needed once to install the dart2js_info tool
+$ pub global activate dart2js_info
+$ dart2js_info code_deps some_path out.js.info.data main foo
+```
+
+The arguments to the query are regular expressions that can be used to
+select a single element in your program. If your regular expression is too
+general and has more than one match, this tool will pick
+the first match and ignore the rest. Regular expressions are matched against
+a fully qualified element name, which includes the library and class name
+(if any) that contains it. A typical qualified name is of this form:
+
+ libraryName::ClassName.elementName
+
+If the name of a function your are looking for is unique enough, it might be
+sufficient to just write that name as your regular expression.
+
+### Diff tool
+
+This command-line tool shows a diff between two info files. It can be run
+as follows:
+
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info diff old.js.info.data new.js.info.data [--summary]
+```
+
+The tool gives a breakdown of the difference between the two info files.
+Here's an example output:
+
+```
+total_size_difference -2688
+total_added 0
+total_removed 2321
+total_size_changed -203
+total_became_deferred 0
+total_no_longer_deferred 0
+
+ADDED (0 bytes)
+========================================================================
+
+REMOVED (2321 bytes)
+========================================================================
+dart:_js_helper::getRuntimeTypeString: 488 bytes
+dart:_js_helper::substitute: 479 bytes
+dart:_js_helper::TypeImpl.toString: 421 bytes
+dart:_js_helper::computeSignature: 204 bytes
+dart:_js_helper::getRuntimeTypeArguments: 181 bytes
+dart:_js_helper::extractFunctionTypeObjectFrom: 171 bytes
+dart:_js_helper::getTypeArgumentByIndex: 147 bytes
+dart:_js_helper::runtimeTypeToString: 136 bytes
+dart:_js_helper::setRuntimeTypeInfo: 94 bytes
+dart:core::Object.runtimeType: 0 bytes
+dart:_js_helper::getRawRuntimeType: 0 bytes
+dart:_js_helper::invoke: 0 bytes
+dart:_js_helper::invokeOn: 0 bytes
+dart:_js_helper::getField: 0 bytes
+dart:_js_helper::getClassName: 0 bytes
+dart:_js_helper::getRuntimeType: 0 bytes
+dart:_js_helper::TypeImpl.TypeImpl: 0 bytes
+
+CHANGED SIZE (-203 bytes)
+========================================================================
+dart:_interceptors::JSUnmodifiableArray: -3 bytes
+dart:core::List: -3 bytes
+dart:_interceptors::ArrayIterator: -4 bytes
+dart:_js_helper::TypeImpl._typeName: -10 bytes
+dart:_js_helper::TypeImpl._unmangledName: -15 bytes
+dart:_js_names::: -30 bytes
+dart:_js_names::extractKeys: -30 bytes
+dart:core::StringBuffer: -40 bytes
+dart:core::StringBuffer._writeAll: -40 bytes
+dart:core::: -43 bytes
+dart:_interceptors::JSArray.+: -63 bytes
+dart:_interceptors::JSArray: -66 bytes
+dart:_interceptors::: -73 bytes
+dart:_js_helper::TypeImpl: -481 bytes
+dart:_js_helper::: -2445 bytes
+
+BECAME DEFERRED (0 bytes)
+========================================================================
+
+NO LONGER DEFERRED (0 bytes)
+========================================================================
+
+```
+
+You can also pass `--summary` to only show the summary section.
+
+### Library size split tool
+
+This command-line tool shows the size distribution of generated code among
+libraries. It can be run as follows:
+
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info library_size out.js.info.data
+```
+
+
+Libraries can be grouped using regular expressions. You can
+specify what regular expressions to use by providing a `grouping.yaml` file
+with the `--grouping` flag:
+
+```console
+$ dart2js_info library_size out.js.info.data --grouping grouping.yaml
+```
+
+The format of the `grouping.yaml` file is as follows:
+
+```yaml
+groups:
+- { regexp: "package:(foo)/*.dart", name: "group name 1", cluster: 2}
+- { regexp: "dart:.*", name: "group name 2", cluster: 3}
+```
+
+The file should include a single key `groups` containing a list of group
+specifications. Each group is specified by a map of 3 entries:
+
+ * `regexp` (required): a regexp used to match entries that belong to the
+ group.
+
+ * `name` (optional): the name given to this group in the output table. If
+ omitted, the name is derived from the regexp as the match's group(1) or
+ group(0) if no group was defined. When names are omitted the group
+ specification implicitly defines several groups, one per observed name.
+
+ * `cluster` (optional): a clustering index for how data is shown in a table.
+ Groups with higher cluster indices are shown later in the table after a
+ dividing line. If missing, the cluster index defaults to 0.
+
+Here is an example configuration, with comments about what each entry does:
+
+```yaml
+groups:
+# This group shows the total size for all libraries that were loaded from
+# file:// urls, it is shown in cluster #2, which happens to be the last
+# cluster in this example before the totals are shown:
+- name: "Loose files"
+ regexp: "file://.*"
+ cluster: 2
+
+# This group shows the total size of all code loaded from packages:
+- { name: "All packages", regexp: "package:.*", cluster: 2}
+
+# This group shows the total size of all code loaded from core libraries:
+- { name: "Core libs", regexp: "dart:.*", cluster: 2}
+
+# This group shows the total size of all libraries in a single package. Here
+# we omitted the `name` entry, instead we extract it from the regexp
+# directly. In this case, the name will be the package-name portion of the
+# package-url (determined by group(1) of the regexp).
+- { regexp: "package:([^/]*)", cluster: 1}
+
+# The next two groups match the entire library url as the name of the group.
+- regexp: "package:.*"
+- regexp: "dart:.*"
+
+# If your code lives under /my/project/dir, this will match any file loaded
+from a file:// url, and we use as a name the relative path to it.
+- regexp: "file:///my/project/dir/(.*)"
+```
+
+Regardless of the grouping configuration, the tool will display the total code
+size attributed of all libraries, constants, and the program size.
+
+**Note**: eventually you should expect all numbers to add up to the program
+size. Currently dart2js's `--dump-info` is not complete, so numbers for
+bootstrapping code and lazy static initializers are missing.
+
+### Deferred library verification
+
+This tool checks that the output from dart2js meets a given specification,
+given in a YAML file. It can be run as follows:
+
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info deferred_check out.js.info.data manifest.yaml
+```
+
+The format of the YAML file is:
+
+```yaml
+main:
+ include:
+ - some_package
+ - other_package
+ exclude:
+ - some_other_package
+
+foo:
+ include:
+ - foo
+ - bar
+
+baz:
+ include:
+ - baz
+ - quux
+ exclude:
+ - zardoz
+```
+
+The YAML file consists of a list of declarations, one for each deferred
+part expected in the output. At least one of these parts must be named
+"main"; this is the main part that contains the program entrypoint. Each
+top-level part contains a list of package names that are expected to be
+contained in that part, a list of package names that are expected to be in
+another part, or both. For instance, in the example YAML above the part named
+"baz" is expected to contain the packages "baz" and "quux" and exclude the
+package "zardoz".
+
+The names for parts given in the specification YAML file (besides "main")
+are the same as the name given to the deferred import in the dart file. For
+instance, if you have `import 'package:foo/bar.dart' deferred as baz;` in your
+dart file, then the corresponding name in the specification file is 'baz'.
+
+### Deferred library size tool
+
+This tool gives a breakdown of all of the deferred code in the program by size.
+It can show how much of the total code size is deferred. It can be run as
+follows:
+
+```console
+pub global activate dart2js_info # only needed once
+dart2js_info deferred_size out.js.info.data
+```
+
+The tool will output a table listing all of the deferred imports in the program
+as well as the "main" chunk, which is not deferred. The output looks like:
+
+```
+Size by library
+------------------------------------------------
+main 12345678
+foo 7654321
+bar 1234567
+------------------------------------------------
+Main chunk size 12345678
+Deferred code size 8888888
+Percent of code deferred 41.86%
+```
+
+### Deferred library layout tool
+
+This tool reports which code is included in each output unit. It can be run as
+follows:
+
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info deferred_layout out.js.info.data
+```
+
+The tool will output a table listing all of the deferred output units or chunks,
+for each unit it will list the set of libraries that contribute code to this
+unit. If a library contributes to more than one output unit, the tool lists
+which elements are in one or another output unit. For example, the output might
+look like this:
+
+```
+Output unit main:
+ loaded by default
+ contains:
+ - hello_world.dart
+ - dart:core
+ ...
+
+Output unit 2:
+ loaded by importing: [b]
+ contains:
+ - c.dart:
+ - function d
+ - b.dart
+
+Output unit 1:
+ loaded by importing: [a]
+ contains:
+ - c.dart:
+ - function c
+ - a.dart
+```
+
+In this example, all the code of `b.dart` after tree-shaking was included in the
+output unit 2, but `c.dart` was split between output unit 1 and output unit 2.
+
+### Function size analysis tool
+
+This command-line tool presents how much each function contributes to the total
+code of your application. We use dependency information to compute dominance
+and reachability data as well.
+
+When you run:
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info function_size out.js.info.data
+```
+
+the tool produces a table output with lots of entries. Here is an example entry
+with the corresponding table header:
+```
+ --- Results per element (field or function) ---
+ element size dominated size reachable size Element identifier
+ ...
+ 275 0.01% 283426 13.97% 1506543 74.28% some.library.name::ClassName.myMethodName
+```
+
+Such entry means that the function `myMethodName` uses 275 bytes, which is 0.01%
+of the application. That function however calls other functions, which
+transitively can include up to 74.28% of the application size. Of all those
+reachable functions, some of them are reachable from other parts of the program,
+but a subset are dominated by `myMethodName`, that is, other parts of the
+program starting from `main` would first go through `myMethodName` before
+reaching those functions. In this example, that subset is 13.97% of the
+application size. This means that if you somehow can remove your dependency on
+`myMethodName`, you will save at least that 13.97%, and possibly some more from
+the reachable size, but how much of that we are not certain.
+
+### Coverage tools
+
+Coverage information requires a bit more setup and work to get them running. The
+steps are as follows:
+
+ * Compile an app with dart2js using `--dump-info` and
+ `--experiment-call-instrumentation`
+
+```console
+$ dart2js --dump-info --experiment-call-instrumentation main.dart
+```
+
+ The flag only works dart2js version 2.2.0 or newer.
+
+ * Launch the coverage server tool to serve up the JS code of your app:
+
+```console
+$ dart2js_info coverage_server main.dart.js
+```
+
+ * (optional) If you have a complex application setup, you may need to serve an
+ html file or integrate your application server to proxy to the log server
+ any GET request for the .dart.js file and /coverage POST requests that send
+ coverage data.
+
+ * Load your app and use it to exercise the entire code.
+
+ * Shut down the coverage server (Ctrl-C). This will emit a file named
+ `mail.dart.js.coverage.json`
+
+ * Finally, run the live code analysis tool given it both the info and
+ coverage json files:
+
+```console
+$ dart2js_info coverage_analysis main.dart.info.data main.dart.coverage.json
+```
+
+## Code location, features and bugs
+
+This package is developed in [github][repo]. Please file feature requests and
+bugs at the [issue tracker][tracker].
+
+[repo]: https://github.com/dart-lang/dart2js_info/
+[tracker]: https://github.com/dart-lang/dart2js_info/issues
+[code_deps]: https://github.com/dart-lang/dart2js_info/blob/master/bin/code_deps.dart
+[diff]: https://github.com/dart-lang/dart2js_info/blob/master/bin/diff.dart
+[library_size]: https://github.com/dart-lang/dart2js_info/blob/master/bin/library_size_split.dart
+[deferred_check]: https://github.com/dart-lang/dart2js_info/blob/master/bin/deferred_library_check.dart
+[deferred_size]: https://github.com/dart-lang/dart2js_info/blob/master/bin/deferred_library_size.dart
+[deferred_layout]: https://github.com/dart-lang/dart2js_info/blob/master/bin/deferred_library_layout.dart
+[coverage_server]: https://github.com/dart-lang/dart2js_info/blob/master/bin/coverage_log_server.dart
+[coverage_analysis]: https://github.com/dart-lang/dart2js_info/blob/master/bin/live_code_size_analysis.dart
+[function_size]: https://github.com/dart-lang/dart2js_info/blob/master/bin/function_size_analysis.dart
+[AllInfo]: http://dart-lang.github.io/dart2js_info/doc/api/dart2js_info.info/AllInfo-class.html
+[convert]: https://github.com/dart-lang/dart2js_info/blob/master/bin/convert.dart
+[show]: https://github.com/dart-lang/dart2js_info/blob/master/bin/text_print.dart
diff --git a/pkg/dart2js_info/bin/src/code_deps.dart b/pkg/dart2js_info/bin/src/code_deps.dart
new file mode 100644
index 0000000..91b9222
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/code_deps.dart
@@ -0,0 +1,131 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Command to query for code dependencies. Currently this tool only
+/// supports the `some_path` query, which gives you the shortest path for how
+/// one function depends on another.
+///
+/// You can run this tool as follows:
+/// ```bash
+/// pub global activate dart2js_info
+/// dart2js_info code_deps some_path out.js.info.json main foo
+/// ```
+///
+/// The arguments to the query are regular expressions that can be used to
+/// select a single element in your program. If your regular expression is too
+/// general and has more than one match, this tool will pick
+/// the first match and ignore the rest. Regular expressions are matched against
+/// a fully qualified element name, which includes the library and class name
+/// (if any) that contains it. A typical qualified name is of this form:
+///
+/// libraryName::ClassName.elementName
+///
+/// If the name of a function your are looking for is unique enough, it might be
+/// sufficient to just write that name as your regular expression.
+library dart2js_info.bin.code_deps;
+
+import 'dart:collection';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'usage_exception.dart';
+
+class CodeDepsCommand extends Command<void> with PrintUsageException {
+ final String name = "code_deps";
+ final String description = "";
+
+ CodeDepsCommand() {
+ addSubcommand(new _SomePathQuery());
+ }
+}
+
+class _SomePathQuery extends Command<void> with PrintUsageException {
+ final String name = "some_path";
+ final String description = "find a call-graph path between two elements.";
+
+ @override
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 3) {
+ usageException("Missing arguments for some_path, expected: "
+ "info.data <element-regexp-1> <element-regexp-2>");
+ return;
+ }
+
+ var info = await infoFromFile(args.first);
+ var graph = graphFromInfo(info);
+
+ var source = info.functions
+ .firstWhere(_longNameMatcher(new RegExp(args[1])), orElse: () => null);
+ var target = info.functions
+ .firstWhere(_longNameMatcher(new RegExp(args[2])), orElse: () => null);
+ print('query: some_path');
+ if (source == null) {
+ usageException("source '${args[1]}' not found in '${args[0]}'");
+ }
+ print('source: ${longName(source)}');
+ if (target == null) {
+ usageException("target '${args[2]}' not found in '${args[0]}'");
+ }
+ print('target: ${longName(target)}');
+ var path = new SomePathQuery(source, target).run(graph);
+ if (path.isEmpty) {
+ print('result: no path found');
+ } else {
+ print('result:');
+ for (int i = 0; i < path.length; i++) {
+ print(' $i. ${longName(path[i])}');
+ }
+ }
+ }
+}
+
+/// A query supported by this tool.
+abstract class Query {
+ run(Graph<Info> graph);
+}
+
+/// Query that searches for a single path between two elements.
+class SomePathQuery {
+ /// The info associated with the source element.
+ Info source;
+
+ /// The info associated with the target element.
+ Info target;
+
+ SomePathQuery(this.source, this.target);
+
+ List<Info> run(Graph<Info> graph) {
+ var seen = <Info, Info>{source: null};
+ var queue = new Queue<Info>();
+ queue.addLast(source);
+ while (queue.isNotEmpty) {
+ var node = queue.removeFirst();
+ if (identical(node, target)) {
+ var result = new Queue<Info>();
+ while (node != null) {
+ result.addFirst(node);
+ node = seen[node];
+ }
+ return result.toList();
+ }
+ for (var neighbor in graph.targetsOf(node)) {
+ if (seen.containsKey(neighbor)) continue;
+ seen[neighbor] = node;
+ queue.addLast(neighbor);
+ }
+ }
+ return [];
+ }
+}
+
+typedef bool LongNameMatcher(FunctionInfo info);
+
+LongNameMatcher _longNameMatcher(RegExp regexp) =>
+ (e) => regexp.hasMatch(longName(e));
diff --git a/pkg/dart2js_info/bin/src/convert.dart b/pkg/dart2js_info/bin/src/convert.dart
new file mode 100644
index 0000000..f79233d
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/convert.dart
@@ -0,0 +1,38 @@
+// 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:args/command_runner.dart';
+
+import 'to_json.dart' show ToJsonCommand;
+import 'to_binary.dart' show ToBinaryCommand;
+import 'to_proto.dart' show ToProtoCommand;
+import 'usage_exception.dart';
+
+/// This tool reports how code is divided among deferred chunks.
+class ConvertCommand extends Command<void> with PrintUsageException {
+ final String name = "convert";
+ final String description = "Convert between info formats.";
+
+ ConvertCommand() {
+ _addSubcommand(new ToJsonCommand());
+ _addSubcommand(new ToBinaryCommand());
+ _addSubcommand(new ToProtoCommand());
+ }
+
+ _addSubcommand(Command<void> command) {
+ addSubcommand(command);
+ command.argParser
+ ..addOption('out',
+ abbr: 'o',
+ help: 'Output file '
+ '(to_json defauts to <input>.json, to_binary defaults to\n'
+ '<input>.data, and to_proto defaults to <input>.pb)')
+ ..addFlag('inject-text',
+ negatable: false,
+ help: 'Whether to inject output code snippets.\n\n'
+ 'By default dart2js produces code spans, but excludes the text. This\n'
+ 'option can be used to embed the text directly in the output.\n'
+ 'Note: this requires access to dart2js output files.\n');
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/coverage_log_server.dart b/pkg/dart2js_info/bin/src/coverage_log_server.dart
new file mode 100644
index 0000000..d43d410
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/coverage_log_server.dart
@@ -0,0 +1,220 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// A tool to gather coverage data from an app generated with dart2js. This
+/// depends on code that has been landed in the bleeding_edge version of dart2js
+/// and that we expect to become publicly visible in version 0.13.0 of the Dart
+/// SDK).
+///
+/// This tool starts a server that answers to mainly 2 requests:
+/// * a GET request to retrieve the application
+/// * POST requests to record coverage data.
+///
+/// It is intended to be used as follows:
+/// * generate an app by running dart2js with the environment value
+/// -DtraceCalls=post provided to the vm, and the --dump-info
+/// flag provided to dart2js.
+/// * start this server, and proxy requests from your normal frontend
+/// server to this one.
+library dart2js_info.bin.coverage_log_server;
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+import 'package:path/path.dart' as path;
+import 'package:shelf/shelf.dart' as shelf;
+import 'package:shelf/shelf_io.dart' as shelf;
+
+import 'usage_exception.dart';
+
+class CoverageLogServerCommand extends Command<void> with PrintUsageException {
+ final String name = 'coverage_server';
+ final String description = 'Server to gather code coverage data';
+
+ CoverageLogServerCommand() {
+ argParser
+ ..addOption('port', abbr: 'p', help: 'port number', defaultsTo: "8080")
+ ..addOption('host',
+ help: 'host name (use 0.0.0.0 for all interfaces)',
+ defaultsTo: 'localhost')
+ ..addOption('uri-prefix',
+ help:
+ 'uri path prefix that will hit this server. This will be injected'
+ ' into the .js file',
+ defaultsTo: '')
+ ..addOption('out',
+ abbr: 'o',
+ help: 'output log file',
+ defaultsTo: _DEFAULT_OUT_TEMPLATE);
+ }
+
+ void run() async {
+ if (argResults.rest.isEmpty) {
+ usageException('Missing arguments: <dart2js-out-file> [<html-file>]');
+ }
+
+ var jsPath = argResults.rest[0];
+ var htmlPath = null;
+ if (argResults.rest.length > 1) {
+ htmlPath = argResults.rest[1];
+ }
+ var outPath = argResults['out'];
+ if (outPath == _DEFAULT_OUT_TEMPLATE) outPath = '$jsPath.coverage.json';
+ var server = new _Server(argResults['host'], int.parse(argResults['port']),
+ jsPath, htmlPath, outPath, argResults['uri-prefix']);
+ await server.run();
+ }
+}
+
+const _DEFAULT_OUT_TEMPLATE = '<dart2js-out-file>.coverage.json';
+
+class _Server {
+ /// Server hostname, typically `localhost`, but can be `0.0.0.0`.
+ final String hostname;
+
+ /// Port the server will listen to.
+ final int port;
+
+ /// JS file (previously generated by dart2js) to serve.
+ final String jsPath;
+
+ /// HTML file to serve, if any.
+ final String htmlPath;
+
+ /// Contents of jsPath, adjusted to use the appropriate server url.
+ String jsCode;
+
+ /// Location where we'll dump the coverage data.
+ final String outPath;
+
+ /// Uri prefix used on all requests to this server. This will be injected into
+ /// the .js file.
+ final String prefix;
+
+ // TODO(sigmund): add support to load also simple HTML files to test small
+ // simple apps.
+
+ /// Data received so far. The data is just an array of pairs, showing the
+ /// hashCode and name of the element used. This can be later cross-checked
+ /// against dump-info data.
+ Map data = {};
+
+ String get _serializedData => new JsonEncoder.withIndent(' ').convert(data);
+
+ _Server(this.hostname, this.port, String jsPath, this.htmlPath, this.outPath,
+ String prefix)
+ : jsPath = jsPath,
+ jsCode = _adjustRequestUrl(new File(jsPath).readAsStringSync(), prefix),
+ prefix = _normalize(prefix);
+
+ run() async {
+ await shelf.serve(_handler, hostname, port);
+ var urlBase = "http://$hostname:$port${prefix == '' ? '/' : '/$prefix/'}";
+ var htmlFilename = htmlPath == null ? '' : path.basename(htmlPath);
+ print("Server is listening\n"
+ " - html page: $urlBase$htmlFilename\n"
+ " - js code: $urlBase${path.basename(jsPath)}\n"
+ " - coverage reporting: ${urlBase}coverage\n");
+ }
+
+ _expectedPath(String tail) => prefix == '' ? tail : '$prefix/$tail';
+
+ FutureOr<shelf.Response> _handler(shelf.Request request) async {
+ var urlPath = request.url.path;
+ print('received request: $urlPath');
+ var baseJsName = path.basename(jsPath);
+ var baseHtmlName = htmlPath == null ? '' : path.basename(htmlPath);
+
+ // Serve an HTML file at the default prefix, or a path matching the HTML
+ // file name
+ if (urlPath == prefix ||
+ urlPath == '$prefix/' ||
+ urlPath == _expectedPath(baseHtmlName)) {
+ var contents = htmlPath == null
+ ? '<html><script src="$baseJsName"></script>'
+ : await new File(htmlPath).readAsString();
+ return new shelf.Response.ok(contents, headers: HTML_HEADERS);
+ }
+
+ if (urlPath == _expectedPath(baseJsName)) {
+ return new shelf.Response.ok(jsCode, headers: JS_HEADERS);
+ }
+
+ // Handle POST requests to record coverage data, and GET requests to display
+ // the currently coverage results.
+ if (urlPath == _expectedPath('coverage')) {
+ if (request.method == 'GET') {
+ return new shelf.Response.ok(_serializedData, headers: TEXT_HEADERS);
+ }
+
+ if (request.method == 'POST') {
+ _record(jsonDecode(await request.readAsString()));
+ return new shelf.Response.ok("Thanks!");
+ }
+ }
+
+ // Any other request is not supported.
+ return new shelf.Response.notFound('Not found: "$urlPath"');
+ }
+
+ _record(List entries) {
+ for (var entry in entries) {
+ var id = entry[0];
+ data.putIfAbsent('$id', () => {'name': entry[1], 'count': 0});
+ data['$id']['count']++;
+ }
+ _enqueueSave();
+ }
+
+ bool _savePending = false;
+ int _total = 0;
+ _enqueueSave() async {
+ if (!_savePending) {
+ _savePending = true;
+ await new Future.delayed(new Duration(seconds: 3));
+ await new File(outPath).writeAsString(_serializedData);
+ var diff = data.length - _total;
+ print(diff == 0
+ ? ' - no new element covered'
+ : ' - $diff new elements covered');
+ _savePending = false;
+ _total = data.length;
+ }
+ }
+}
+
+/// Removes leading and trailing slashes of [uriPath].
+_normalize(String uriPath) {
+ if (uriPath.startsWith('/')) uriPath = uriPath.substring(1);
+ if (uriPath.endsWith('/')) uriPath = uriPath.substring(0, uriPath.length - 1);
+ return uriPath;
+}
+
+_adjustRequestUrl(String code, String prefix) {
+ var url = prefix == '' ? 'coverage' : '$prefix/coverage';
+ var hook = '''
+ self.dartCallInstrumentation = function(id, name) {
+ if (!this.traceBuffer) {
+ this.traceBuffer = [];
+ }
+ var buffer = this.traceBuffer;
+ if (buffer.length == 0) {
+ window.setTimeout(function() {
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "/$url");
+ xhr.send(JSON.stringify(buffer));
+ buffer.length = 0;
+ }, 1000);
+ }
+ buffer.push([id, name]);
+ };
+ ''';
+ return '$hook$code';
+}
+
+const HTML_HEADERS = const {'content-type': 'text/html'};
+const JS_HEADERS = const {'content-type': 'text/javascript'};
+const TEXT_HEADERS = const {'content-type': 'text/plain'};
diff --git a/pkg/dart2js_info/bin/src/debug_info.dart b/pkg/dart2js_info/bin/src/debug_info.dart
new file mode 100644
index 0000000..5aa7607
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/debug_info.dart
@@ -0,0 +1,321 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Tool used mainly by dart2js developers to debug the generated info and check
+/// that it is consistent and that it covers all the data we expect it to cover.
+library dart2js_info.bin.debug_info;
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'usage_exception.dart';
+
+class DebugCommand extends Command<void> with PrintUsageException {
+ final String name = "debug";
+ final String description = "Dart2js-team diagnostics on a dump-info file.";
+
+ DebugCommand() {
+ argParser.addOption('show-library',
+ help: "Show detailed data for a library with the given name");
+ }
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 1) {
+ usageException('Missing argument: info.data');
+ }
+
+ var info = await infoFromFile(args.first);
+ var debugLibName = argResults['show-library'];
+
+ validateSize(info, debugLibName);
+ validateParents(info);
+ compareGraphs(info);
+ verifyDeps(info);
+ }
+}
+
+/// Validates that codesize of elements adds up to total codesize.
+validateSize(AllInfo info, String debugLibName) {
+ // Gather data from visiting all info elements.
+ var tracker = new _SizeTracker(debugLibName);
+ info.accept(tracker);
+
+ // Validate that listed elements include elements of each library.
+ Set<Info> listed = new Set()
+ ..addAll(info.functions)
+ ..addAll(info.fields);
+ // For our sanity we do some validation of dump-info invariants
+ var diff1 = listed.difference(tracker.discovered);
+ var diff2 = tracker.discovered.difference(listed);
+ if (diff1.length == 0 || diff2.length == 0) {
+ _pass('all fields and functions are covered');
+ } else {
+ if (diff1.length > 0) {
+ _fail("some elements where listed globally that weren't part of any "
+ "library (non-zero ${diff1.where((f) => f.size > 0).length})");
+ }
+ if (diff2.length > 0) {
+ _fail("some elements found in libraries weren't part of the global list"
+ " (non-zero ${diff2.where((f) => f.size > 0).length})");
+ }
+ }
+
+ // Validate that code-size adds up.
+ int realTotal = info.program.size;
+ int totalLib = info.libraries.fold(0, (n, lib) => n + lib.size);
+ int constantsSize = info.constants.fold(0, (n, c) => n + c.size);
+ int accounted = totalLib + constantsSize;
+
+ if (accounted != realTotal) {
+ var percent =
+ ((realTotal - accounted) * 100 / realTotal).toStringAsFixed(2);
+ _fail('$percent% size missing: $accounted (all libs + consts) '
+ '< $realTotal (total)');
+ }
+ int missingTotal = tracker.missing.values.fold(0, (a, b) => a + b);
+ if (missingTotal > 0) {
+ var percent = (missingTotal * 100 / realTotal).toStringAsFixed(2);
+ _fail('$percent% size missing in libraries (sum of elements > lib.size)');
+ }
+}
+
+/// Validates that every element in the model has a parent (except libraries).
+validateParents(AllInfo info) {
+ final parentlessInfos = new Set<Info>();
+
+ failIfNoParents(List<Info> infos) {
+ for (var info in infos) {
+ if (info.parent == null) {
+ parentlessInfos.add(info);
+ }
+ }
+ }
+
+ failIfNoParents(info.functions);
+ failIfNoParents(info.typedefs);
+ failIfNoParents(info.classes);
+ failIfNoParents(info.fields);
+ failIfNoParents(info.closures);
+ if (parentlessInfos.isEmpty) {
+ _pass('all elements have a parent');
+ } else {
+ _fail('${parentlessInfos.length} elements have no parent');
+ }
+}
+
+class _SizeTracker extends RecursiveInfoVisitor {
+ /// A library name for which to print debugging information (if not null).
+ final String _debugLibName;
+
+ _SizeTracker(this._debugLibName);
+
+ /// [FunctionInfo]s and [FieldInfo]s transitively reachable from [LibraryInfo]
+ /// elements.
+ final Set<Info> discovered = new Set<Info>();
+
+ /// Total number of bytes missing if you look at the reported size compared
+ /// to the sum of the nested infos (e.g. if a class size is smaller than the
+ /// sum of its methods). Used for validation and debugging of the dump-info
+ /// invariants.
+ final Map<Info, int> missing = {};
+
+ /// Set of [FunctionInfo]s that appear to be unused by the app (they are not
+ /// registed [coverage]).
+ final List unused = [];
+
+ /// Tracks the current state of this visitor.
+ List<_State> stack = [new _State()];
+
+ /// Code discovered for a [LibraryInfo], only used for debugging.
+ final StringBuffer _debugCode = new StringBuffer();
+ int _indent = 2;
+
+ void _push() => stack.add(new _State());
+
+ void _pop(info) {
+ var last = stack.removeLast();
+ var size = last._totalSize;
+ if (size > info.size) {
+ // record dump-info inconsistencies.
+ missing[info] = size - info.size;
+ } else {
+ // if size < info.size, that is OK, the enclosing element might have code
+ // of it's own (e.g. a class declaration includes the name of the class,
+ // but the discovered size only counts the size of the members.)
+ size = info.size;
+ }
+ stack.last
+ .._totalSize += size
+ .._count += last._count
+ .._bodySize += last._bodySize;
+ }
+
+ bool _debug = false;
+ visitLibrary(LibraryInfo info) {
+ if (_debugLibName != null) _debug = info.name.contains(_debugLibName);
+ _push();
+ if (_debug) {
+ _debugCode.write('{\n');
+ _indent = 4;
+ }
+ super.visitLibrary(info);
+ _pop(info);
+ if (_debug) {
+ _debug = false;
+ _indent = 4;
+ _debugCode.write('}\n');
+ }
+ }
+
+ _handleCodeInfo(info) {
+ discovered.add(info);
+ var code = info.code;
+ if (_debug && code != null) {
+ bool isClosureClass = info.name.endsWith('.call');
+ if (isClosureClass) {
+ var cname = info.name.substring(0, info.name.indexOf('.'));
+ _debugCode.write(' ' * _indent);
+ _debugCode.write(cname);
+ _debugCode.write(': {\n');
+ _indent += 2;
+ _debugCode.write(' ' * _indent);
+ _debugCode.write('...\n');
+ }
+
+ print('$info ${isClosureClass} \n${info.code}');
+ _debugCode.write(' ' * _indent);
+ var endsInNewLine = code.endsWith('\n');
+ if (endsInNewLine) code = code.substring(0, code.length - 1);
+ _debugCode.write(code.replaceAll('\n', '\n' + (' ' * _indent)));
+ if (endsInNewLine) _debugCode.write(',\n');
+ if (isClosureClass) {
+ _indent -= 2;
+ _debugCode.write(' ' * _indent);
+ _debugCode.write('},\n');
+ }
+ }
+ stack.last._totalSize += info.size;
+ stack.last._bodySize += info.size;
+ stack.last._count++;
+ }
+
+ visitField(FieldInfo info) {
+ _handleCodeInfo(info);
+ super.visitField(info);
+ }
+
+ visitFunction(FunctionInfo info) {
+ _handleCodeInfo(info);
+ super.visitFunction(info);
+ }
+
+ visitTypedef(TypedefInfo info) {
+ if (_debug) print('$info');
+ stack.last._totalSize += info.size;
+ super.visitTypedef(info);
+ }
+
+ visitClass(ClassInfo info) {
+ if (_debug) {
+ print('$info');
+ _debugCode.write(' ' * _indent);
+ _debugCode.write('${info.name}: {\n');
+ _indent += 2;
+ }
+ _push();
+ super.visitClass(info);
+ _pop(info);
+ if (_debug) {
+ _debugCode.write(' ' * _indent);
+ _debugCode.write('},\n');
+ _indent -= 2;
+ }
+ }
+}
+
+class _State {
+ int _count = 0;
+ int _totalSize = 0;
+ int _bodySize = 0;
+}
+
+/// Validates that both forms of dependency information match.
+void compareGraphs(AllInfo info) {
+ var g1 = new EdgeListGraph<Info>();
+ var g2 = new EdgeListGraph<Info>();
+ for (var f in info.functions) {
+ g1.addNode(f);
+ for (var g in f.uses) {
+ g1.addEdge(f, g.target);
+ }
+ g2.addNode(f);
+ if (info.dependencies[f] != null) {
+ for (var g in info.dependencies[f]) {
+ g2.addEdge(f, g);
+ }
+ }
+ }
+
+ for (var f in info.fields) {
+ g1.addNode(f);
+ for (var g in f.uses) {
+ g1.addEdge(f, g.target);
+ }
+ g2.addNode(f);
+ if (info.dependencies[f] != null) {
+ for (var g in info.dependencies[f]) {
+ g2.addEdge(f, g);
+ }
+ }
+ }
+
+ // Note: these checks right now show that 'uses' links are computed
+ // differently than 'deps' links
+ int inUsesNotInDependencies = 0;
+ int inDependenciesNotInUses = 0;
+ _sameEdges(f) {
+ var targets1 = g1.targetsOf(f).toSet();
+ var targets2 = g2.targetsOf(f).toSet();
+ inUsesNotInDependencies += targets1.difference(targets2).length;
+ inDependenciesNotInUses += targets2.difference(targets1).length;
+ }
+
+ info.functions.forEach(_sameEdges);
+ info.fields.forEach(_sameEdges);
+ if (inUsesNotInDependencies == 0 && inDependenciesNotInUses == 0) {
+ _pass('dependency data is consistent');
+ } else {
+ _fail('inconsistencies in dependency data:\n'
+ ' $inUsesNotInDependencies edges missing from "dependencies" graph\n'
+ ' $inDependenciesNotInUses edges missing from "uses" graph');
+ }
+}
+
+// Validates that all elements are reachable from `main` in the dependency
+// graph.
+verifyDeps(AllInfo info) {
+ var graph = graphFromInfo(info);
+ var entrypoint = info.program.entrypoint;
+ var reachables = new Set.from(graph.preOrder(entrypoint));
+
+ var functionsAndFields = []
+ ..addAll(info.functions)
+ ..addAll(info.fields);
+ var unreachables =
+ functionsAndFields.where((func) => !reachables.contains(func));
+ if (unreachables.isNotEmpty) {
+ _fail('${unreachables.length} elements are unreachable from the '
+ 'entrypoint');
+ } else {
+ _pass('all elements are reachable from the entrypoint');
+ }
+}
+
+_pass(String msg) => print('\x1b[32mPASS\x1b[0m: $msg');
+_fail(String msg) => print('\x1b[31mFAIL\x1b[0m: $msg');
diff --git a/pkg/dart2js_info/bin/src/deferred_library_check.dart b/pkg/dart2js_info/bin/src/deferred_library_check.dart
new file mode 100644
index 0000000..5493c66
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/deferred_library_check.dart
@@ -0,0 +1,71 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// A command that verifies that deferred libraries split the code as expected.
+///
+/// This tool checks that the output from dart2js meets a given specification,
+/// given in a YAML file. The format of the YAML file is:
+///
+/// main:
+/// packages:
+/// - some_package
+/// - other_package
+///
+/// foo:
+/// packages:
+/// - foo
+/// - bar
+///
+/// baz:
+/// packages:
+/// - baz
+/// - quux
+///
+/// The YAML file consists of a list of declarations, one for each deferred
+/// part expected in the output. At least one of these parts must be named
+/// "main"; this is the main part that contains the program entrypoint. Each
+/// top-level part contains a list of package names that are expected to be
+/// contained in that part. Any package that is not explicitly listed is
+/// expected to be in the main part. For instance, in the example YAML above
+/// the part named "baz" is expected to contain the packages "baz" and "quux".
+///
+/// The names for parts given in the specification YAML file (besides "main")
+/// are arbitrary and just used for reporting when the output does not meet the
+/// specification.
+library dart2js_info.bin.deferred_library_check;
+
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/deferred_library_check.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:yaml/yaml.dart';
+
+import 'usage_exception.dart';
+
+/// A command that computes the diff between two info files.
+class DeferredLibraryCheck extends Command<void> with PrintUsageException {
+ final String name = "deferred_check";
+ final String description =
+ "Verify that deferred libraries are split as expected";
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 2) {
+ usageException('Missing arguments, expected: info.data manifest.yaml');
+ }
+ var info = await infoFromFile(args[0]);
+ var manifest = await manifestFromFile(args[1]);
+
+ var failures = checkDeferredLibraryManifest(info, manifest);
+ failures.forEach(print);
+ if (failures.isNotEmpty) exitCode = 1;
+ }
+}
+
+Future manifestFromFile(String fileName) async {
+ var file = await new File(fileName).readAsString();
+ return loadYaml(file);
+}
diff --git a/pkg/dart2js_info/bin/src/deferred_library_layout.dart b/pkg/dart2js_info/bin/src/deferred_library_layout.dart
new file mode 100644
index 0000000..c647344
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/deferred_library_layout.dart
@@ -0,0 +1,83 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// This tool reports how code is divided among deferred chunks.
+library dart2js_info.bin.deferred_library_layout;
+
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'usage_exception.dart';
+
+/// This tool reports how code is divided among deferred chunks.
+class DeferredLibraryLayout extends Command<void> with PrintUsageException {
+ final String name = "deferred_layout";
+ final String description = "Show how code is divided among deferred parts.";
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 1) {
+ usageException('Missing argument: info.data');
+ }
+ await _showLayout(args.first);
+ }
+}
+
+_showLayout(String file) async {
+ AllInfo info = await infoFromFile(file);
+
+ Map<OutputUnitInfo, Map<LibraryInfo, List<BasicInfo>>> hunkMembers = {};
+ Map<LibraryInfo, Set<OutputUnitInfo>> libToHunks = {};
+ void register(BasicInfo info) {
+ var unit = info.outputUnit;
+ var lib = _libOf(info);
+ if (lib == null) return;
+ libToHunks.putIfAbsent(lib, () => new Set()).add(unit);
+ hunkMembers
+ .putIfAbsent(unit, () => {})
+ .putIfAbsent(lib, () => [])
+ .add(info);
+ }
+
+ info.functions.forEach(register);
+ info.classes.forEach(register);
+ info.fields.forEach(register);
+ info.closures.forEach(register);
+
+ var dir = Directory.current.path;
+ hunkMembers.forEach((unit, map) {
+ print('Output unit ${unit.name ?? "main"}:');
+ if (unit.name == null || unit.name == 'main') {
+ print(' loaded by default');
+ } else {
+ print(' loaded by importing: ${unit.imports}');
+ }
+
+ print(' contains:');
+ map.forEach((lib, elements) {
+ var uri = lib.uri;
+ var shortUri = (uri.scheme == 'file' && uri.path.startsWith(dir))
+ ? uri.path.substring(dir.length + 1)
+ : '$uri';
+
+ // If the entire library is in one chunk, just report the library name
+ // otherwise report which functions are on this chunk.
+ if (libToHunks[lib].length == 1) {
+ print(' - $shortUri');
+ } else {
+ print(' - $shortUri:');
+ for (var e in elements) {
+ print(' - ${kindToString(e.kind)} ${e.name}');
+ }
+ }
+ });
+ print('');
+ });
+}
+
+_libOf(e) => e is LibraryInfo || e == null ? e : _libOf(e.parent);
diff --git a/pkg/dart2js_info/bin/src/deferred_library_size.dart b/pkg/dart2js_info/bin/src/deferred_library_size.dart
new file mode 100644
index 0000000..2ea7089
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/deferred_library_size.dart
@@ -0,0 +1,90 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// This tool gives a breakdown of code size by deferred part in the program.
+library dart2js_info.bin.deferred_library_size;
+
+import 'dart:math';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'usage_exception.dart';
+
+/// This tool gives a breakdown of code size by deferred part in the program.
+class DeferredLibrarySize extends Command<void> with PrintUsageException {
+ final String name = "deferred_size";
+ final String description = "Show breakdown of codesize by deferred part.";
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 1) {
+ usageException('Missing argument: info.data');
+ }
+ // TODO(het): Would be faster to only parse the 'outputUnits' part
+ var info = await infoFromFile(args.first);
+ var sizeByImport = getSizeByImport(info);
+ printSizes(sizeByImport, info.program.size);
+ }
+}
+
+class ImportSize {
+ final String import;
+ final int size;
+
+ const ImportSize(this.import, this.size);
+
+ String toString() {
+ return '$import: $size';
+ }
+}
+
+void printSizes(Map<String, int> sizeByImport, int programSize) {
+ var importSizes = <ImportSize>[];
+ sizeByImport.forEach((import, size) {
+ importSizes.add(new ImportSize(import, size));
+ });
+ // Sort by size, largest first.
+ importSizes.sort((a, b) => b.size - a.size);
+ int longest = importSizes.fold('Percent of code deferred'.length,
+ (longest, importSize) => max(longest, importSize.import.length));
+
+ _printRow(label, data, {int width: 15}) {
+ print('${label.toString().padRight(longest + 1)}'
+ '${data.toString().padLeft(width)}');
+ }
+
+ print('');
+ print('Size by library');
+ print('-' * (longest + 16));
+ for (var importSize in importSizes) {
+ // TODO(het): split into specific and shared size
+ _printRow(importSize.import, importSize.size);
+ }
+ print('-' * (longest + 16));
+
+ var mainChunkSize = sizeByImport['main'];
+ var deferredSize = programSize - mainChunkSize;
+ var percentDeferred = (deferredSize * 100 / programSize).toStringAsFixed(2);
+ _printRow('Main chunk size', mainChunkSize);
+ _printRow('Deferred code size', deferredSize);
+ _printRow('Percent of code deferred', '$percentDeferred%');
+}
+
+Map<String, int> getSizeByImport(AllInfo info) {
+ var sizeByImport = <String, int>{};
+ for (var outputUnit in info.outputUnits) {
+ if (outputUnit.name == 'main' || outputUnit.name == null) {
+ sizeByImport['main'] = outputUnit.size;
+ } else {
+ for (var import in outputUnit.imports) {
+ sizeByImport.putIfAbsent(import, () => 0);
+ sizeByImport[import] += outputUnit.size;
+ }
+ }
+ }
+ return sizeByImport;
+}
diff --git a/pkg/dart2js_info/bin/src/diff.dart b/pkg/dart2js_info/bin/src/diff.dart
new file mode 100644
index 0000000..d013349
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/diff.dart
@@ -0,0 +1,183 @@
+// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// for 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:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/diff.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'usage_exception.dart';
+
+/// A command that computes the diff between two info files.
+class DiffCommand extends Command<void> with PrintUsageException {
+ final String name = "diff";
+ final String description =
+ "See code size differences between two dump-info files.";
+
+ DiffCommand() {
+ argParser.addFlag('summary-only',
+ defaultsTo: false,
+ help: "Show only a summary and hide details of each library");
+ }
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 2) {
+ usageException(
+ 'Missing arguments, expected two dump-info files to compare');
+ return;
+ }
+
+ var oldInfo = await infoFromFile(args[0]);
+ var newInfo = await infoFromFile(args[1]);
+ var summaryOnly = argResults['summary-only'];
+
+ var diffs = diff(oldInfo, newInfo);
+
+ // Categorize the diffs
+ var adds = <AddDiff>[];
+ var removals = <RemoveDiff>[];
+ var sizeChanges = <SizeDiff>[];
+ var becameDeferred = <DeferredStatusDiff>[];
+ var becameUndeferred = <DeferredStatusDiff>[];
+
+ for (var diff in diffs) {
+ switch (diff.kind) {
+ case DiffKind.add:
+ adds.add(diff as AddDiff);
+ break;
+ case DiffKind.remove:
+ removals.add(diff as RemoveDiff);
+ break;
+ case DiffKind.size:
+ sizeChanges.add(diff as SizeDiff);
+ break;
+ case DiffKind.deferred:
+ var deferredDiff = diff as DeferredStatusDiff;
+ if (deferredDiff.wasDeferredBefore) {
+ becameUndeferred.add(deferredDiff);
+ } else {
+ becameDeferred.add(deferredDiff);
+ }
+ break;
+ }
+ }
+
+ // Sort the changes by the size of the element that changed.
+ for (var diffs in [adds, removals, becameDeferred, becameUndeferred]) {
+ diffs.sort((a, b) => b.info.size - a.info.size);
+ }
+
+ // Sort changes in size by size difference.
+ sizeChanges.sort((a, b) => b.sizeDifference - a.sizeDifference);
+
+ var totalSizes = <List<Diff>, int>{};
+ for (var diffs in [adds, removals, becameDeferred, becameUndeferred]) {
+ var totalSize = 0;
+ for (var diff in diffs) {
+ // Only count diffs from leaf elements so we don't double count
+ // them when we account for class size diff or library size diff.
+ if (diff.info.kind == InfoKind.field ||
+ diff.info.kind == InfoKind.function ||
+ diff.info.kind == InfoKind.closure ||
+ diff.info.kind == InfoKind.typedef) {
+ totalSize += diff.info.size;
+ }
+ }
+ totalSizes[diffs] = totalSize;
+ }
+ var totalSizeChange = 0;
+ for (var sizeChange in sizeChanges) {
+ // Only count diffs from leaf elements so we don't double count
+ // them when we account for class size diff or library size diff.
+ if (sizeChange.info.kind == InfoKind.field ||
+ sizeChange.info.kind == InfoKind.function ||
+ sizeChange.info.kind == InfoKind.closure ||
+ sizeChange.info.kind == InfoKind.typedef) {
+ totalSizeChange += sizeChange.sizeDifference;
+ }
+ }
+ totalSizes[sizeChanges] = totalSizeChange;
+
+ reportSummary(oldInfo, newInfo, adds, removals, sizeChanges, becameDeferred,
+ becameUndeferred, totalSizes);
+ if (!summaryOnly) {
+ print('');
+ reportFull(oldInfo, newInfo, adds, removals, sizeChanges, becameDeferred,
+ becameUndeferred, totalSizes);
+ }
+ }
+}
+
+void reportSummary(
+ AllInfo oldInfo,
+ AllInfo newInfo,
+ List<AddDiff> adds,
+ List<RemoveDiff> removals,
+ List<SizeDiff> sizeChanges,
+ List<DeferredStatusDiff> becameDeferred,
+ List<DeferredStatusDiff> becameUndeferred,
+ Map<List<Diff>, int> totalSizes) {
+ var overallSizeDiff = newInfo.program.size - oldInfo.program.size;
+ print('total_size_difference $overallSizeDiff');
+
+ print('total_added ${totalSizes[adds]}');
+ print('total_removed ${totalSizes[removals]}');
+ print('total_size_changed ${totalSizes[sizeChanges]}');
+ print('total_became_deferred ${totalSizes[becameDeferred]}');
+ print('total_no_longer_deferred ${totalSizes[becameUndeferred]}');
+}
+
+void reportFull(
+ AllInfo oldInfo,
+ AllInfo newInfo,
+ List<AddDiff> adds,
+ List<RemoveDiff> removals,
+ List<SizeDiff> sizeChanges,
+ List<DeferredStatusDiff> becameDeferred,
+ List<DeferredStatusDiff> becameUndeferred,
+ Map<List<Diff>, int> totalSizes) {
+ // TODO(het): Improve this output. Siggi has good suggestions in
+ // https://github.com/dart-lang/dart2js_info/pull/19
+
+ _section('ADDED', size: totalSizes[adds]);
+ for (var add in adds) {
+ print('${longName(add.info, useLibraryUri: true)}: ${add.info.size} bytes');
+ }
+ print('');
+
+ _section('REMOVED', size: totalSizes[removals]);
+ for (var removal in removals) {
+ print('${longName(removal.info, useLibraryUri: true)}: '
+ '${removal.info.size} bytes');
+ }
+ print('');
+
+ _section('CHANGED SIZE', size: totalSizes[sizeChanges]);
+ for (var sizeChange in sizeChanges) {
+ print('${longName(sizeChange.info, useLibraryUri: true)}: '
+ '${sizeChange.sizeDifference} bytes');
+ }
+ print('');
+
+ _section('BECAME DEFERRED', size: totalSizes[becameDeferred]);
+ for (var diff in becameDeferred) {
+ print('${longName(diff.info, useLibraryUri: true)}: '
+ '${diff.info.size} bytes');
+ }
+ print('');
+
+ _section('NO LONGER DEFERRED', size: totalSizes[becameUndeferred]);
+ for (var diff in becameUndeferred) {
+ print('${longName(diff.info, useLibraryUri: true)}: '
+ '${diff.info.size} bytes');
+ }
+}
+
+void _section(String title, {int size}) {
+ print('$title ($size bytes)');
+ print('=' * 72);
+}
diff --git a/pkg/dart2js_info/bin/src/function_size_analysis.dart b/pkg/dart2js_info/bin/src/function_size_analysis.dart
new file mode 100644
index 0000000..cb2c591
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/function_size_analysis.dart
@@ -0,0 +1,181 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Tool presenting how much each function contributes to the total code.
+library compiler.tool.function_size_analysis;
+
+import 'dart:math' as math;
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'usage_exception.dart';
+
+/// Command presenting how much each function contributes to the total code.
+class FunctionSizeCommand extends Command<void> with PrintUsageException {
+ final String name = "function_size";
+ final String description = "See breakdown of code size by function.";
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 1) {
+ usageException('Missing argument: info.data');
+ }
+ var info = await infoFromFile(args.first);
+ showCodeDistribution(info);
+ }
+}
+
+showCodeDistribution(AllInfo info,
+ {bool filter(Info info), bool showLibrarySizes: false}) {
+ var realTotal = info.program.size;
+ if (filter == null) filter = (i) => true;
+ var reported = <BasicInfo>[]
+ ..addAll(info.functions.where(filter))
+ ..addAll(info.fields.where(filter));
+
+ // Compute a graph from the dependencies in [info].
+ Graph<Info> graph = graphFromInfo(info);
+
+ // Compute the strongly connected components and calculate their size.
+ var components = graph.computeTopologicalSort();
+ print('total elements: ${graph.nodes.length}');
+ print('total strongly connected components: ${components.length}');
+ var maxS = 0;
+ var totalCount = graph.nodeCount;
+ var minS = totalCount;
+ var nodeData = {};
+ for (var scc in components) {
+ var sccData = new _SccData();
+ maxS = math.max(maxS, scc.length);
+ minS = math.min(minS, scc.length);
+ for (var f in scc) {
+ sccData.size += f.size;
+ for (var g in graph.targetsOf(f)) {
+ var gData = nodeData[g];
+ if (gData != null) sccData.deps.add(gData);
+ }
+ }
+ for (var f in scc) {
+ nodeData[f] = sccData;
+ }
+ }
+ print('scc sizes: min: $minS, max: $maxS, '
+ 'avg ${totalCount / components.length}');
+
+ // Compute a dominator tree and calculate the size dominated by each element.
+ // TODO(sigmund): we need a more reliable way to fetch main.
+ var mainMethod = info.functions.firstWhere((f) => f.name == 'main');
+ var dominatorTree = graph.dominatorTree(mainMethod);
+ var dominatedSize = {};
+ helper(n) {
+ int size = n.size;
+ assert(!dominatedSize.containsKey(n));
+ dominatedSize[n] = 0;
+ dominatorTree.targetsOf(n).forEach((m) {
+ size += helper(m);
+ });
+ dominatedSize[n] = size;
+ return size;
+ }
+
+ helper(mainMethod);
+ reported.forEach((n) => dominatedSize.putIfAbsent(n, () => n.size));
+ reported.sort((a, b) =>
+ (dominatedSize[b] + nodeData[b].maxSize) -
+ (dominatedSize[a] + nodeData[a].maxSize));
+
+ if (showLibrarySizes) {
+ print(' --- Results per library ---');
+ var totals = <LibraryInfo, int>{};
+ var longest = 0;
+ reported.forEach((info) {
+ var size = info.size;
+ while (info != null && info is! LibraryInfo) {
+ info = info.parent;
+ }
+ if (info == null) return;
+ LibraryInfo lib = info;
+ totals.putIfAbsent(lib, () => 0);
+ totals[lib] += size;
+ longest = math.max(longest, '${lib.uri}'.length);
+ });
+
+ _showLibHeader(longest + 1);
+ var reportedByLibrary = totals.keys.toList();
+ reportedByLibrary.sort((a, b) => totals[b] - totals[a]);
+ reportedByLibrary.forEach((info) {
+ _showLib('${info.uri}', totals[info], realTotal, longest + 1);
+ });
+ }
+
+ print('\n --- Results per element (field or function) ---');
+ _showElementHeader();
+ reported.forEach((info) {
+ var size = info.size;
+ var min = dominatedSize[info];
+ var max = nodeData[info].maxSize;
+ _showElement(
+ longName(info, useLibraryUri: true), size, min, max, realTotal);
+ });
+}
+
+/// Data associated with an SCC. Used to compute the reachable code size.
+class _SccData {
+ int size = 0;
+ Set deps = new Set();
+ _SccData();
+
+ int _maxSize;
+ int get maxSize {
+ compute();
+ return _maxSize;
+ }
+
+ void compute() {
+ if (_maxSize != null) return;
+ var max = 0;
+ var seen = new Set();
+ helper(n) {
+ if (!seen.add(n)) return;
+ max += n.size;
+ n.deps.forEach(helper);
+ }
+
+ helper(this);
+ _maxSize = max;
+ }
+}
+
+_showLibHeader(int namePadding) {
+ print(' ${pad("Library", namePadding, right: true)}'
+ ' ${pad("bytes", 8)} ${pad("%", 6)}');
+}
+
+_showLib(String msg, int size, int total, int namePadding) {
+ var percent = (size * 100 / total).toStringAsFixed(2);
+ print(' ${pad(msg, namePadding, right: true)}'
+ ' ${pad(size, 8)} ${pad(percent, 6)}%');
+}
+
+_showElementHeader() {
+ print('${pad("element size", 16)} '
+ '${pad("dominated size", 18)} '
+ '${pad("reachable size", 18)} '
+ 'Element identifier');
+}
+
+_showElement(String name, int size, int dominatedSize, int maxSize, int total) {
+ var percent = (size * 100 / total).toStringAsFixed(2);
+ var minPercent = (dominatedSize * 100 / total).toStringAsFixed(2);
+ var maxPercent = (maxSize * 100 / total).toStringAsFixed(2);
+ print('${pad(size, 8)} ${pad(percent, 6)}% '
+ '${pad(dominatedSize, 10)} ${pad(minPercent, 6)}% '
+ '${pad(maxSize, 10)} ${pad(maxPercent, 6)}% '
+ '$name');
+}
diff --git a/pkg/dart2js_info/bin/src/inject_text.dart b/pkg/dart2js_info/bin/src/inject_text.dart
new file mode 100644
index 0000000..8dfe157
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/inject_text.dart
@@ -0,0 +1,40 @@
+// 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:dart2js_info/info.dart';
+
+/// Modify [info] to fill in the text of code spans.
+///
+/// By default, code spans contains the offsets but omit the text
+/// (`CodeSpan.text` is null). This function reads the output files emitted by
+/// dart2js to extract the code denoted by each span.
+void injectText(AllInfo info) {
+ // Fill the text of each code span. The binary form produced by dart2js
+ // produces code spans, but excludes the orignal text
+ info.functions.forEach((f) {
+ f.code.forEach((span) => _fillSpan(span, f.outputUnit));
+ });
+ info.fields.forEach((f) {
+ f.code.forEach((span) => _fillSpan(span, f.outputUnit));
+ });
+ info.constants.forEach((c) {
+ c.code.forEach((span) => _fillSpan(span, c.outputUnit));
+ });
+}
+
+Map<String, String> _cache = {};
+
+_getContents(OutputUnitInfo unit) => _cache.putIfAbsent(unit.filename, () {
+ var uri = Uri.base.resolve(unit.filename);
+ return new File.fromUri(uri).readAsStringSync();
+ });
+
+_fillSpan(CodeSpan span, OutputUnitInfo unit) {
+ if (span.text == null && span.start != null && span.end != 0) {
+ var contents = _getContents(unit);
+ span.text = contents.substring(span.start, span.end);
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/library_size_split.dart b/pkg/dart2js_info/bin/src/library_size_split.dart
new file mode 100644
index 0000000..1d252c4
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/library_size_split.dart
@@ -0,0 +1,230 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Command-line tool to show the size distribution of generated code among
+/// libraries. Libraries can be grouped using regular expressions. You can
+/// specify what regular expressions to use by providing a `grouping.yaml` file.
+/// The format of the `grouping.yaml` file is as follows:
+/// ```yaml
+/// groups:
+/// - { regexp: "package:(foo)/*.dart", name: "group name 1", cluster: 2}
+/// - { regexp: "dart:.*", name: "group name 2", cluster: 3}
+/// ```
+/// The file should include a single key `groups` containing a list of group
+/// specifications. Each group is specified by a map of 3 entries:
+///
+/// * regexp (required): a regexp used to match entries that belong to the
+/// group.
+///
+/// * name (optional): the name given to this group in the output table. If
+/// omitted, the name is derived from the regexp as the match's group(1) or
+/// group(0) if no group was defined. When names are omitted the group
+/// specification implicitly defines several groups, one per observed name.
+///
+/// * cluster (optional): a clustering index for how data is shown in a table.
+/// Groups with higher cluster indices are shown later in the table after a
+/// dividing line. If missing, the cluster index defaults to 0.
+///
+/// Here is an example configuration, with comments about what each entry does:
+///
+/// ```yaml
+/// groups:
+/// # This group shows the total size for all libraries that were loaded from
+/// # file:// urls, it is shown in cluster #2, which happens to be the last
+/// # cluster in this example before the totals are shown:
+/// - { name: "Loose files", regexp: "file://.*", cluster: 2}
+///
+/// # This group shows the total size of all code loaded from packages:
+/// - { name: "All packages", regexp: "package:.*", cluster: 2}
+///
+/// # This group shows the total size of all code loaded from core libraries:
+/// - { name: "Core libs", regexp: "dart:.*", cluster: 2}
+///
+/// # This group shows the total size of all libraries in a single package. Here
+/// # we omitted the `name` entry, instead we extract it from the regexp
+/// # directly. In this case, the name will be the package-name portion of the
+/// # package-url (determined by group(1) of the regexp).
+/// - { regexp: "package:([^/]*)", cluster: 1}
+///
+/// # The next two groups match the entire library url as the name of the group.
+/// - regexp: "package:.*"
+/// - regexp: "dart:.*"
+///
+/// # If your code lives under /my/project/dir, this will match any file loaded
+/// from a file:// url, and we use as a name the relative path to it.
+/// - regexp: "file:///my/project/dir/(.*)"
+///```
+///
+/// This example is very similar to [defaultGrouping].
+library dart2js_info.bin.library_size_split;
+
+import 'dart:io';
+import 'dart:math' show max;
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:yaml/yaml.dart';
+
+import 'usage_exception.dart';
+
+/// Command presenting how much each library contributes to the total code.
+class LibrarySizeCommand extends Command<void> with PrintUsageException {
+ final String name = "library_size";
+ final String description = "See breakdown of code size by library.";
+
+ LibrarySizeCommand() {
+ argParser.addOption('grouping',
+ help: 'YAML file specifying how libraries should be grouped.');
+ }
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 1) {
+ usageException('Missing argument: info.data');
+ print('usage: dart tool/library_size_split.dart '
+ 'path-to-info.json [grouping.yaml]');
+ exit(1);
+ }
+
+ var info = await infoFromFile(args.first);
+
+ var groupingFile = argResults['grouping'];
+ var groupingText = groupingFile != null
+ ? new File(groupingFile).readAsStringSync()
+ : defaultGrouping;
+ var groupingYaml = loadYaml(groupingText);
+ var groups = [];
+ for (var group in groupingYaml['groups']) {
+ groups.add(new _Group(
+ group['name'], new RegExp(group['regexp']), group['cluster'] ?? 0));
+ }
+
+ var sizes = {};
+ var allLibs = 0;
+ for (LibraryInfo lib in info.libraries) {
+ allLibs += lib.size;
+ groups.forEach((group) {
+ var match = group.matcher.firstMatch('${lib.uri}');
+ if (match != null) {
+ var name = group.name;
+ if (name == null && match.groupCount > 0) name = match.group(1);
+ if (name == null) name = match.group(0);
+ sizes.putIfAbsent(name, () => new _SizeEntry(name, group.cluster));
+ sizes[name].size += lib.size;
+ }
+ });
+ }
+
+ var allConstants = 0;
+ for (var constant in info.constants) {
+ allConstants += constant.size;
+ }
+
+ var all = sizes.keys.toList();
+ all.sort((a, b) => sizes[a].compareTo(sizes[b]));
+ var realTotal = info.program.size;
+ var longest = 0;
+ var rows = <_Row>[];
+ _addRow(String label, int value) {
+ rows.add(new _Row(label, value));
+ longest = max(longest, label.length);
+ }
+
+ _printRow(_Row row) {
+ if (row is _Divider) {
+ print(' ' + ('-' * (longest + 18)));
+ return;
+ }
+
+ var percent = row.value == realTotal
+ ? '100'
+ : (row.value * 100 / realTotal).toStringAsFixed(2);
+ print(' ${_pad(row.label, longest + 1, right: true)}'
+ ' ${_pad(row.value, 8)} ${_pad(percent, 6)}%');
+ }
+
+ var lastCluster = 0;
+ for (var name in all) {
+ var entry = sizes[name];
+ if (lastCluster < entry.cluster) {
+ rows.add(const _Divider());
+ lastCluster = entry.cluster;
+ }
+ var size = entry.size;
+ _addRow(name, size);
+ }
+ rows.add(const _Divider());
+ _addRow("All libraries (excludes preambles, statics & consts)", allLibs);
+ _addRow("Shared consts", allConstants);
+ _addRow("Total accounted", allLibs + allConstants);
+ _addRow("Program Size", realTotal);
+ rows.forEach(_printRow);
+ }
+}
+
+/// A group defined in the configuration.
+class _Group {
+ /// Name of the group. May be null if the name is derived from the matcher. In
+ /// that case, the name would be group(1) of the matched expression if it
+ /// exist, or group(0) otherwise.
+ final String name;
+
+ /// Regular expression matching members of the group.
+ final RegExp matcher;
+
+ /// Index used to cluster groups together. Useful when the grouping
+ /// configuration describes some coarser groups than orders (e.g. summary of
+ /// packages would be in a different cluster than a summary of libraries).
+ final int cluster;
+
+ _Group(this.name, this.matcher, this.cluster);
+}
+
+class _SizeEntry {
+ final String name;
+ final int cluster;
+ int size = 0;
+
+ _SizeEntry(this.name, this.cluster);
+
+ int compareTo(_SizeEntry other) =>
+ cluster == other.cluster ? size - other.size : cluster - other.cluster;
+}
+
+class _Row {
+ final String label;
+ final int value;
+ const _Row(this.label, this.value);
+}
+
+class _Divider extends _Row {
+ const _Divider() : super('', 0);
+}
+
+_pad(value, n, {bool right: false}) {
+ var s = '$value';
+ if (s.length >= n) return s;
+ var pad = ' ' * (n - s.length);
+ return right ? '$s$pad' : '$pad$s';
+}
+
+/// Default grouping specification that includes an entry per library, and
+/// grouping entries for each package, all packages, all core libs, and loose
+/// files.
+final defaultGrouping = """
+groups:
+- { name: "Loose files", regexp: "file://.*", cluster: 2}
+- { name: "All packages", regexp: "package:.*", cluster: 2}
+- { name: "Core libs", regexp: "dart:.*", cluster: 2}
+# We omitted `name` to extract the group name from the regexp directly.
+# Here the name is the name of the package:
+- { regexp: "package:([^/]*)", cluster: 1}
+# Here the name is the url of the package and dart core libraries:
+- { regexp: "package:.*"}
+- { regexp: "dart:.*"}
+# Here the name is the relative path of loose files:
+- { regexp: "file://${Directory.current.path}/(.*)" }
+""";
diff --git a/pkg/dart2js_info/bin/src/live_code_size_analysis.dart b/pkg/dart2js_info/bin/src/live_code_size_analysis.dart
new file mode 100644
index 0000000..77c02fd
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/live_code_size_analysis.dart
@@ -0,0 +1,138 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Command-line tool presenting combined information from dump-info and
+/// coverage data.
+///
+/// This tool requires two input files an `.info.json` and a
+/// `.coverage.json` file. To produce these files you need to follow these
+/// steps:
+///
+/// * Compile an app with dart2js using --dump-info and defining the
+/// Dart environment `traceCalls=post`:
+///
+/// DART_VM_OPTIONS="-DtraceCalls=post" dart2js --dump-info main.dart
+///
+/// Because coverage/tracing data is currently experimental, the feature is
+/// not exposed as a flag in dart2js, but you can enable it using the Dart
+/// environment flag. The flag only works dart2js version 1.13.0 or newer.
+///
+/// * Launch the coverage server tool (in this package) to serve up the
+/// Javascript code in your app:
+///
+/// dart tool/coverage_log_server.dart main.dart.js
+///
+/// * (optional) If you have a complex application setup, integrate your
+/// application server to proxy to the log server any GET request for the
+/// .dart.js file and /coverage POST requests that send coverage data.
+///
+/// * Load your app and use it to exercise the entire code.
+///
+/// * Shut down the coverage server (Ctrl-C)
+///
+/// * Finally, run this tool.
+library compiler.tool.live_code_size_analysis;
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'function_size_analysis.dart';
+import 'usage_exception.dart';
+
+class LiveCodeAnalysisCommand extends Command<void> with PrintUsageException {
+ final String name = "coverage_analysis";
+ final String description = "Analyze coverage data collected via the"
+ " 'coverage_server' command";
+
+ LiveCodeAnalysisCommand() {
+ argParser.addFlag('verbose',
+ abbr: 'v', negatable: false, help: 'Show verbose details.');
+ }
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 2) {
+ usageException('Missing arguments, expected: info.data coverage.json');
+ }
+ await _liveCodeAnalysis(args[0], args[1], argResults['verbose']);
+ }
+}
+
+_liveCodeAnalysis(infoFile, coverageFile, bool verbose) async {
+ var info = await infoFromFile(infoFile);
+ var coverage = jsonDecode(new File(coverageFile).readAsStringSync());
+
+ int realTotal = info.program.size;
+ int totalLib = info.libraries.fold(0, (n, lib) => n + lib.size);
+
+ int totalCode = 0;
+ int reachableCode = 0;
+ List<Info> unused = [];
+
+ void tallyCode(Info f) {
+ totalCode += f.size;
+
+ var data = coverage[f.coverageId];
+ if (data != null) {
+ // Validate that the name match, it might not match if using a different
+ // version of the app.
+ // TODO(sigmund): use the same name.
+ // TODO(sigmund): inject a time-stamp in the code and dumpinfo and
+ // validate just once.
+ var name = f.name;
+ if (name.contains('.')) name = name.substring(name.lastIndexOf('.') + 1);
+ var otherName = data['name'];
+ if (otherName.contains('.')) {
+ otherName = otherName.substring(otherName.lastIndexOf('.') + 1);
+ }
+ if (otherName != name && otherName != '') {
+ print('invalid coverage: $data for $f, ($name vs $otherName)');
+ }
+ reachableCode += f.size;
+ } else {
+ // we should track more precisely data about inlined functions
+ unused.add(f);
+ }
+ }
+
+ info.functions.forEach(tallyCode);
+ info.fields.forEach(tallyCode);
+
+ _showHeader('', 'bytes', '%');
+ _show('Program size', realTotal, realTotal);
+ _show('Libraries (excluding statics)', totalLib, realTotal);
+ _show('Code (functions + fields)', totalCode, realTotal);
+ _show('Reachable code', reachableCode, realTotal);
+
+ print('');
+ _showHeader('', 'count', '%');
+ var total = info.functions.length + info.fields.length;
+ _show('Functions + fields', total, total);
+ _show('Reachable', total - unused.length, total);
+
+ // TODO(sigmund): support grouping results by package.
+ if (verbose) {
+ print('\nDistribution of code that was not used when running the app:');
+ showCodeDistribution(info,
+ filter: (f) => !coverage.containsKey(f.coverageId) && f.size > 0,
+ showLibrarySizes: true);
+ } else {
+ print('\nUse `-v` to see details about the size of unreachable code');
+ }
+}
+
+_showHeader(String msg, String header1, String header2) {
+ print(' ${pad(msg, 30, right: true)} ${pad(header1, 8)} ${pad(header2, 6)}');
+}
+
+_show(String msg, int size, int total) {
+ var percent = (size * 100 / total).toStringAsFixed(2);
+ print(' ${pad(msg, 30, right: true)} ${pad(size, 8)} ${pad(percent, 6)}%');
+}
diff --git a/pkg/dart2js_info/bin/src/show_inferred_types.dart b/pkg/dart2js_info/bin/src/show_inferred_types.dart
new file mode 100644
index 0000000..521af34
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/show_inferred_types.dart
@@ -0,0 +1,69 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Simple script that shows the inferred types of a function.
+library compiler.tool.show_inferred_types;
+
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'usage_exception.dart';
+
+class ShowInferredTypesCommand extends Command<void> with PrintUsageException {
+ final String name = "show_inferred";
+ final String description = "Show data inferred by dart2js global inference";
+
+ ShowInferredTypesCommand() {
+ argParser.addFlag('long-names',
+ abbr: 'l', negatable: false, help: 'Show long qualified names.');
+ }
+
+ void run() async {
+ var args = argResults.rest;
+ if (args.length < 2) {
+ usageException(
+ 'Missing arguments, expected: info.data <function-name-regex>');
+ }
+ _showInferredTypes(args[0], args[1], argResults['long-names']);
+ }
+}
+
+_showInferredTypes(String infoFile, String pattern, bool showLongName) async {
+ var info = await infoFromFile(infoFile);
+ var nameRegExp = new RegExp(pattern);
+ matches(e) => nameRegExp.hasMatch(longName(e));
+
+ bool noResults = true;
+ void showMethods() {
+ var sources = info.functions.where(matches).toList();
+ if (sources.isEmpty) return;
+ noResults = false;
+ for (var s in sources) {
+ var params = s.parameters.map((p) => '${p.name}: ${p.type}').join(', ');
+ var name = showLongName ? longName(s) : s.name;
+ print('$name($params): ${s.returnType}');
+ }
+ }
+
+ void showFields() {
+ var sources = info.fields.where(matches).toList();
+ if (sources.isEmpty) return;
+ noResults = false;
+ for (var s in sources) {
+ var name = showLongName ? longName(s) : s.name;
+ print('$name: ${s.inferredType}');
+ }
+ }
+
+ showMethods();
+ showFields();
+ if (noResults) {
+ print('error: no function or field that matches $pattern was found.');
+ exit(1);
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/text_print.dart b/pkg/dart2js_info/bin/src/text_print.dart
new file mode 100644
index 0000000..a38cd55
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/text_print.dart
@@ -0,0 +1,210 @@
+// 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:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'inject_text.dart';
+import 'usage_exception.dart';
+
+/// Shows the contents of an info file as text.
+class ShowCommand extends Command<void> with PrintUsageException {
+ final String name = "show";
+ final String description = "Show a text representation of the info file.";
+
+ ShowCommand() {
+ argParser.addOption('out',
+ abbr: 'o', help: 'Output file (defauts to stdout)');
+
+ argParser.addFlag('inject-text',
+ negatable: false,
+ help: 'Whether to inject output code snippets.\n\n'
+ 'By default dart2js produces code spans, but excludes the text. This\n'
+ 'option can be used to embed the text directly in the output.');
+ }
+
+ void run() async {
+ if (argResults.rest.length < 1) {
+ usageException('Missing argument: <input-info>');
+ }
+
+ String filename = argResults.rest[0];
+ AllInfo info = await infoFromFile(filename);
+ if (argResults['inject-text']) injectText(info);
+
+ var buffer = new StringBuffer();
+ info.accept(new TextPrinter(buffer, argResults['inject-text']));
+ var outputPath = argResults['out'];
+ if (outputPath == null) {
+ print(buffer);
+ } else {
+ new File(outputPath).writeAsStringSync('$buffer');
+ }
+ }
+}
+
+class TextPrinter implements InfoVisitor<void> {
+ final StringBuffer buffer;
+ final bool injectText;
+
+ TextPrinter(this.buffer, this.injectText);
+
+ int _indent = 0;
+ String get _textIndent => " " * _indent;
+ void _writeIndentation() {
+ buffer.write(_textIndent);
+ }
+
+ void _writeIndented(String s) {
+ _writeIndentation();
+ buffer.writeln(s.replaceAll('\n', '\n$_textIndent'));
+ }
+
+ void _writeBlock(String s, void f()) {
+ _writeIndented("$s");
+ _indent++;
+ f();
+ _indent--;
+ }
+
+ void visitAll(AllInfo info) {
+ _writeBlock("Summary data", () => visitProgram(info.program));
+ buffer.writeln();
+ _writeBlock("Libraries", () => info.libraries.forEach(visitLibrary));
+ // Note: classes, functions, typedefs, and fields are group;ed by library.
+
+ if (injectText) {
+ _writeBlock("Constants", () => info.constants.forEach(visitConstant));
+ } else {
+ int size = info.constants.fold(0, (n, c) => n + c.size);
+ _writeIndented("All constants: ${_size(size)}");
+ }
+ _writeBlock("Output units", () => info.outputUnits.forEach(visitOutput));
+ }
+
+ void visitProgram(ProgramInfo info) {
+ _writeIndented('main: ${longName(info.entrypoint, useLibraryUri: true)}');
+ _writeIndented('size: ${info.size}');
+ _writeIndented('dart2js-version: ${info.dart2jsVersion}');
+ var features = [];
+ if (info.noSuchMethodEnabled) features.add('no-such-method');
+ if (info.isRuntimeTypeUsed) features.add('runtime-type');
+ if (info.isFunctionApplyUsed) features.add('function-apply');
+ if (info.minified) features.add('minified');
+ if (features.isNotEmpty) {
+ _writeIndented('features: ${features.join(' ')}');
+ }
+ }
+
+ String _size(int size) {
+ if (size < 1024) return "$size b";
+ if (size < (1024 * 1024)) {
+ return "${(size / 1024).toStringAsFixed(2)} Kb ($size b)";
+ }
+ return "${(size / (1024 * 1024)).toStringAsFixed(2)} Mb ($size b)";
+ }
+
+ void visitLibrary(LibraryInfo info) {
+ _writeBlock('${info.uri}: ${_size(info.size)}', () {
+ if (info.topLevelFunctions.isNotEmpty) {
+ _writeBlock('Top-level functions',
+ () => info.topLevelFunctions.forEach(visitFunction));
+ buffer.writeln();
+ }
+ if (info.topLevelVariables.isNotEmpty) {
+ _writeBlock('Top-level variables',
+ () => info.topLevelVariables.forEach(visitField));
+ buffer.writeln();
+ }
+ if (info.classes.isNotEmpty) {
+ _writeBlock('Classes', () => info.classes.forEach(visitClass));
+ }
+ if (info.typedefs.isNotEmpty) {
+ _writeBlock("Typedefs", () => info.typedefs.forEach(visitTypedef));
+ buffer.writeln();
+ }
+ buffer.writeln();
+ });
+ }
+
+ void visitClass(ClassInfo info) {
+ _writeBlock(
+ '${info.name}: ${_size(info.size)} [${info.outputUnit.filename}]', () {
+ if (info.functions.isNotEmpty) {
+ _writeBlock('Methods:', () => info.functions.forEach(visitFunction));
+ }
+ if (info.fields.isNotEmpty) {
+ _writeBlock('Fields:', () => info.fields.forEach(visitField));
+ }
+ if (info.functions.isNotEmpty || info.fields.isNotEmpty) buffer.writeln();
+ });
+ }
+
+ void visitField(FieldInfo info) {
+ _writeBlock('${info.type} ${info.name}: ${_size(info.size)}', () {
+ _writeIndented('inferred type: ${info.inferredType}');
+ if (injectText) _writeBlock("code:", () => _writeCode(info.code));
+ if (info.closures.isNotEmpty) {
+ _writeBlock('Closures:', () => info.closures.forEach(visitClosure));
+ }
+ if (info.uses.isNotEmpty) {
+ _writeBlock('Dependencies:', () => info.uses.forEach(showDependency));
+ }
+ });
+ }
+
+ void visitFunction(FunctionInfo info) {
+ var outputUnitFile = '';
+ if (info.functionKind == FunctionInfo.TOP_LEVEL_FUNCTION_KIND) {
+ outputUnitFile = ' [${info.outputUnit.filename}]';
+ }
+ String params =
+ info.parameters.map((p) => "${p.declaredType} ${p.name}").join(', ');
+ _writeBlock(
+ '${info.returnType} ${info.name}($params): ${_size(info.size)}$outputUnitFile',
+ () {
+ String params = info.parameters.map((p) => "${p.type}").join(', ');
+ _writeIndented('declared type: ${info.type}');
+ _writeIndented(
+ 'inferred type: ${info.inferredReturnType} Function($params)');
+ _writeIndented('side effects: ${info.sideEffects}');
+ if (injectText) _writeBlock("code:", () => _writeCode(info.code));
+ if (info.closures.isNotEmpty) {
+ _writeBlock('Closures:', () => info.closures.forEach(visitClosure));
+ }
+ if (info.uses.isNotEmpty) {
+ _writeBlock('Dependencies:', () => info.uses.forEach(showDependency));
+ }
+ });
+ }
+
+ void showDependency(DependencyInfo info) {
+ var mask = info.mask ?? '';
+ _writeIndented('- ${longName(info.target, useLibraryUri: true)} $mask');
+ }
+
+ void visitTypedef(TypedefInfo info) {
+ _writeIndented('${info.name}: ${info.type}');
+ }
+
+ void visitClosure(ClosureInfo info) {
+ _writeBlock('${info.name}', () => visitFunction(info.function));
+ }
+
+ void visitConstant(ConstantInfo info) {
+ _writeBlock('${_size(info.size)}:', () => _writeCode(info.code));
+ }
+
+ void _writeCode(List<CodeSpan> code) {
+ _writeIndented(code.map((c) => c.text).join('\n'));
+ }
+
+ void visitOutput(OutputUnitInfo info) {
+ _writeIndented('${info.filename}: ${_size(info.size)}');
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/to_binary.dart b/pkg/dart2js_info/bin/src/to_binary.dart
new file mode 100644
index 0000000..1d90ed2
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/to_binary.dart
@@ -0,0 +1,35 @@
+// 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:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/binary_serialization.dart' as binary;
+import 'package:dart2js_info/src/io.dart';
+
+import 'inject_text.dart';
+import 'usage_exception.dart';
+
+/// Converts a dump-info file emitted by dart2js in JSON to binary format.
+class ToBinaryCommand extends Command<void> with PrintUsageException {
+ final String name = "to_binary";
+ final String description = "Convert any info file to binary format.";
+
+ void run() async {
+ if (argResults.rest.length < 1) {
+ usageException('Missing argument: <input-info>');
+ exit(1);
+ }
+
+ String filename = argResults.rest[0];
+ AllInfo info = await infoFromFile(filename);
+ if (argResults['inject-text']) injectText(info);
+ String outputFilename = argResults['out'] ?? '$filename.data';
+ var outstream = new File(outputFilename).openWrite();
+ binary.encode(info, outstream);
+ await outstream.done;
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/to_json.dart b/pkg/dart2js_info/bin/src/to_json.dart
new file mode 100644
index 0000000..fff4d34
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/to_json.dart
@@ -0,0 +1,54 @@
+// 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 'dart:convert';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'inject_text.dart';
+import 'usage_exception.dart';
+
+/// Converts a dump-info file emitted by dart2js in binary format to JSON.
+class ToJsonCommand extends Command<void> with PrintUsageException {
+ final String name = "to_json";
+ final String description = "Convert any info file to JSON format.";
+
+ ToJsonCommand() {
+ argParser.addFlag('compat-mode',
+ negatable: false,
+ help: 'Whether to generate an older version of the JSON format.\n\n'
+ 'By default files are converted to the latest JSON format, but\n'
+ 'passing `--compat-mode` will produce a JSON file that may still\n'
+ 'work in the visualizer tool at:\n'
+ 'https://dart-lang.github.io/dump-info-visualizer/.\n\n'
+ 'This option enables `--inject-text` as well, but note that\n'
+ 'files produced in this mode do not contain all the data\n'
+ 'available in the input file.');
+ }
+
+ void run() async {
+ if (argResults.rest.length < 1) {
+ usageException('Missing argument: <input-info>');
+ }
+
+ String filename = argResults.rest[0];
+ bool isBackwardCompatible = argResults['compat-mode'];
+ AllInfo info = await infoFromFile(filename);
+
+ if (isBackwardCompatible || argResults['inject-text']) {
+ injectText(info);
+ }
+
+ var json = new AllInfoJsonCodec(isBackwardCompatible: isBackwardCompatible)
+ .encode(info);
+ String outputFilename = argResults['out'] ?? '$filename.json';
+ new File(outputFilename)
+ .writeAsStringSync(const JsonEncoder.withIndent(" ").convert(json));
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/to_proto.dart b/pkg/dart2js_info/bin/src/to_proto.dart
new file mode 100644
index 0000000..fcbfaa8
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/to_proto.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Command-line tool to convert an info.json file ouputted by dart2js to the
+/// alternative protobuf format.
+
+import 'dart:io';
+
+import 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/proto_info_codec.dart';
+import 'package:dart2js_info/src/io.dart';
+
+import 'inject_text.dart';
+import 'usage_exception.dart';
+
+/// Converts a dump-info file emitted by dart2js to the proto format
+class ToProtoCommand extends Command<void> with PrintUsageException {
+ final String name = "to_proto";
+ final String description = "Convert any info file to proto format.";
+
+ void run() async {
+ if (argResults.rest.length < 1) {
+ usageException('Missing argument: <input-info>');
+ exit(1);
+ }
+
+ String filename = argResults.rest[0];
+ final info = await infoFromFile(filename);
+ if (argResults['inject-text']) injectText(info);
+ final proto = new AllInfoProtoCodec().encode(info);
+ String outputFilename = argResults['out'] ?? '$filename.pb';
+ final outputFile = new File(outputFilename);
+ await outputFile.writeAsBytes(proto.writeToBuffer(), mode: FileMode.write);
+ }
+}
diff --git a/pkg/dart2js_info/bin/src/usage_exception.dart b/pkg/dart2js_info/bin/src/usage_exception.dart
new file mode 100644
index 0000000..4499da3
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/usage_exception.dart
@@ -0,0 +1,16 @@
+// 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:args/command_runner.dart';
+
+abstract class PrintUsageException implements Command<void> {
+ // TODO(rnystrom): Use "Never" for the return type when this package is
+ // migrated to null safety.
+ usageException(String message) {
+ print(message);
+ printUsage();
+ exit(1);
+ }
+}
diff --git a/pkg/dart2js_info/bin/tools.dart b/pkg/dart2js_info/bin/tools.dart
new file mode 100644
index 0000000..40495a8
--- /dev/null
+++ b/pkg/dart2js_info/bin/tools.dart
@@ -0,0 +1,39 @@
+// 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:args/command_runner.dart';
+
+import 'src/code_deps.dart';
+import 'src/coverage_log_server.dart';
+import 'src/debug_info.dart';
+import 'src/diff.dart';
+import 'src/deferred_library_check.dart';
+import 'src/deferred_library_size.dart';
+import 'src/deferred_library_layout.dart';
+import 'src/convert.dart';
+import 'src/function_size_analysis.dart';
+import 'src/library_size_split.dart';
+import 'src/live_code_size_analysis.dart';
+import 'src/show_inferred_types.dart';
+import 'src/text_print.dart';
+
+/// Entrypoint to run all dart2js_info tools.
+void main(args) {
+ var commandRunner = new CommandRunner("dart2js_info",
+ "collection of tools to digest the output of dart2js's --dump-info")
+ ..addCommand(new CodeDepsCommand())
+ ..addCommand(new CoverageLogServerCommand())
+ ..addCommand(new DebugCommand())
+ ..addCommand(new DiffCommand())
+ ..addCommand(new DeferredLibraryCheck())
+ ..addCommand(new DeferredLibrarySize())
+ ..addCommand(new DeferredLibraryLayout())
+ ..addCommand(new ConvertCommand())
+ ..addCommand(new FunctionSizeCommand())
+ ..addCommand(new LibrarySizeCommand())
+ ..addCommand(new LiveCodeAnalysisCommand())
+ ..addCommand(new ShowInferredTypesCommand())
+ ..addCommand(new ShowCommand());
+ commandRunner.run(args);
+}
diff --git a/pkg/dart2js_info/info.proto b/pkg/dart2js_info/info.proto
new file mode 100644
index 0000000..b8e8f09
--- /dev/null
+++ b/pkg/dart2js_info/info.proto
@@ -0,0 +1,267 @@
+syntax = "proto3";
+
+option go_package = "dart2js_info";
+
+package dart2js_info.proto;
+
+message DependencyInfoPB {
+ /** The dependency element's serialized_id, references as FunctionInfo or FieldInfo. */
+ string target_id = 1;
+
+ /** Either a selector mask indicating how this is used, or 'inlined'. */
+ string mask = 2;
+}
+
+/** The entire information produced when compiling a program. */
+message AllInfoPB {
+ /** Summary information about the program. */
+ ProgramInfoPB program = 1;
+
+ /** All the recorded information about elements processed by the compiler. */
+ map<string, InfoPB> all_infos = 2;
+
+ /** Details about all deferred imports and what files would be loaded when the import is resolved. */
+ repeated LibraryDeferredImportsPB deferred_imports = 3;
+}
+
+/*
+ * Common interface to many pieces of information generated by the dart2js
+ * compiler that are directly associated with an element (compilation unit,
+ * library, class, function, or field).
+ */
+message InfoPB {
+ /** Name of the element associated with this info. */
+ string name = 1;
+
+ /** An id to uniquely identify this info among infos of the same kind. */
+ int32 id = 2;
+
+ /** A globally unique id which combines kind and id together. */
+ string serialized_id = 3;
+
+ /** Id used by the compiler when instrumenting code for code coverage. */
+ string coverage_id = 4;
+
+ /** Bytes used in the generated code for the corresponding element. */
+ int32 size = 5;
+
+ /** The serialized_id of the enclosing element. */
+ string parent_id = 6;
+
+ /** How does this function or field depend on others. */
+ repeated DependencyInfoPB uses = 7;
+
+ /** The serialized_id of the output unit the element is generated into. */
+ string output_unit_id = 8;
+
+ /** Reserved tags for future common fields. */
+ reserved 9 to 99;
+
+ /** The concrete info type. */
+ oneof concrete {
+ /** Information about a library element. */
+ LibraryInfoPB library_info = 100;
+
+ /** Information about a class element. */
+ ClassInfoPB class_info = 101;
+
+ /** Information about a function element. */
+ FunctionInfoPB function_info = 102;
+
+ /** Information about a field element. */
+ FieldInfoPB field_info = 103;
+
+ /** Information about a constant element. */
+ ConstantInfoPB constant_info = 104;
+
+ /** Information about an output unit element. */
+ OutputUnitInfoPB output_unit_info = 105;
+
+ /** Information about a typedef element. */
+ TypedefInfoPB typedef_info = 106;
+
+ /** Information about a closure element. */
+ ClosureInfoPB closure_info = 107;
+ }
+}
+
+/** General metadata about the dart2js invocation. */
+message ProgramInfoPB {
+ /** serialized_id for the entrypoint FunctionInfo. */
+ string entrypoint_id = 1;
+
+ /** The overall size of the dart2js binary. */
+ int32 size = 2;
+
+ /** The version of dart2js used to compile the program. */
+ string dart2js_version = 3;
+
+ /** The time at which the compilation was performed in microseconds since epoch. */
+ int64 compilation_moment = 4;
+
+ /** The amount of time spent compiling the program in microseconds. */
+ int64 compilation_duration = 5;
+
+ /** The amount of time spent converting the info to protobuf in microseconds. */
+ int64 to_proto_duration = 6;
+
+ /** The amount of time spent writing out the serialized info in microseconds. */
+ int64 dump_info_duration = 7;
+
+ /** true if noSuchMethod is used. */
+ bool no_such_method_enabled = 8;
+
+ /** True if Object.runtimeType is used. */
+ bool is_runtime_type_used = 9;
+
+ /** True if dart:isolate library is used. */
+ bool is_isolate_used = 10;
+
+ /** True if Function.apply is used. */
+ bool is_function_apply_used = 11;
+
+ /** True if dart:mirrors features are used. */
+ bool is_mirrors_used = 12;
+
+ /** Whether the resulting dart2js binary is minified. */
+ bool minified = 13;
+}
+
+/** Info associated with a library element. */
+message LibraryInfoPB {
+ /** The canonical uri that identifies the library. */
+ string uri = 1;
+
+ /** The serialized_ids of all FunctionInfo, FieldInfo, ClassInfo and TypedefInfo elements that are defined in the library. */
+ repeated string children_ids = 2;
+}
+
+/**
+ * Information about an output unit. Normally there is just one for the entire
+ * program unless the application uses deferred imports, in which case there
+ * would be an additional output unit per deferred chunk.
+ */
+message OutputUnitInfoPB {
+ /** The deferred imports that will load this output unit. */
+ repeated string imports = 1;
+}
+
+/** Information about a class element. */
+message ClassInfoPB {
+ /** Whether the class is abstract. */
+ bool is_abstract = 1;
+
+ /** The serialized_ids of all FunctionInfo and FieldInfo elements defined in the class. */
+ repeated string children_ids = 2;
+}
+
+/** Information about a constant value. */
+message ConstantInfoPB {
+ /** The actual generated code for the constant. */
+ string code = 1;
+}
+
+/** Information about a field element. */
+message FieldInfoPB {
+ /** The type of the field. */
+ string type = 1;
+
+ /** The type inferred by dart2js's whole program analysis. */
+ string inferred_type = 2;
+
+ /** The serialized_ids of all ClosureInfo elements nested in the field initializer. */
+ repeated string children_ids = 3;
+
+ /** The actual generated code for the field. */
+ string code = 4;
+
+ /** Whether the field is a const declaration. */
+ bool is_const = 5;
+
+ /** When isConst is true, the serialized_id of the ConstantInfo initializer expression. */
+ string initializer_id = 6;
+}
+
+/** Information about a typedef declaration. */
+message TypedefInfoPB {
+ /** The declared type. */
+ string type = 1;
+}
+
+/** Available function modifiers. */
+message FunctionModifiersPB {
+ /** Whether the function is declared as static. */
+ bool is_static = 1;
+
+ /** Whether the function is declared as const. */
+ bool is_const = 2;
+
+ /** Whether the function is a factory constructor. */
+ bool is_factory = 3;
+
+ /** Whether the function is declared as extern. */
+ bool is_external = 4;
+}
+
+/** Information about a function parameter. */
+message ParameterInfoPB {
+ string name = 1;
+ string type = 2;
+ string declared_type = 3;
+}
+
+/** Information about a function or method. */
+message FunctionInfoPB {
+ /** Modifiers applied to the function. */
+ FunctionModifiersPB function_modifiers = 1;
+
+ /** serialized_ids of any ClosureInfo elements declared in the function. */
+ repeated string children_ids = 2;
+
+ /** The declared return type. */
+ string return_type = 3;
+
+ /** The inferred return type. */
+ string inferred_return_type = 4;
+
+ /** Name and type information for each parameter. */
+ repeated ParameterInfoPB parameters = 5;
+
+ /** Side-effects of the function. */
+ string side_effects = 6;
+
+ /** How many function calls were inlined into the function. */
+ int32 inlined_count = 7;
+
+ /** The actual generated code. */
+ string code = 8;
+
+ /** Measurements collected for this function. */
+ reserved 9;
+}
+
+/** Information about a closure, also known as a local function. */
+message ClosureInfoPB {
+ /** serialized_id of the FunctionInfo wrapped by this closure. */
+ string function_id = 1;
+}
+
+message DeferredImportPB {
+ /** The prefix assigned to the deferred import. */
+ string prefix = 1;
+
+ /** The list of filenames loaded by the import. */
+ repeated string files = 2;
+}
+
+/** Information about deferred imports within a dart library. */
+message LibraryDeferredImportsPB {
+ /** The uri of the library which makes the deferred import. */
+ string library_uri = 1;
+
+ /** The name of the library, or "<unnamed>" if it is unnamed. */
+ string library_name = 2;
+
+ /** The individual deferred imports within the library. */
+ repeated DeferredImportPB imports = 3;
+}
diff --git a/pkg/dart2js_info/lib/binary_serialization.dart b/pkg/dart2js_info/lib/binary_serialization.dart
new file mode 100644
index 0000000..382c37e
--- /dev/null
+++ b/pkg/dart2js_info/lib/binary_serialization.dart
@@ -0,0 +1,459 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Info serialization to a binary form.
+///
+/// Unlike the JSON codec, this serialization is designed to be streamed.
+
+import 'dart:convert';
+
+import 'src/binary/sink.dart';
+import 'src/binary/source.dart';
+import 'info.dart';
+
+void encode(AllInfo info, Sink<List<int>> sink) {
+ new BinaryPrinter(new BinarySink(sink)).visitAll(info);
+}
+
+AllInfo decode(List<int> data) {
+ return new BinaryReader(new BinarySource(data)).readAll();
+}
+
+class BinaryPrinter implements InfoVisitor<void> {
+ final BinarySink sink;
+
+ BinaryPrinter(this.sink);
+
+ void writeDate(DateTime date) {
+ sink.writeString(date.toIso8601String());
+ }
+
+ void writeDuration(Duration duration) {
+ sink.writeInt(duration.inMicroseconds);
+ }
+
+ void writeInfoWithKind(Info info) {
+ sink.writeEnum(info.kind);
+ info.accept(this);
+ }
+
+ void visitAll(AllInfo info) {
+ sink.writeInt(info.version);
+ sink.writeInt(info.minorVersion);
+ sink.writeList(info.libraries, visitLibrary);
+ // TODO(sigmund): synthesize the following lists instead of serializing the
+ // values again.
+ sink.writeList(info.classes, visitClass);
+ sink.writeList(info.functions, visitFunction);
+ sink.writeList(info.typedefs, visitTypedef);
+ sink.writeList(info.fields, visitField);
+ sink.writeList(info.constants, visitConstant);
+ sink.writeList(info.closures, visitClosure);
+
+ void writeDependencies(CodeInfo info) {
+ sink.writeList(info.uses, _writeDependencyInfo);
+ }
+
+ info.fields.forEach(writeDependencies);
+ info.functions.forEach(writeDependencies);
+
+ sink.writeInt(info.dependencies.length);
+ info.dependencies.forEach((Info key, List<Info> values) {
+ writeInfoWithKind(key);
+ sink.writeList(values, writeInfoWithKind);
+ });
+ sink.writeList(info.outputUnits, visitOutput);
+ sink.writeString(jsonEncode(info.deferredFiles));
+ visitProgram(info.program);
+ sink.close();
+ }
+
+ void visitProgram(ProgramInfo info) {
+ visitFunction(info.entrypoint);
+ sink.writeInt(info.size);
+ sink.writeStringOrNull(info.dart2jsVersion);
+ writeDate(info.compilationMoment);
+ writeDuration(info.compilationDuration);
+ // Note: we don't record the 'toJsonDuration' field. Consider deleting it?
+ writeDuration(info.dumpInfoDuration);
+ sink.writeBool(info.noSuchMethodEnabled);
+ sink.writeBool(info.isRuntimeTypeUsed);
+ sink.writeBool(info.isIsolateInUse);
+ sink.writeBool(info.isFunctionApplyUsed);
+ sink.writeBool(info.isMirrorsUsed);
+ sink.writeBool(info.minified);
+ }
+
+ void _visitBasicInfo(BasicInfo info) {
+ sink.writeStringOrNull(info.name);
+ sink.writeInt(info.size);
+ sink.writeStringOrNull(info.coverageId);
+ _writeOutputOrNull(info.outputUnit);
+ // Note: parent-pointers are not serialized, they get deduced during deserialization.
+ }
+
+ void visitLibrary(LibraryInfo library) {
+ sink.writeCached(library, (LibraryInfo info) {
+ sink.writeUri(info.uri);
+ _visitBasicInfo(info);
+ sink.writeList(info.topLevelFunctions, visitFunction);
+ sink.writeList(info.topLevelVariables, visitField);
+ sink.writeList(info.classes, visitClass);
+ sink.writeList(info.typedefs, visitTypedef);
+ });
+ }
+
+ void visitClass(ClassInfo cls) {
+ sink.writeCached(cls, (ClassInfo info) {
+ _visitBasicInfo(info);
+ sink.writeBool(info.isAbstract);
+ sink.writeList(info.fields, visitField);
+ sink.writeList(info.functions, visitFunction);
+ });
+ }
+
+ void visitField(FieldInfo field) {
+ sink.writeCached(field, (FieldInfo info) {
+ _visitBasicInfo(info);
+ sink.writeList(info.closures, visitClosure);
+ sink.writeString(info.inferredType);
+ sink.writeList(info.code, _visitCodeSpan);
+ sink.writeString(info.type);
+ sink.writeBool(info.isConst);
+ if (info.isConst) {
+ _writeConstantOrNull(info.initializer);
+ }
+ });
+ }
+
+ _visitCodeSpan(CodeSpan code) {
+ sink.writeIntOrNull(code.start);
+ sink.writeIntOrNull(code.end);
+ sink.writeStringOrNull(code.text);
+ }
+
+ void _writeConstantOrNull(ConstantInfo info) {
+ sink.writeBool(info != null);
+ if (info != null) {
+ visitConstant(info);
+ }
+ }
+
+ void visitConstant(ConstantInfo constant) {
+ sink.writeCached(constant, (ConstantInfo info) {
+ _visitBasicInfo(info);
+ sink.writeList(info.code, _visitCodeSpan);
+ });
+ }
+
+ void _visitFunctionModifiers(FunctionModifiers mods) {
+ int value = 0;
+ if (mods.isStatic) value |= _staticMask;
+ if (mods.isConst) value |= _constMask;
+ if (mods.isFactory) value |= _factoryMask;
+ if (mods.isExternal) value |= _externalMask;
+ sink.writeInt(value);
+ }
+
+ void _visitParameterInfo(ParameterInfo info) {
+ sink.writeString(info.name);
+ sink.writeString(info.type);
+ sink.writeString(info.declaredType);
+ }
+
+ void visitFunction(FunctionInfo function) {
+ sink.writeCached(function, (FunctionInfo info) {
+ _visitBasicInfo(info);
+ sink.writeList(info.closures, visitClosure);
+ _visitFunctionModifiers(info.modifiers);
+ sink.writeString(info.returnType);
+ sink.writeString(info.inferredReturnType);
+ sink.writeList(info.parameters, _visitParameterInfo);
+ sink.writeString(info.sideEffects);
+ sink.writeIntOrNull(info.inlinedCount);
+ sink.writeList(info.code, _visitCodeSpan);
+ sink.writeString(info.type);
+ });
+ }
+
+ void _writeDependencyInfo(DependencyInfo info) {
+ writeInfoWithKind(info.target);
+ sink.writeStringOrNull(info.mask);
+ }
+
+ void visitClosure(ClosureInfo closure) {
+ sink.writeCached(closure, (ClosureInfo info) {
+ _visitBasicInfo(info);
+ visitFunction(info.function);
+ });
+ }
+
+ void visitTypedef(TypedefInfo typedef) {
+ sink.writeCached(typedef, (TypedefInfo info) {
+ _visitBasicInfo(info);
+ sink.writeString(info.type);
+ });
+ }
+
+ void _writeOutputOrNull(OutputUnitInfo info) {
+ sink.writeBool(info != null);
+ if (info != null) {
+ visitOutput(info);
+ }
+ }
+
+ void visitOutput(OutputUnitInfo output) {
+ sink.writeCached(output, (OutputUnitInfo info) {
+ _visitBasicInfo(info);
+ sink.writeStringOrNull(info.filename);
+ sink.writeList(info.imports, sink.writeString);
+ });
+ }
+}
+
+class BinaryReader {
+ final BinarySource source;
+ BinaryReader(this.source);
+
+ DateTime readDate() {
+ return DateTime.parse(source.readString());
+ }
+
+ Duration readDuration() {
+ return new Duration(microseconds: source.readInt());
+ }
+
+ Info readInfoWithKind() {
+ InfoKind kind = source.readEnum(InfoKind.values);
+ switch (kind) {
+ case InfoKind.library:
+ return readLibrary();
+ case InfoKind.clazz:
+ return readClass();
+ case InfoKind.function:
+ return readFunction();
+ case InfoKind.field:
+ return readField();
+ case InfoKind.constant:
+ return readConstant();
+ case InfoKind.outputUnit:
+ return readOutput();
+ case InfoKind.typedef:
+ return readTypedef();
+ case InfoKind.closure:
+ return readClosure();
+ }
+ return null;
+ }
+
+ AllInfo readAll() {
+ var info = new AllInfo();
+ int version = source.readInt();
+ int minorVersion = source.readInt();
+ if (info.version != version || info.minorVersion != minorVersion) {
+ print("warning: data was encoded with format version "
+ "$version.$minorVersion, but decoded with "
+ "${info.version}.${info.minorVersion}");
+ }
+ info.libraries = source.readList(readLibrary);
+ info.classes = source.readList(readClass);
+ info.functions = source.readList(readFunction);
+ info.typedefs = source.readList(readTypedef);
+ info.fields = source.readList(readField);
+ info.constants = source.readList(readConstant);
+ info.closures = source.readList(readClosure);
+
+ void readDependencies(CodeInfo info) {
+ info.uses = source.readList(_readDependencyInfo);
+ }
+
+ info.fields.forEach(readDependencies);
+ info.functions.forEach(readDependencies);
+
+ int dependenciesTotal = source.readInt();
+ while (dependenciesTotal > 0) {
+ Info key = readInfoWithKind();
+ List<Info> values = source.readList(readInfoWithKind);
+ info.dependencies[key] = values;
+ dependenciesTotal--;
+ }
+
+ info.outputUnits = source.readList(readOutput);
+
+ Map<String, Map<String, dynamic>> map =
+ jsonDecode(source.readString()).cast<String, Map<String, dynamic>>();
+ for (final library in map.values) {
+ if (library['imports'] != null) {
+ // The importMap needs to be typed as <String, List<String>>, but the
+ // json parser produces <String, dynamic>.
+ final importMap = library['imports'] as Map<String, dynamic>;
+ importMap.forEach((prefix, files) {
+ importMap[prefix] = (files as List<dynamic>).cast<String>();
+ });
+ library['imports'] = importMap.cast<String, List<String>>();
+ }
+ }
+ info.deferredFiles = map;
+ info.program = readProgram();
+ return info;
+ }
+
+ ProgramInfo readProgram() {
+ var info = new ProgramInfo();
+ info.entrypoint = readFunction();
+ info.size = source.readInt();
+ info.dart2jsVersion = source.readStringOrNull();
+ info.compilationMoment = readDate();
+ info.compilationDuration = readDuration();
+ info.toJsonDuration = new Duration(microseconds: 0);
+ info.dumpInfoDuration = readDuration();
+ info.noSuchMethodEnabled = source.readBool();
+ info.isRuntimeTypeUsed = source.readBool();
+ info.isIsolateInUse = source.readBool();
+ info.isFunctionApplyUsed = source.readBool();
+ info.isMirrorsUsed = source.readBool();
+ info.minified = source.readBool();
+ return info;
+ }
+
+ void _readBasicInfo(BasicInfo info) {
+ info.name = source.readStringOrNull();
+ info.size = source.readInt();
+ info.coverageId = source.readStringOrNull();
+ info.outputUnit = _readOutputOrNull();
+ // Note: parent pointers are added when deserializing parent nodes.
+ }
+
+ LibraryInfo readLibrary() => source.readCached<LibraryInfo>(() {
+ LibraryInfo info = new LibraryInfo.internal();
+ info.uri = source.readUri();
+ _readBasicInfo(info);
+ info.topLevelFunctions = source.readList(readFunction);
+ info.topLevelVariables = source.readList(readField);
+ info.classes = source.readList(readClass);
+ info.typedefs = source.readList(readTypedef);
+
+ setParent(BasicInfo child) => child.parent = info;
+ info.topLevelFunctions.forEach(setParent);
+ info.topLevelVariables.forEach(setParent);
+ info.classes.forEach(setParent);
+ info.typedefs.forEach(setParent);
+ return info;
+ });
+
+ ClassInfo readClass() => source.readCached<ClassInfo>(() {
+ ClassInfo info = new ClassInfo.internal();
+ _readBasicInfo(info);
+ info.isAbstract = source.readBool();
+ info.fields = source.readList(readField);
+ info.functions = source.readList(readFunction);
+
+ setParent(BasicInfo child) => child.parent = info;
+ info.fields.forEach(setParent);
+ info.functions.forEach(setParent);
+ return info;
+ });
+
+ FieldInfo readField() => source.readCached<FieldInfo>(() {
+ FieldInfo info = new FieldInfo.internal();
+ _readBasicInfo(info);
+ info.closures = source.readList(readClosure);
+ info.inferredType = source.readString();
+ info.code = source.readList(_readCodeSpan);
+ info.type = source.readString();
+ info.isConst = source.readBool();
+ if (info.isConst) {
+ info.initializer = _readConstantOrNull();
+ }
+ info.closures.forEach((c) => c.parent = info);
+ return info;
+ });
+
+ CodeSpan _readCodeSpan() {
+ return new CodeSpan()
+ ..start = source.readIntOrNull()
+ ..end = source.readIntOrNull()
+ ..text = source.readStringOrNull();
+ }
+
+ ConstantInfo _readConstantOrNull() {
+ bool hasOutput = source.readBool();
+ if (hasOutput) return readConstant();
+ return null;
+ }
+
+ ConstantInfo readConstant() => source.readCached<ConstantInfo>(() {
+ ConstantInfo info = new ConstantInfo.internal();
+ _readBasicInfo(info);
+ info.code = source.readList(_readCodeSpan);
+ return info;
+ });
+
+ FunctionModifiers _readFunctionModifiers() {
+ int value = source.readInt();
+ return new FunctionModifiers(
+ isStatic: value & _staticMask != 0,
+ isConst: value & _constMask != 0,
+ isFactory: value & _factoryMask != 0,
+ isExternal: value & _externalMask != 0);
+ }
+
+ ParameterInfo _readParameterInfo() {
+ return new ParameterInfo(
+ source.readString(), source.readString(), source.readString());
+ }
+
+ FunctionInfo readFunction() => source.readCached<FunctionInfo>(() {
+ FunctionInfo info = new FunctionInfo.internal();
+ _readBasicInfo(info);
+ info.closures = source.readList(readClosure);
+ info.modifiers = _readFunctionModifiers();
+ info.returnType = source.readString();
+ info.inferredReturnType = source.readString();
+ info.parameters = source.readList(_readParameterInfo);
+ info.sideEffects = source.readString();
+ info.inlinedCount = source.readIntOrNull();
+ info.code = source.readList(_readCodeSpan);
+ info.type = source.readString();
+ info.closures.forEach((c) => c.parent = info);
+ return info;
+ });
+
+ DependencyInfo _readDependencyInfo() =>
+ new DependencyInfo(readInfoWithKind(), source.readStringOrNull());
+
+ ClosureInfo readClosure() => source.readCached<ClosureInfo>(() {
+ ClosureInfo info = new ClosureInfo.internal();
+ _readBasicInfo(info);
+ info.function = readFunction();
+ info.function.parent = info;
+ return info;
+ });
+
+ TypedefInfo readTypedef() => source.readCached<TypedefInfo>(() {
+ TypedefInfo info = new TypedefInfo.internal();
+ _readBasicInfo(info);
+ info.type = source.readString();
+ return info;
+ });
+
+ OutputUnitInfo _readOutputOrNull() {
+ bool hasOutput = source.readBool();
+ if (hasOutput) return readOutput();
+ return null;
+ }
+
+ OutputUnitInfo readOutput() => source.readCached<OutputUnitInfo>(() {
+ OutputUnitInfo info = new OutputUnitInfo.internal();
+ _readBasicInfo(info);
+ info.filename = source.readStringOrNull();
+ info.imports = source.readList(source.readString);
+ return info;
+ });
+}
+
+const int _staticMask = 1 << 3;
+const int _constMask = 1 << 2;
+const int _factoryMask = 1 << 1;
+const int _externalMask = 1 << 0;
diff --git a/pkg/dart2js_info/lib/deferred_library_check.dart b/pkg/dart2js_info/lib/deferred_library_check.dart
new file mode 100644
index 0000000..8a7e98b
--- /dev/null
+++ b/pkg/dart2js_info/lib/deferred_library_check.dart
@@ -0,0 +1,177 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// This tool checks that the output from dart2js meets a given specification,
+/// given in a YAML file. The format of the YAML file is:
+///
+/// main:
+/// include:
+/// - some_package
+/// - other_package
+///
+/// foo:
+/// include:
+/// - foo
+/// - bar
+///
+/// baz:
+/// include:
+/// - baz
+/// - quux
+/// exclude:
+/// - zardoz
+///
+/// The YAML file consists of a list of declarations, one for each deferred
+/// part expected in the output. At least one of these parts must be named
+/// "main"; this is the main part that contains the program entrypoint. Each
+/// top-level part contains a list of package names that are expected to be
+/// contained in that part, a list of package names that are expected to be in
+/// another part, or both. For instance, in the example YAML above the part
+/// named "baz" is expected to contain the packages "baz" and "quux" and not to
+/// contain the package "zardoz".
+///
+/// The names for parts given in the specification YAML file (besides "main")
+/// are the same as the name given to the deferred import in the dart file. For
+/// instance, if you have `import 'package:foo/bar.dart' deferred as baz;` in
+/// your dart file, then the corresponding name in the specification file is
+/// 'baz'.
+library dart2js_info.deferred_library_check;
+
+import 'info.dart';
+
+List<ManifestComplianceFailure> checkDeferredLibraryManifest(
+ AllInfo info, Map manifest) {
+ var includedPackages = new Map<String, Set<String>>();
+ var excludedPackages = new Map<String, Set<String>>();
+ for (var part in manifest.keys) {
+ for (var package in manifest[part]['include'] ?? []) {
+ (includedPackages[part] ??= {}).add(package);
+ }
+ for (var package in manifest[part]['exclude'] ?? []) {
+ (excludedPackages[part] ??= {}).add(package);
+ }
+ }
+
+ // There are 2 types of parts that are valid to mention in the specification
+ // file. These are the main part and directly imported deferred parts. The
+ // main part is always named 'main'; the directly imported deferred parts are
+ // the outputUnits whose list of 'imports' contains a single import. If the
+ // part is shared, it will have more than one import since it will include the
+ // imports of all the top-level deferred parts that will load the shared part.
+ List<String> validParts = ['main']..addAll(info.outputUnits
+ .where((unit) => unit.imports.length == 1)
+ .map((unit) => unit.imports.single));
+ List<String> mentionedParts = []
+ ..addAll(includedPackages.keys)
+ ..addAll(excludedPackages.keys);
+ var partNameFailures = <_InvalidPartName>[];
+ for (var part in mentionedParts) {
+ if (!validParts.contains(part)) {
+ partNameFailures.add(new _InvalidPartName(part, validParts));
+ }
+ }
+ if (partNameFailures.isNotEmpty) {
+ return partNameFailures;
+ }
+
+ var mentionedPackages = {
+ for (var values in includedPackages.values) ...values,
+ for (var values in excludedPackages.values) ...values
+ };
+ var actualIncludedPackages = new Map<String, Set<String>>();
+
+ var failures = <ManifestComplianceFailure>[];
+
+ checkInfo(BasicInfo info) {
+ if (info.size == 0) return;
+ var lib = _getLibraryOf(info);
+ if (lib != null && _isPackageUri(lib.uri)) {
+ var packageName = _getPackageName(lib.uri);
+ if (!mentionedPackages.contains(packageName)) return;
+ var containingParts = <String>[];
+ if (info.outputUnit.name == 'main') {
+ containingParts.add('main');
+ } else {
+ containingParts.addAll(info.outputUnit.imports);
+ }
+ for (var part in containingParts) {
+ (actualIncludedPackages[part] ??= {}).add(packageName);
+ if (excludedPackages[part].contains(packageName)) {
+ failures
+ .add(new _PartContainedExcludedPackage(part, packageName, info));
+ }
+ }
+ }
+ }
+
+ info.functions.forEach(checkInfo);
+ info.fields.forEach(checkInfo);
+
+ includedPackages.forEach((part, packages) {
+ for (var package in packages) {
+ if (!actualIncludedPackages.containsKey(part) ||
+ !actualIncludedPackages[part].contains(package)) {
+ failures.add(new _PartDidNotContainPackage(part, package));
+ }
+ }
+ });
+ return failures;
+}
+
+LibraryInfo _getLibraryOf(Info info) {
+ var current = info;
+ while (current is! LibraryInfo) {
+ if (current == null) {
+ return null;
+ }
+ current = current.parent;
+ }
+ return current;
+}
+
+bool _isPackageUri(Uri uri) => uri.scheme == 'package';
+
+String _getPackageName(Uri uri) {
+ assert(_isPackageUri(uri));
+ return uri.pathSegments.first;
+}
+
+class ManifestComplianceFailure {
+ const ManifestComplianceFailure();
+}
+
+class _InvalidPartName extends ManifestComplianceFailure {
+ final String part;
+ final List<String> validPartNames;
+ const _InvalidPartName(this.part, this.validPartNames);
+
+ String toString() {
+ return 'Manifest file declares invalid part "$part". '
+ 'Valid part names are: $validPartNames';
+ }
+}
+
+class _PartContainedExcludedPackage extends ManifestComplianceFailure {
+ final String part;
+ final String package;
+ final BasicInfo info;
+ const _PartContainedExcludedPackage(this.part, this.package, this.info);
+
+ String toString() {
+ return 'Part "$part" was specified to exclude package "$package" but it '
+ 'actually contains ${kindToString(info.kind)} "${info.name}" which '
+ 'is from package "$package"';
+ }
+}
+
+class _PartDidNotContainPackage extends ManifestComplianceFailure {
+ final String part;
+ final String package;
+ const _PartDidNotContainPackage(this.part, this.package);
+
+ String toString() {
+ return 'Part "$part" was specified to include package "$package" but it '
+ 'does not contain any elements from that package.';
+ }
+}
diff --git a/pkg/dart2js_info/lib/info.dart b/pkg/dart2js_info/lib/info.dart
new file mode 100644
index 0000000..d2019ca
--- /dev/null
+++ b/pkg/dart2js_info/lib/info.dart
@@ -0,0 +1,549 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Data produced by dart2js when run with the `--dump-info` flag.
+library dart2js_info.info;
+
+/// Common interface to many pieces of information generated by the dart2js
+/// compiler that are directly associated with an element (compilation unit,
+/// library, class, function, or field).
+abstract class Info {
+ /// An identifier for the kind of information.
+ InfoKind get kind;
+
+ /// Name of the element associated with this info.
+ String name;
+
+ /// Id used by the compiler when instrumenting code for code coverage.
+ // TODO(sigmund): It would be nice if we could use the same id for
+ // serialization and for coverage. Could we unify them?
+ String coverageId;
+
+ /// Bytes used in the generated code for the corresponding element.
+ int size;
+
+ /// Info of the enclosing element.
+ Info parent;
+
+ T accept<T>(InfoVisitor<T> visitor);
+}
+
+/// Common information used for most kind of elements.
+// TODO(sigmund): add more:
+// - inputSize: bytes used in the Dart source program
+abstract class BasicInfo implements Info {
+ final InfoKind kind;
+
+ String coverageId;
+ int size;
+ Info parent;
+
+ String name;
+
+ /// If using deferred libraries, where the element associated with this info
+ /// is generated.
+ OutputUnitInfo outputUnit;
+
+ BasicInfo(this.kind, this.name, this.outputUnit, this.size, this.coverageId);
+
+ BasicInfo.internal(this.kind);
+
+ String toString() => '$kind $name [$size]';
+}
+
+/// Info associated with elements containing executable code (like fields and
+/// methods)
+abstract class CodeInfo implements Info {
+ /// How does this function or field depend on others.
+ List<DependencyInfo> uses = [];
+}
+
+/// The entire information produced while compiling a program.
+class AllInfo {
+ /// Summary information about the program.
+ ProgramInfo program;
+
+ /// Information about each library processed by the compiler.
+ List<LibraryInfo> libraries = <LibraryInfo>[];
+
+ /// Information about each function (includes methods and getters in any
+ /// library)
+ List<FunctionInfo> functions = <FunctionInfo>[];
+
+ /// Information about type defs in the program.
+ List<TypedefInfo> typedefs = <TypedefInfo>[];
+
+ /// Information about each class (in any library).
+ List<ClassInfo> classes = <ClassInfo>[];
+
+ /// Information about fields (in any class).
+ List<FieldInfo> fields = <FieldInfo>[];
+
+ /// Information about constants anywhere in the program.
+ // TODO(sigmund): expand docs about canonicalization. We don't put these
+ // inside library because a single constant can be used in more than one lib,
+ // and we'll include it only once in the output.
+ List<ConstantInfo> constants = <ConstantInfo>[];
+
+ /// Information about closures anywhere in the program.
+ List<ClosureInfo> closures = <ClosureInfo>[];
+
+ /// Information about output units (should be just one entry if not using
+ /// deferred loading).
+ List<OutputUnitInfo> outputUnits = <OutputUnitInfo>[];
+
+ /// Details about all deferred imports and what files would be loaded when the
+ /// import is resolved.
+ // TODO(sigmund): use a different format for dump-info. This currently emits
+ // the same map that is created for the `--deferred-map` flag.
+ Map<String, Map<String, dynamic>> deferredFiles;
+
+ /// A new representation of dependencies from one info to another. An entry in
+ /// this map indicates that an [Info] depends on another (e.g. a function
+ /// invokes another). Please note that the data in this field might not be
+ /// accurate yet (this is work in progress).
+ Map<Info, List<Info>> dependencies = {};
+
+ /// Major version indicating breaking changes in the format. A new version
+ /// means that an old deserialization algorithm will not work with the new
+ /// format.
+ final int version = 6;
+
+ /// Minor version indicating non-breaking changes in the format. A change in
+ /// this version number means that the json parsing in this library from a
+ /// previous will continue to work after the change. This is typically
+ /// increased when adding new entries to the file format.
+ // Note: the dump-info.viewer app was written using a json parser version 3.2.
+ final int minorVersion = 0;
+
+ AllInfo();
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitAll(this);
+}
+
+class ProgramInfo {
+ FunctionInfo entrypoint;
+ int size;
+ String dart2jsVersion;
+ DateTime compilationMoment;
+ Duration compilationDuration;
+ Duration toJsonDuration;
+ Duration dumpInfoDuration;
+
+ /// `true` if `noSuchMethod` is used.
+ bool noSuchMethodEnabled;
+
+ /// `true` if `Object.runtimeType` is used.
+ bool isRuntimeTypeUsed;
+
+ /// `true` if the `dart:isolate` library is in use.
+ bool isIsolateInUse;
+
+ /// `true` if `Function.apply` is used.
+ bool isFunctionApplyUsed;
+
+ /// `true` if `dart:mirrors` features are used.
+ bool isMirrorsUsed;
+
+ bool minified;
+
+ ProgramInfo(
+ {this.entrypoint,
+ this.size,
+ this.dart2jsVersion,
+ this.compilationMoment,
+ this.compilationDuration,
+ this.toJsonDuration,
+ this.dumpInfoDuration,
+ this.noSuchMethodEnabled,
+ this.isRuntimeTypeUsed,
+ this.isIsolateInUse,
+ this.isFunctionApplyUsed,
+ this.isMirrorsUsed,
+ this.minified});
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitProgram(this);
+}
+
+/// Info associated with a library element.
+class LibraryInfo extends BasicInfo {
+ /// Canonical uri that identifies the library.
+ Uri uri;
+
+ /// Top level functions defined within the library.
+ List<FunctionInfo> topLevelFunctions = <FunctionInfo>[];
+
+ /// Top level fields defined within the library.
+ List<FieldInfo> topLevelVariables = <FieldInfo>[];
+
+ /// Classes defined within the library.
+ List<ClassInfo> classes = <ClassInfo>[];
+
+ /// Typedefs defined within the library.
+ List<TypedefInfo> typedefs = <TypedefInfo>[];
+
+ // TODO(sigmund): add here a list of parts. That can help us improve how we
+ // encode source-span information in metrics (rather than include the uri on
+ // each function, include an index into this list).
+
+ /// Whether there is any information recorded for this library.
+ bool get isEmpty =>
+ topLevelFunctions.isEmpty && topLevelVariables.isEmpty && classes.isEmpty;
+
+ LibraryInfo(String name, this.uri, OutputUnitInfo outputUnit, int size)
+ : super(InfoKind.library, name, outputUnit, size, null);
+
+ LibraryInfo.internal() : super.internal(InfoKind.library);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitLibrary(this);
+}
+
+/// Information about an output unit. Normally there is just one for the entire
+/// program unless the application uses deferred imports, in which case there
+/// would be an additional output unit per deferred chunk.
+class OutputUnitInfo extends BasicInfo {
+ String filename;
+
+ /// The deferred imports that will load this output unit.
+ List<String> imports = <String>[];
+
+ OutputUnitInfo(this.filename, String name, int size)
+ : super(InfoKind.outputUnit, name, null, size, null);
+
+ OutputUnitInfo.internal() : super.internal(InfoKind.outputUnit);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitOutput(this);
+}
+
+/// Information about a class element.
+class ClassInfo extends BasicInfo {
+ /// Whether the class is abstract.
+ bool isAbstract;
+
+ // TODO(sigmund): split static vs instance vs closures
+ /// Functions (static or instance) defined in the class.
+ List<FunctionInfo> functions = <FunctionInfo>[];
+
+ /// Fields defined in the class.
+ // TODO(sigmund): currently appears to only be populated with instance fields,
+ // but this should be fixed.
+ List<FieldInfo> fields = <FieldInfo>[];
+
+ ClassInfo(
+ {String name, this.isAbstract, OutputUnitInfo outputUnit, int size: 0})
+ : super(InfoKind.clazz, name, outputUnit, size, null);
+
+ ClassInfo.internal() : super.internal(InfoKind.clazz);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitClass(this);
+}
+
+/// A code span of generated code. A [CodeSpan] object is associated with a
+/// single [BasicInfo]. The offsets in the span corresponds to offsets on the
+/// file of [BasicInfo.outputUnit].
+class CodeSpan {
+ /// Start offset in the generated file.
+ int start;
+
+ /// end offset in the generated file.
+ int end;
+
+ /// The actual code (optional, blank when using a compact representation of
+ /// the encoding).
+ String text;
+
+ CodeSpan({this.start, this.end, this.text});
+}
+
+/// Information about a constant value.
+// TODO(sigmund): add dependency data for ConstantInfo
+class ConstantInfo extends BasicInfo {
+ /// The actual generated code for the constant.
+ List<CodeSpan> code;
+
+ // TODO(sigmund): Add coverage support to constants?
+ ConstantInfo({int size: 0, this.code, OutputUnitInfo outputUnit})
+ : super(InfoKind.constant, null, outputUnit, size, null);
+
+ ConstantInfo.internal() : super.internal(InfoKind.constant);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitConstant(this);
+}
+
+/// Information about a field element.
+class FieldInfo extends BasicInfo with CodeInfo {
+ /// The type of the field.
+ String type;
+
+ /// The type inferred by dart2js's whole program analysis
+ String inferredType;
+
+ /// Nested closures seen in the field initializer.
+ List<ClosureInfo> closures;
+
+ /// The actual generated code for the field.
+ List<CodeSpan> code;
+
+ /// Whether this corresponds to a const field declaration.
+ bool isConst;
+
+ /// When [isConst] is true, the constant initializer expression.
+ ConstantInfo initializer;
+
+ FieldInfo(
+ {String name,
+ String coverageId,
+ int size: 0,
+ this.type,
+ this.inferredType,
+ this.closures,
+ this.code,
+ OutputUnitInfo outputUnit,
+ this.isConst})
+ : super(InfoKind.field, name, outputUnit, size, coverageId);
+
+ FieldInfo.internal() : super.internal(InfoKind.field);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitField(this);
+}
+
+/// Information about a typedef declaration.
+class TypedefInfo extends BasicInfo {
+ /// The declared type.
+ String type;
+
+ TypedefInfo(String name, this.type, OutputUnitInfo outputUnit)
+ : super(InfoKind.typedef, name, outputUnit, 0, null);
+
+ TypedefInfo.internal() : super.internal(InfoKind.typedef);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitTypedef(this);
+}
+
+/// Information about a function or method.
+class FunctionInfo extends BasicInfo with CodeInfo {
+ static const int TOP_LEVEL_FUNCTION_KIND = 0;
+ static const int CLOSURE_FUNCTION_KIND = 1;
+ static const int METHOD_FUNCTION_KIND = 2;
+ static const int CONSTRUCTOR_FUNCTION_KIND = 3;
+
+ /// Kind of function (top-level function, closure, method, or constructor).
+ int functionKind;
+
+ /// Modifiers applied to this function.
+ FunctionModifiers modifiers;
+
+ /// Nested closures that appear within the body of this function.
+ List<ClosureInfo> closures;
+
+ /// The type of this function.
+ String type;
+
+ /// The declared return type.
+ String returnType;
+
+ /// The inferred return type.
+ String inferredReturnType;
+
+ /// Name and type information for each parameter.
+ List<ParameterInfo> parameters;
+
+ /// Side-effects.
+ // TODO(sigmund): serialize more precisely, not just a string representation.
+ String sideEffects;
+
+ /// How many function calls were inlined into this function.
+ int inlinedCount;
+
+ /// The actual generated code.
+ List<CodeSpan> code;
+
+ FunctionInfo(
+ {String name,
+ String coverageId,
+ OutputUnitInfo outputUnit,
+ int size: 0,
+ this.functionKind,
+ this.modifiers,
+ this.closures,
+ this.type,
+ this.returnType,
+ this.inferredReturnType,
+ this.parameters,
+ this.sideEffects,
+ this.inlinedCount,
+ this.code})
+ : super(InfoKind.function, name, outputUnit, size, coverageId);
+
+ FunctionInfo.internal() : super.internal(InfoKind.function);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitFunction(this);
+}
+
+/// Information about a closure, also known as a local function.
+class ClosureInfo extends BasicInfo {
+ /// The function that is wrapped by this closure.
+ FunctionInfo function;
+
+ ClosureInfo(
+ {String name, OutputUnitInfo outputUnit, int size: 0, this.function})
+ : super(InfoKind.closure, name, outputUnit, size, null);
+
+ ClosureInfo.internal() : super.internal(InfoKind.closure);
+
+ T accept<T>(InfoVisitor<T> visitor) => visitor.visitClosure(this);
+}
+
+/// Information about how a dependency is used.
+class DependencyInfo {
+ /// The dependency, either a FunctionInfo or FieldInfo.
+ final Info target;
+
+ /// Either a selector mask indicating how this is used, or 'inlined'.
+ // TODO(sigmund): split mask into an enum or something more precise to really
+ // describe the dependencies in detail.
+ final String mask;
+
+ DependencyInfo(this.target, this.mask);
+}
+
+/// Name and type information about a function parameter.
+class ParameterInfo {
+ final String name;
+ final String type;
+ final String declaredType;
+
+ ParameterInfo(this.name, this.type, this.declaredType);
+}
+
+/// Modifiers that may apply to methods.
+class FunctionModifiers {
+ final bool isStatic;
+ final bool isConst;
+ final bool isFactory;
+ final bool isExternal;
+
+ FunctionModifiers(
+ {this.isStatic: false,
+ this.isConst: false,
+ this.isFactory: false,
+ this.isExternal: false});
+}
+
+/// Possible values of the `kind` field in the serialized infos.
+enum InfoKind {
+ library,
+ clazz,
+ function,
+ field,
+ constant,
+ outputUnit,
+ typedef,
+ closure,
+}
+
+String kindToString(InfoKind kind) {
+ switch (kind) {
+ case InfoKind.library:
+ return 'library';
+ case InfoKind.clazz:
+ return 'class';
+ case InfoKind.function:
+ return 'function';
+ case InfoKind.field:
+ return 'field';
+ case InfoKind.constant:
+ return 'constant';
+ case InfoKind.outputUnit:
+ return 'outputUnit';
+ case InfoKind.typedef:
+ return 'typedef';
+ case InfoKind.closure:
+ return 'closure';
+ default:
+ return null;
+ }
+}
+
+InfoKind kindFromString(String kind) {
+ switch (kind) {
+ case 'library':
+ return InfoKind.library;
+ case 'class':
+ return InfoKind.clazz;
+ case 'function':
+ return InfoKind.function;
+ case 'field':
+ return InfoKind.field;
+ case 'constant':
+ return InfoKind.constant;
+ case 'outputUnit':
+ return InfoKind.outputUnit;
+ case 'typedef':
+ return InfoKind.typedef;
+ case 'closure':
+ return InfoKind.closure;
+ default:
+ return null;
+ }
+}
+
+/// A simple visitor for information produced by the dart2js compiler.
+abstract class InfoVisitor<T> {
+ T visitAll(AllInfo info);
+ T visitProgram(ProgramInfo info);
+ T visitLibrary(LibraryInfo info);
+ T visitClass(ClassInfo info);
+ T visitField(FieldInfo info);
+ T visitConstant(ConstantInfo info);
+ T visitFunction(FunctionInfo info);
+ T visitTypedef(TypedefInfo info);
+ T visitClosure(ClosureInfo info);
+ T visitOutput(OutputUnitInfo info);
+}
+
+/// A visitor that recursively walks each portion of the program. Because the
+/// info representation is redundant, this visitor only walks the structure of
+/// the program and skips some redundant links. For example, even though
+/// visitAll contains references to functions, this visitor only recurses to
+/// visit libraries, then from each library we visit functions and classes, and
+/// so on.
+class RecursiveInfoVisitor extends InfoVisitor<Null> {
+ visitAll(AllInfo info) {
+ // Note: we don't visit functions, fields, classes, and typedefs because
+ // they are reachable from the library info.
+ info.libraries.forEach(visitLibrary);
+ info.constants.forEach(visitConstant);
+ }
+
+ visitProgram(ProgramInfo info) {}
+
+ visitLibrary(LibraryInfo info) {
+ info.topLevelFunctions.forEach(visitFunction);
+ info.topLevelVariables.forEach(visitField);
+ info.classes.forEach(visitClass);
+ info.typedefs.forEach(visitTypedef);
+ }
+
+ visitClass(ClassInfo info) {
+ info.functions.forEach(visitFunction);
+ info.fields.forEach(visitField);
+ }
+
+ visitField(FieldInfo info) {
+ info.closures.forEach(visitClosure);
+ }
+
+ visitConstant(ConstantInfo info) {}
+
+ visitFunction(FunctionInfo info) {
+ info.closures.forEach(visitClosure);
+ }
+
+ visitTypedef(TypedefInfo info) {}
+ visitOutput(OutputUnitInfo info) {}
+ visitClosure(ClosureInfo info) {
+ visitFunction(info.function);
+ }
+}
diff --git a/pkg/dart2js_info/lib/json_info_codec.dart b/pkg/dart2js_info/lib/json_info_codec.dart
new file mode 100644
index 0000000..f32c80f
--- /dev/null
+++ b/pkg/dart2js_info/lib/json_info_codec.dart
@@ -0,0 +1,600 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Converters and codecs for converting between JSON and [Info] classes.
+
+import 'dart:collection';
+import 'dart:convert';
+
+import 'package:collection/collection.dart';
+import 'src/util.dart';
+import 'info.dart';
+
+List<String> _toSortedSerializedIds(
+ Iterable<Info> infos, Id Function(Info) getId) =>
+ infos.map((i) => getId(i).serializedId).toList()..sort(compareNatural);
+
+// TODO(sigmund): add unit tests.
+class JsonToAllInfoConverter extends Converter<Map<String, dynamic>, AllInfo> {
+ // Using `MashMap` here because it's faster than the default `LinkedHashMap`.
+ final Map<String, Info> registry = new HashMap<String, Info>();
+
+ AllInfo convert(Map<String, dynamic> json) {
+ registry.clear();
+
+ var result = new AllInfo();
+ var elements = json['elements'];
+ // TODO(srawlins): Since only the Map values are being extracted below,
+ // replace `as` with `cast` when `cast` becomes available in Dart 2.0:
+ //
+ // .addAll(elements['library'].values.cast<Map>().map(parseLibrary));
+ result.libraries.addAll(
+ (elements['library'] as Map).values.map((l) => parseLibrary(l)));
+ result.classes
+ .addAll((elements['class'] as Map).values.map((c) => parseClass(c)));
+ result.functions.addAll(
+ (elements['function'] as Map).values.map((f) => parseFunction(f)));
+
+ // TODO(het): Revert this when the dart2js with the new codec is in stable
+ if (elements['closure'] != null) {
+ result.closures.addAll(
+ (elements['closure'] as Map).values.map((c) => parseClosure(c)));
+ }
+ result.fields
+ .addAll((elements['field'] as Map).values.map((f) => parseField(f)));
+ result.typedefs.addAll(
+ (elements['typedef'] as Map).values.map((t) => parseTypedef(t)));
+ result.constants.addAll(
+ (elements['constant'] as Map).values.map((c) => parseConstant(c)));
+
+ json['holding'].forEach((k, deps) {
+ CodeInfo src = registry[k];
+ assert(src != null);
+ for (var dep in deps) {
+ var target = registry[dep['id']];
+ assert(target != null);
+ src.uses.add(new DependencyInfo(target, dep['mask']));
+ }
+ });
+
+ json['dependencies']?.forEach((String k, dependencies) {
+ List<String> deps = dependencies;
+ result.dependencies[registry[k]] = deps.map((d) => registry[d]).toList();
+ });
+
+ result.outputUnits
+ .addAll((json['outputUnits'] as List).map((o) => parseOutputUnit(o)));
+
+ result.program = parseProgram(json['program']);
+
+ if (json['deferredFiles'] != null) {
+ final deferredFilesMap =
+ (json['deferredFiles'] as Map).cast<String, Map<String, dynamic>>();
+ for (final library in deferredFilesMap.values) {
+ if (library['imports'] != null) {
+ // The importMap needs to be typed as <String, List<String>>, but the
+ // json parser produces <String, dynamic>.
+ final importMap = library['imports'] as Map<String, dynamic>;
+ importMap.forEach((prefix, files) {
+ importMap[prefix] = (files as List<dynamic>).cast<String>();
+ });
+ library['imports'] = importMap.cast<String, List<String>>();
+ }
+ }
+ result.deferredFiles = deferredFilesMap;
+ }
+
+ // todo: version, etc
+ return result;
+ }
+
+ OutputUnitInfo parseOutputUnit(Map json) {
+ OutputUnitInfo result = parseId(json['id']);
+ result
+ ..filename = json['filename']
+ ..name = json['name']
+ ..size = json['size'];
+ result.imports
+ .addAll((json['imports'] as List).map((s) => s as String) ?? const []);
+ return result;
+ }
+
+ LibraryInfo parseLibrary(Map json) {
+ LibraryInfo result = parseId(json['id']);
+ result
+ ..name = json['name']
+ ..uri = Uri.parse(json['canonicalUri'])
+ ..outputUnit = parseId(json['outputUnit'])
+ ..size = json['size'];
+ for (var child in json['children'].map(parseId)) {
+ if (child is FunctionInfo) {
+ result.topLevelFunctions.add(child);
+ } else if (child is FieldInfo) {
+ result.topLevelVariables.add(child);
+ } else if (child is ClassInfo) {
+ result.classes.add(child);
+ } else {
+ assert(child is TypedefInfo);
+ result.typedefs.add(child);
+ }
+ }
+ return result;
+ }
+
+ ClassInfo parseClass(Map json) {
+ ClassInfo result = parseId(json['id']);
+ result
+ ..name = json['name']
+ ..parent = parseId(json['parent'])
+ ..outputUnit = parseId(json['outputUnit'])
+ ..size = json['size']
+ ..isAbstract = json['modifiers']['abstract'] == true;
+ assert(result is ClassInfo);
+ for (var child in json['children'].map(parseId)) {
+ if (child is FunctionInfo) {
+ result.functions.add(child);
+ } else {
+ assert(child is FieldInfo);
+ result.fields.add(child);
+ }
+ }
+ return result;
+ }
+
+ FieldInfo parseField(Map json) {
+ FieldInfo result = parseId(json['id']);
+ return result
+ ..name = json['name']
+ ..parent = parseId(json['parent'])
+ ..coverageId = json['coverageId']
+ ..outputUnit = parseId(json['outputUnit'])
+ ..size = json['size']
+ ..type = json['type']
+ ..inferredType = json['inferredType']
+ ..code = parseCode(json['code'])
+ ..isConst = json['const'] ?? false
+ ..initializer = parseId(json['initializer'])
+ ..closures = (json['children'] as List)
+ .map<ClosureInfo>((c) => parseId(c))
+ .toList();
+ }
+
+ ConstantInfo parseConstant(Map json) {
+ ConstantInfo result = parseId(json['id']);
+ return result
+ ..code = parseCode(json['code'])
+ ..size = json['size']
+ ..outputUnit = parseId(json['outputUnit']);
+ }
+
+ TypedefInfo parseTypedef(Map json) {
+ TypedefInfo result = parseId(json['id']);
+ return result
+ ..name = json['name']
+ ..parent = parseId(json['parent'])
+ ..type = json['type']
+ ..size = 0;
+ }
+
+ ProgramInfo parseProgram(Map json) {
+ var programInfo = new ProgramInfo()
+ ..entrypoint = parseId(json['entrypoint'])
+ ..size = json['size']
+ ..compilationMoment = DateTime.parse(json['compilationMoment'])
+ ..dart2jsVersion = json['dart2jsVersion']
+ ..noSuchMethodEnabled = json['noSuchMethodEnabled']
+ ..isRuntimeTypeUsed = json['isRuntimeTypeUsed']
+ ..isIsolateInUse = json['isIsolateInUse']
+ ..isFunctionApplyUsed = json['isFunctionApplyUsed']
+ ..isMirrorsUsed = json['isMirrorsUsed']
+ ..minified = json['minified'];
+
+ // TODO(het): Revert this when the dart2js with the new codec is in stable
+ var compilationDuration = json['compilationDuration'];
+ if (compilationDuration is String) {
+ programInfo.compilationDuration = _parseDuration(compilationDuration);
+ } else {
+ assert(compilationDuration is int);
+ programInfo.compilationDuration =
+ new Duration(microseconds: compilationDuration);
+ }
+
+ var toJsonDuration = json['toJsonDuration'];
+ if (toJsonDuration is String) {
+ programInfo.toJsonDuration = _parseDuration(toJsonDuration);
+ } else {
+ assert(toJsonDuration is int);
+ programInfo.toJsonDuration = new Duration(microseconds: toJsonDuration);
+ }
+
+ var dumpInfoDuration = json['dumpInfoDuration'];
+ if (dumpInfoDuration is String) {
+ programInfo.dumpInfoDuration = _parseDuration(dumpInfoDuration);
+ } else {
+ assert(dumpInfoDuration is int);
+ programInfo.dumpInfoDuration =
+ new Duration(microseconds: dumpInfoDuration);
+ }
+
+ return programInfo;
+ }
+
+ /// Parse a string formatted as "XX:YY:ZZ.ZZZZZ" into a [Duration].
+ Duration _parseDuration(String duration) {
+ if (!duration.contains(':')) {
+ return new Duration(milliseconds: int.parse(duration));
+ }
+ var parts = duration.split(':');
+ var hours = double.parse(parts[0]);
+ var minutes = double.parse(parts[1]);
+ var seconds = double.parse(parts[2]);
+ const secondsInMillis = 1000;
+ const minutesInMillis = 60 * secondsInMillis;
+ const hoursInMillis = 60 * minutesInMillis;
+ var totalMillis = secondsInMillis * seconds +
+ minutesInMillis * minutes +
+ hoursInMillis * hours;
+ return new Duration(milliseconds: totalMillis.round());
+ }
+
+ FunctionInfo parseFunction(Map json) {
+ FunctionInfo result = parseId(json['id']);
+ return result
+ ..name = json['name']
+ ..parent = parseId(json['parent'])
+ ..coverageId = json['coverageId']
+ ..outputUnit = parseId(json['outputUnit'])
+ ..size = json['size']
+ ..type = json['type']
+ ..returnType = json['returnType']
+ ..inferredReturnType = json['inferredReturnType']
+ ..parameters =
+ (json['parameters'] as List).map((p) => parseParameter(p)).toList()
+ ..code = parseCode(json['code'])
+ ..sideEffects = json['sideEffects']
+ ..inlinedCount = json['inlinedCount']
+ ..modifiers =
+ parseModifiers(new Map<String, bool>.from(json['modifiers']))
+ ..closures = (json['children'] as List)
+ .map<ClosureInfo>((c) => parseId(c))
+ .toList();
+ }
+
+ ParameterInfo parseParameter(Map json) =>
+ new ParameterInfo(json['name'], json['type'], json['declaredType']);
+
+ FunctionModifiers parseModifiers(Map<String, bool> json) {
+ return new FunctionModifiers(
+ isStatic: json['static'] == true,
+ isConst: json['const'] == true,
+ isFactory: json['factory'] == true,
+ isExternal: json['external'] == true);
+ }
+
+ ClosureInfo parseClosure(Map json) {
+ ClosureInfo result = parseId(json['id']);
+ return result
+ ..name = json['name']
+ ..parent = parseId(json['parent'])
+ ..outputUnit = parseId(json['outputUnit'])
+ ..size = json['size']
+ ..function = parseId(json['function']);
+ }
+
+ Info parseId(id) {
+ String serializedId = id;
+ if (serializedId == null) {
+ return null;
+ }
+ return registry.putIfAbsent(serializedId, () {
+ if (serializedId.startsWith('function/')) {
+ return new FunctionInfo.internal();
+ } else if (serializedId.startsWith('closure/')) {
+ return new ClosureInfo.internal();
+ } else if (serializedId.startsWith('library/')) {
+ return new LibraryInfo.internal();
+ } else if (serializedId.startsWith('class/')) {
+ return new ClassInfo.internal();
+ } else if (serializedId.startsWith('field/')) {
+ return new FieldInfo.internal();
+ } else if (serializedId.startsWith('constant/')) {
+ return new ConstantInfo.internal();
+ } else if (serializedId.startsWith('typedef/')) {
+ return new TypedefInfo.internal();
+ } else if (serializedId.startsWith('outputUnit/')) {
+ return new OutputUnitInfo.internal();
+ }
+ assert(false);
+ return null;
+ });
+ }
+
+ List<CodeSpan> parseCode(dynamic json) {
+ // backwards compatibility with format 5.1:
+ if (json is String) {
+ return [new CodeSpan(start: null, end: null, text: json)];
+ }
+
+ if (json is List) {
+ return json.map((dynamic value) {
+ Map<String, dynamic> jsonCode = value;
+ return new CodeSpan(
+ start: jsonCode['start'],
+ end: jsonCode['end'],
+ text: jsonCode['text']);
+ }).toList();
+ }
+
+ return [];
+ }
+}
+
+class AllInfoToJsonConverter extends Converter<AllInfo, Map>
+ implements InfoVisitor<Map> {
+ /// Whether to generate json compatible with format 5.1
+ final bool isBackwardCompatible;
+ final Map<Info, Id> ids = new HashMap<Info, Id>();
+ final Set<int> usedIds = new Set<int>();
+
+ AllInfoToJsonConverter({this.isBackwardCompatible: false});
+
+ Id idFor(Info info) {
+ var serializedId = ids[info];
+ if (serializedId != null) return serializedId;
+
+ assert(
+ info is LibraryInfo ||
+ info is ConstantInfo ||
+ info is OutputUnitInfo ||
+ info.parent != null,
+ "$info");
+
+ int id;
+ if (info is ConstantInfo) {
+ // No name and no parent, so `longName` isn't helpful
+ assert(info.name == null);
+ assert(info.parent == null);
+ assert(info.code != null);
+ // Instead, use the content of the code.
+ id = info.code.first.text.hashCode;
+ } else {
+ id = longName(info, useLibraryUri: true, forId: true).hashCode;
+ }
+
+ while (!usedIds.add(id)) {
+ id++;
+ }
+ serializedId = new Id(info.kind, '$id');
+ return ids[info] = serializedId;
+ }
+
+ Map convert(AllInfo info) => info.accept(this);
+
+ Map _visitList(List<Info> infos) {
+ // Using SplayTree to maintain a consistent order of keys
+ var map = new SplayTreeMap<String, Map>(compareNatural);
+ for (var info in infos) {
+ map['${idFor(info).id}'] = info.accept(this);
+ }
+ return map;
+ }
+
+ Map _visitAllInfoElements(AllInfo info) {
+ var jsonLibraries = _visitList(info.libraries);
+ var jsonClasses = _visitList(info.classes);
+ var jsonFunctions = _visitList(info.functions);
+ var jsonTypedefs = _visitList(info.typedefs);
+ var jsonFields = _visitList(info.fields);
+ var jsonConstants = _visitList(info.constants);
+ var jsonClosures = _visitList(info.closures);
+ return {
+ 'library': jsonLibraries,
+ 'class': jsonClasses,
+ 'function': jsonFunctions,
+ 'typedef': jsonTypedefs,
+ 'field': jsonFields,
+ 'constant': jsonConstants,
+ 'closure': jsonClosures,
+ };
+ }
+
+ Map _visitDependencyInfo(DependencyInfo info) =>
+ {'id': idFor(info.target).serializedId, 'mask': info.mask};
+
+ Map _visitAllInfoHolding(AllInfo allInfo) {
+ var map = new SplayTreeMap<String, List>(compareNatural);
+ void helper(CodeInfo info) {
+ if (info.uses.isEmpty) return;
+ map[idFor(info).serializedId] = info.uses
+ .map(_visitDependencyInfo)
+ .toList()
+ ..sort((a, b) => a['id'].compareTo(b['id']));
+ }
+
+ allInfo.functions.forEach(helper);
+ allInfo.fields.forEach(helper);
+ return map;
+ }
+
+ Map _visitAllInfoDependencies(AllInfo allInfo) {
+ var map = new SplayTreeMap<String, List>(compareNatural);
+ allInfo.dependencies.forEach((k, v) {
+ map[idFor(k).serializedId] = _toSortedSerializedIds(v, idFor);
+ });
+ return map;
+ }
+
+ Map visitAll(AllInfo info) {
+ var elements = _visitAllInfoElements(info);
+ var jsonHolding = _visitAllInfoHolding(info);
+ var jsonDependencies = _visitAllInfoDependencies(info);
+ return {
+ 'elements': elements,
+ 'holding': jsonHolding,
+ 'dependencies': jsonDependencies,
+ 'outputUnits': info.outputUnits.map((u) => u.accept(this)).toList(),
+ 'dump_version': isBackwardCompatible ? 5 : info.version,
+ 'deferredFiles': info.deferredFiles,
+ 'dump_minor_version': isBackwardCompatible ? 1 : info.minorVersion,
+ 'program': info.program.accept(this)
+ };
+ }
+
+ Map visitProgram(ProgramInfo info) {
+ return {
+ 'entrypoint': idFor(info.entrypoint).serializedId,
+ 'size': info.size,
+ 'dart2jsVersion': info.dart2jsVersion,
+ 'compilationMoment': '${info.compilationMoment}',
+ 'compilationDuration': info.compilationDuration.inMicroseconds,
+ 'toJsonDuration': info.toJsonDuration.inMicroseconds,
+ 'dumpInfoDuration': info.dumpInfoDuration.inMicroseconds,
+ 'noSuchMethodEnabled': info.noSuchMethodEnabled,
+ 'isRuntimeTypeUsed': info.isRuntimeTypeUsed,
+ 'isIsolateInUse': info.isIsolateInUse,
+ 'isFunctionApplyUsed': info.isFunctionApplyUsed,
+ 'isMirrorsUsed': info.isMirrorsUsed,
+ 'minified': info.minified,
+ };
+ }
+
+ Map _visitBasicInfo(BasicInfo info) {
+ var res = {
+ 'id': idFor(info).serializedId,
+ 'kind': kindToString(info.kind),
+ 'name': info.name,
+ 'size': info.size,
+ };
+ // TODO(sigmund): Omit this also when outputUnit.id == 0 (most code is in
+ // the main output unit by default).
+ if (info.outputUnit != null) {
+ res['outputUnit'] = idFor(info.outputUnit).serializedId;
+ }
+ if (info.coverageId != null) res['coverageId'] = info.coverageId;
+ if (info.parent != null) res['parent'] = idFor(info.parent).serializedId;
+ return res;
+ }
+
+ Map visitLibrary(LibraryInfo info) {
+ return _visitBasicInfo(info)
+ ..addAll(<String, Object>{
+ 'children': _toSortedSerializedIds(
+ [
+ info.topLevelFunctions,
+ info.topLevelVariables,
+ info.classes,
+ info.typedefs
+ ].expand((i) => i),
+ idFor),
+ 'canonicalUri': '${info.uri}',
+ });
+ }
+
+ Map visitClass(ClassInfo info) {
+ return _visitBasicInfo(info)
+ ..addAll(<String, Object>{
+ // TODO(sigmund): change format, include only when abstract is true.
+ 'modifiers': {'abstract': info.isAbstract},
+ 'children': _toSortedSerializedIds(
+ [info.fields, info.functions].expand((i) => i), idFor)
+ });
+ }
+
+ Map visitField(FieldInfo info) {
+ var result = _visitBasicInfo(info)
+ ..addAll(<String, Object>{
+ 'children': _toSortedSerializedIds(info.closures, idFor),
+ 'inferredType': info.inferredType,
+ 'code': _serializeCode(info.code),
+ 'type': info.type,
+ });
+ if (info.isConst) {
+ result['const'] = true;
+ if (info.initializer != null) {
+ result['initializer'] = idFor(info.initializer).serializedId;
+ }
+ }
+ return result;
+ }
+
+ Map visitConstant(ConstantInfo info) => _visitBasicInfo(info)
+ ..addAll(<String, Object>{'code': _serializeCode(info.code)});
+
+ // TODO(sigmund): exclude false values (requires bumping the format version):
+ // var res = <String, bool>{};
+ // if (isStatic) res['static'] = true;
+ // if (isConst) res['const'] = true;
+ // if (isFactory) res['factory'] = true;
+ // if (isExternal) res['external'] = true;
+ // return res;
+ Map _visitFunctionModifiers(FunctionModifiers mods) => {
+ 'static': mods.isStatic,
+ 'const': mods.isConst,
+ 'factory': mods.isFactory,
+ 'external': mods.isExternal,
+ };
+
+ Map _visitParameterInfo(ParameterInfo info) =>
+ {'name': info.name, 'type': info.type, 'declaredType': info.declaredType};
+
+ Map visitFunction(FunctionInfo info) {
+ return _visitBasicInfo(info)
+ ..addAll(<String, Object>{
+ 'children': _toSortedSerializedIds(info.closures, idFor),
+ 'modifiers': _visitFunctionModifiers(info.modifiers),
+ 'returnType': info.returnType,
+ 'inferredReturnType': info.inferredReturnType,
+ 'parameters':
+ info.parameters.map((p) => _visitParameterInfo(p)).toList(),
+ 'sideEffects': info.sideEffects,
+ 'inlinedCount': info.inlinedCount,
+ 'code': _serializeCode(info.code),
+ 'type': info.type,
+ // Note: version 3.2 of dump-info serializes `uses` in a section called
+ // `holding` at the top-level.
+ });
+ }
+
+ Map visitClosure(ClosureInfo info) {
+ return _visitBasicInfo(info)
+ ..addAll(<String, Object>{'function': idFor(info.function).serializedId});
+ }
+
+ visitTypedef(TypedefInfo info) => _visitBasicInfo(info)..['type'] = info.type;
+
+ visitOutput(OutputUnitInfo info) => _visitBasicInfo(info)
+ ..['filename'] = info.filename
+ ..['imports'] = info.imports;
+
+ Object _serializeCode(List<CodeSpan> code) {
+ if (isBackwardCompatible) {
+ return code.map((c) => c.text).join('\n');
+ }
+ return code
+ .map<Object>((c) => {
+ 'start': c.start,
+ 'end': c.end,
+ 'text': c.text,
+ })
+ .toList();
+ }
+}
+
+class AllInfoJsonCodec extends Codec<AllInfo, Map> {
+ final Converter<AllInfo, Map> encoder;
+ final Converter<Map, AllInfo> decoder = new JsonToAllInfoConverter();
+
+ AllInfoJsonCodec({bool isBackwardCompatible: false})
+ : encoder = new AllInfoToJsonConverter(
+ isBackwardCompatible: isBackwardCompatible);
+}
+
+class Id {
+ final InfoKind kind;
+ final String id;
+
+ Id(this.kind, this.id);
+
+ String get serializedId => '${kindToString(kind)}/$id';
+}
diff --git a/pkg/dart2js_info/lib/proto_info_codec.dart b/pkg/dart2js_info/lib/proto_info_codec.dart
new file mode 100644
index 0000000..d199d09
--- /dev/null
+++ b/pkg/dart2js_info/lib/proto_info_codec.dart
@@ -0,0 +1,312 @@
+// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Converters and codecs for converting between Protobuf and [Info] classes.
+
+import 'dart:convert';
+import 'package:fixnum/fixnum.dart';
+
+import 'info.dart';
+import 'src/proto/info.pb.dart';
+import 'src/util.dart';
+
+export 'src/proto/info.pb.dart';
+
+class ProtoToAllInfoConverter extends Converter<AllInfoPB, AllInfo> {
+ AllInfo convert(AllInfoPB info) {
+ // TODO(lorenvs): Implement this conversion. It is unlikely to to be used
+ // by production code since the goal of the proto codec is to consume this
+ // information from other languages. However, it is useful for roundtrip
+ // testing, so we should support it.
+ throw new UnimplementedError('ProtoToAllInfoConverter is not implemented');
+ }
+}
+
+class AllInfoToProtoConverter extends Converter<AllInfo, AllInfoPB> {
+ final Map<Info, Id> ids = {};
+ final Set<int> usedIds = new Set<int>();
+
+ Id idFor(Info info) {
+ if (info == null) return null;
+ var serializedId = ids[info];
+ if (serializedId != null) return serializedId;
+
+ assert(info is LibraryInfo ||
+ info is ConstantInfo ||
+ info is OutputUnitInfo ||
+ info.parent != null);
+
+ int id;
+ if (info is ConstantInfo) {
+ // No name and no parent, so `longName` isn't helpful
+ assert(info.name == null);
+ assert(info.parent == null);
+ assert(info.code != null);
+ // Instead, use the content of the code.
+ id = info.code.first.text.hashCode;
+ } else {
+ id = longName(info, useLibraryUri: true, forId: true).hashCode;
+ }
+ while (!usedIds.add(id)) {
+ id++;
+ }
+ serializedId = new Id(info.kind, id);
+ return ids[info] = serializedId;
+ }
+
+ AllInfoPB convert(AllInfo info) => _convertToAllInfoPB(info);
+
+ DependencyInfoPB _convertToDependencyInfoPB(DependencyInfo info) {
+ var result = new DependencyInfoPB()
+ ..targetId = idFor(info.target)?.serializedId;
+ if (info.mask != null) {
+ result.mask = info.mask;
+ }
+ return result;
+ }
+
+ static ParameterInfoPB _convertToParameterInfoPB(ParameterInfo info) {
+ return new ParameterInfoPB()
+ ..name = info.name
+ ..type = info.type
+ ..declaredType = info.declaredType;
+ }
+
+ LibraryInfoPB _convertToLibraryInfoPB(LibraryInfo info) {
+ final proto = new LibraryInfoPB()..uri = info.uri.toString();
+
+ proto.childrenIds
+ .addAll(info.topLevelFunctions.map((func) => idFor(func).serializedId));
+ proto.childrenIds.addAll(
+ info.topLevelVariables.map((field) => idFor(field).serializedId));
+ proto.childrenIds
+ .addAll(info.classes.map((clazz) => idFor(clazz).serializedId));
+ proto.childrenIds
+ .addAll(info.typedefs.map((def) => idFor(def).serializedId));
+
+ return proto;
+ }
+
+ ClassInfoPB _convertToClassInfoPB(ClassInfo info) {
+ final proto = new ClassInfoPB()..isAbstract = info.isAbstract;
+
+ proto.childrenIds
+ .addAll(info.functions.map((func) => idFor(func).serializedId));
+ proto.childrenIds
+ .addAll(info.fields.map((field) => idFor(field).serializedId));
+
+ return proto;
+ }
+
+ static FunctionModifiersPB _convertToFunctionModifiers(
+ FunctionModifiers modifiers) {
+ return new FunctionModifiersPB()
+ ..isStatic = modifiers.isStatic
+ ..isConst = modifiers.isConst
+ ..isFactory = modifiers.isFactory
+ ..isExternal = modifiers.isExternal;
+ }
+
+ FunctionInfoPB _convertToFunctionInfoPB(FunctionInfo info) {
+ final proto = new FunctionInfoPB()
+ ..functionModifiers = _convertToFunctionModifiers(info.modifiers)
+ ..inlinedCount = info.inlinedCount ?? 0;
+
+ if (info.returnType != null) {
+ proto.returnType = info.returnType;
+ }
+
+ if (info.inferredReturnType != null) {
+ proto.inferredReturnType = info.inferredReturnType;
+ }
+
+ if (info.code != null) {
+ proto.code = info.code.map((c) => c.text).join('\n');
+ }
+
+ if (info.sideEffects != null) {
+ proto.sideEffects = info.sideEffects;
+ }
+
+ proto.childrenIds
+ .addAll(info.closures.map(((closure) => idFor(closure).serializedId)));
+ proto.parameters.addAll(info.parameters.map(_convertToParameterInfoPB));
+
+ return proto;
+ }
+
+ FieldInfoPB _convertToFieldInfoPB(FieldInfo info) {
+ final proto = new FieldInfoPB()
+ ..type = info.type
+ ..inferredType = info.inferredType
+ ..isConst = info.isConst;
+
+ if (info.code != null) {
+ proto.code = info.code.map((c) => c.text).join('\n');
+ }
+
+ if (info.initializer != null) {
+ proto.initializerId = idFor(info.initializer).serializedId;
+ }
+
+ proto.childrenIds
+ .addAll(info.closures.map((closure) => idFor(closure).serializedId));
+
+ return proto;
+ }
+
+ static ConstantInfoPB _convertToConstantInfoPB(ConstantInfo info) {
+ return new ConstantInfoPB()..code = info.code.map((c) => c.text).join('\n');
+ }
+
+ static OutputUnitInfoPB _convertToOutputUnitInfoPB(OutputUnitInfo info) {
+ final proto = new OutputUnitInfoPB();
+ proto.imports.addAll(info.imports.where((import) => import != null));
+ return proto;
+ }
+
+ static TypedefInfoPB _convertToTypedefInfoPB(TypedefInfo info) {
+ return new TypedefInfoPB()..type = info.type;
+ }
+
+ ClosureInfoPB _convertToClosureInfoPB(ClosureInfo info) {
+ return new ClosureInfoPB()..functionId = idFor(info.function).serializedId;
+ }
+
+ InfoPB _convertToInfoPB(Info info) {
+ final proto = new InfoPB()
+ ..id = idFor(info).id
+ ..serializedId = idFor(info).serializedId
+ ..size = info.size;
+
+ if (info.name != null) {
+ proto.name = info.name;
+ }
+
+ if (info.parent != null) {
+ proto.parentId = idFor(info.parent).serializedId;
+ }
+
+ if (info.coverageId != null) {
+ proto.coverageId = info.coverageId;
+ }
+
+ if (info is BasicInfo && info.outputUnit != null) {
+ // TODO(lorenvs): Similar to the JSON codec, omit this for the default
+ // output unit. At the moment, there is no easy way to identify which
+ // output unit is the default on [OutputUnitInfo].
+ proto.outputUnitId = idFor(info.outputUnit).serializedId;
+ }
+
+ if (info is CodeInfo) {
+ proto.uses.addAll(info.uses.map(_convertToDependencyInfoPB));
+ }
+
+ if (info is LibraryInfo) {
+ proto.libraryInfo = _convertToLibraryInfoPB(info);
+ } else if (info is ClassInfo) {
+ proto.classInfo = _convertToClassInfoPB(info);
+ } else if (info is FunctionInfo) {
+ proto.functionInfo = _convertToFunctionInfoPB(info);
+ } else if (info is FieldInfo) {
+ proto.fieldInfo = _convertToFieldInfoPB(info);
+ } else if (info is ConstantInfo) {
+ proto.constantInfo = _convertToConstantInfoPB(info);
+ } else if (info is OutputUnitInfo) {
+ proto.outputUnitInfo = _convertToOutputUnitInfoPB(info);
+ } else if (info is TypedefInfo) {
+ proto.typedefInfo = _convertToTypedefInfoPB(info);
+ } else if (info is ClosureInfo) {
+ proto.closureInfo = _convertToClosureInfoPB(info);
+ }
+
+ return proto;
+ }
+
+ ProgramInfoPB _convertToProgramInfoPB(ProgramInfo info) {
+ var result = new ProgramInfoPB()
+ ..entrypointId = idFor(info.entrypoint).serializedId
+ ..size = info.size
+ ..compilationMoment =
+ new Int64(info.compilationMoment.microsecondsSinceEpoch)
+ ..compilationDuration = new Int64(info.compilationDuration.inMicroseconds)
+ ..toProtoDuration = new Int64(info.toJsonDuration.inMicroseconds)
+ ..dumpInfoDuration = new Int64(info.dumpInfoDuration.inMicroseconds)
+ ..noSuchMethodEnabled = info.noSuchMethodEnabled ?? false
+ ..isRuntimeTypeUsed = info.isRuntimeTypeUsed ?? false
+ ..isIsolateUsed = info.isIsolateInUse ?? false
+ ..isFunctionApplyUsed = info.isFunctionApplyUsed ?? false
+ ..isMirrorsUsed = info.isMirrorsUsed ?? false
+ ..minified = info.minified ?? false;
+
+ if (info.dart2jsVersion != null) {
+ result.dart2jsVersion = info.dart2jsVersion;
+ }
+ return result;
+ }
+
+ Iterable<MapEntry<String, InfoPB>> _convertToAllInfosEntries<T extends Info>(
+ Iterable<T> infos) sync* {
+ for (final info in infos) {
+ final infoProto = _convertToInfoPB(info);
+ final entry = MapEntry<String, InfoPB>(infoProto.serializedId, infoProto);
+ yield entry;
+ }
+ }
+
+ static LibraryDeferredImportsPB _convertToLibraryDeferredImportsPB(
+ String libraryUri, Map<String, dynamic> fields) {
+ final proto = new LibraryDeferredImportsPB()
+ ..libraryUri = libraryUri
+ ..libraryName = fields['name'] ?? '<unnamed>';
+
+ Map<String, List<String>> imports = fields['imports'];
+ imports.forEach((prefix, files) {
+ final import = new DeferredImportPB()..prefix = prefix;
+ import.files.addAll(files);
+ proto.imports.add(import);
+ });
+
+ return proto;
+ }
+
+ AllInfoPB _convertToAllInfoPB(AllInfo info) {
+ final proto = new AllInfoPB()
+ ..program = _convertToProgramInfoPB(info.program);
+
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.libraries));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.classes));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.functions));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.fields));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.constants));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.outputUnits));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.typedefs));
+ proto.allInfos.addEntries(_convertToAllInfosEntries(info.closures));
+
+ info.deferredFiles?.forEach((libraryUri, fields) {
+ proto.deferredImports
+ .add(_convertToLibraryDeferredImportsPB(libraryUri, fields));
+ });
+
+ return proto;
+ }
+}
+
+/// A codec for converting [AllInfo] to a protobuf format.
+///
+/// This codec is still experimental, and will likely crash on certain output
+/// from dart2js.
+class AllInfoProtoCodec extends Codec<AllInfo, AllInfoPB> {
+ final Converter<AllInfo, AllInfoPB> encoder = new AllInfoToProtoConverter();
+ final Converter<AllInfoPB, AllInfo> decoder = new ProtoToAllInfoConverter();
+}
+
+class Id {
+ final InfoKind kind;
+ final int id;
+
+ Id(this.kind, this.id);
+
+ String get serializedId => '${kindToString(kind)}/$id';
+}
diff --git a/pkg/dart2js_info/lib/src/binary/sink.dart b/pkg/dart2js_info/lib/src/binary/sink.dart
new file mode 100644
index 0000000..7cacadc
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/binary/sink.dart
@@ -0,0 +1,401 @@
+// 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:typed_data';
+
+/// Interface for serialization.
+// TODO(sigmund): share this with pkg:compiler/src/serialization/*
+abstract class DataSink {
+ /// The amount of data written to this data sink.
+ ///
+ /// The units is based on the underlying data structure for this data sink.
+ int get length;
+
+ /// Flushes any pending data and closes this data sink.
+ ///
+ /// The data sink can no longer be written to after closing.
+ void close();
+
+ /// Writes a reference to [value] to this data sink. If [value] has not yet
+ /// been serialized, [f] is called to serialize the value itself.
+ void writeCached<E>(E value, void f(E value));
+
+ /// Writes the potentially `null` [value] to this data sink. If [value] is
+ /// non-null [f] is called to write the non-null value to the data sink.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readValueOrNull].
+ void writeValueOrNull<E>(E value, void f(E value));
+
+ /// Writes the [values] to this data sink calling [f] to write each value to
+ /// the data sink. If [allowNull] is `true`, [values] is allowed to be `null`.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readList].
+ void writeList<E>(Iterable<E> values, void f(E value),
+ {bool allowNull: false});
+
+ /// Writes the boolean [value] to this data sink.
+ void writeBool(bool value);
+
+ /// Writes the non-negative integer [value] to this data sink.
+ void writeInt(int value);
+
+ /// Writes the potentially `null` non-negative [value] to this data sink.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readIntOrNull].
+ void writeIntOrNull(int value);
+
+ /// Writes the string [value] to this data sink.
+ void writeString(String value);
+
+ /// Writes the potentially `null` string [value] to this data sink.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readStringOrNull].
+ void writeStringOrNull(String value);
+
+ /// Writes the string [values] to this data sink. If [allowNull] is `true`,
+ /// [values] is allowed to be `null`.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readStrings].
+ void writeStrings(Iterable<String> values, {bool allowNull: false});
+
+ /// Writes the [map] from string to [V] values to this data sink, calling [f]
+ /// to write each value to the data sink. If [allowNull] is `true`, [map] is
+ /// allowed to be `null`.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSource.readStringMap].
+ void writeStringMap<V>(Map<String, V> map, void f(V value),
+ {bool allowNull: false});
+
+ /// Writes the enum value [value] to this data sink.
+ // TODO(johnniwinther): Change the signature to
+ // `void writeEnum<E extends Enum<E>>(E value);` when an interface for enums
+ // is added to the language.
+ void writeEnum(dynamic value);
+
+ /// Writes the URI [value] to this data sink.
+ void writeUri(Uri value);
+}
+
+/// Mixin that implements all convenience methods of [DataSink].
+abstract class DataSinkMixin implements DataSink {
+ @override
+ void writeIntOrNull(int value) {
+ writeBool(value != null);
+ if (value != null) {
+ writeInt(value);
+ }
+ }
+
+ @override
+ void writeStringOrNull(String value) {
+ writeBool(value != null);
+ if (value != null) {
+ writeString(value);
+ }
+ }
+
+ @override
+ void writeStrings(Iterable<String> values, {bool allowNull: false}) {
+ if (values == null) {
+ assert(allowNull);
+ writeInt(0);
+ } else {
+ writeInt(values.length);
+ for (String value in values) {
+ writeString(value);
+ }
+ }
+ }
+
+ @override
+ void writeStringMap<V>(Map<String, V> map, void f(V value),
+ {bool allowNull: false}) {
+ if (map == null) {
+ assert(allowNull);
+ writeInt(0);
+ } else {
+ writeInt(map.length);
+ map.forEach((String key, V value) {
+ writeString(key);
+ f(value);
+ });
+ }
+ }
+
+ @override
+ void writeList<E>(Iterable<E> values, void f(E value),
+ {bool allowNull: false}) {
+ if (values == null) {
+ assert(allowNull);
+ writeInt(0);
+ } else {
+ writeInt(values.length);
+ values.forEach(f);
+ }
+ }
+
+ @override
+ void writeValueOrNull<E>(E value, void f(E value)) {
+ writeBool(value != null);
+ if (value != null) {
+ f(value);
+ }
+ }
+}
+
+/// Data sink helper that canonicalizes [E] values using indices.
+class IndexedSink<E> {
+ final void Function(int) _writeInt;
+ final Map<E, int> _cache = {};
+
+ IndexedSink(this._writeInt);
+
+ /// Write a reference to [value] to the data sink.
+ ///
+ /// If [value] has not been canonicalized yet, [writeValue] is called to
+ /// serialize the [value] itself.
+ void write(E value, void writeValue(E value)) {
+ int index = _cache[value];
+ if (index == null) {
+ index = _cache.length;
+ _cache[value] = index;
+ _writeInt(index);
+ writeValue(value);
+ } else {
+ _writeInt(index);
+ }
+ }
+}
+
+/// Base implementation of [DataSink] using [DataSinkMixin] to implement
+/// convenience methods.
+abstract class AbstractDataSink extends DataSinkMixin implements DataSink {
+ IndexedSink<String> _stringIndex;
+ IndexedSink<Uri> _uriIndex;
+ Map<Type, IndexedSink> _generalCaches = {};
+
+ AbstractDataSink() {
+ _stringIndex = new IndexedSink<String>(_writeIntInternal);
+ _uriIndex = new IndexedSink<Uri>(_writeIntInternal);
+ }
+
+ @override
+ void writeCached<E>(E value, void f(E value)) {
+ IndexedSink sink =
+ _generalCaches[E] ??= new IndexedSink<E>(_writeIntInternal);
+ sink.write(value, (v) => f(v));
+ }
+
+ @override
+ void writeEnum(dynamic value) {
+ _writeEnumInternal(value);
+ }
+
+ @override
+ void writeBool(bool value) {
+ assert(value != null);
+ _writeIntInternal(value ? 1 : 0);
+ }
+
+ @override
+ void writeUri(Uri value) {
+ assert(value != null);
+ _writeUri(value);
+ }
+
+ @override
+ void writeString(String value) {
+ assert(value != null);
+ _writeString(value);
+ }
+
+ @override
+ void writeInt(int value) {
+ assert(value != null);
+ assert(value >= 0 && value >> 30 == 0);
+ _writeIntInternal(value);
+ }
+
+ void _writeString(String value) {
+ _stringIndex.write(value, _writeStringInternal);
+ }
+
+ void _writeUri(Uri value) {
+ _uriIndex.write(value, _writeUriInternal);
+ }
+
+ /// Actual serialization of a URI value, implemented by subclasses.
+ void _writeUriInternal(Uri value);
+
+ /// Actual serialization of a String value, implemented by subclasses.
+ void _writeStringInternal(String value);
+
+ /// Actual serialization of a non-negative integer value, implemented by
+ /// subclasses.
+ void _writeIntInternal(int value);
+
+ /// Actual serialization of an enum value, implemented by subclasses.
+ void _writeEnumInternal(dynamic value);
+}
+
+/// [DataSink] that writes data as a sequence of bytes.
+///
+/// This data sink works together with [BinarySource].
+class BinarySink extends AbstractDataSink {
+ final Sink<List<int>> sink;
+ BufferedSink _bufferedSink;
+ int _length = 0;
+
+ BinarySink(this.sink) : _bufferedSink = new BufferedSink(sink);
+
+ @override
+ void _writeUriInternal(Uri value) {
+ _writeString(value.toString());
+ }
+
+ @override
+ void _writeStringInternal(String value) {
+ List<int> bytes = utf8.encode(value);
+ _writeIntInternal(bytes.length);
+ _bufferedSink.addBytes(bytes);
+ _length += bytes.length;
+ }
+
+ @override
+ void _writeIntInternal(int value) {
+ assert(value >= 0 && value >> 30 == 0);
+ if (value < 0x80) {
+ _bufferedSink.addByte(value);
+ _length += 1;
+ } else if (value < 0x4000) {
+ _bufferedSink.addByte2((value >> 8) | 0x80, value & 0xFF);
+ _length += 2;
+ } else {
+ _bufferedSink.addByte4((value >> 24) | 0xC0, (value >> 16) & 0xFF,
+ (value >> 8) & 0xFF, value & 0xFF);
+ _length += 4;
+ }
+ }
+
+ @override
+ void _writeEnumInternal(dynamic value) {
+ _writeIntInternal(value.index);
+ }
+
+ void close() {
+ _bufferedSink.flushAndDestroy();
+ _bufferedSink = null;
+ sink.close();
+ }
+
+ /// Returns the number of bytes written to this data sink.
+ int get length => _length;
+}
+
+/// Puts a buffer in front of a [Sink<List<int>>].
+// TODO(sigmund): share with the implementation in
+// package:kernel/binary/ast_to_binary.dart
+class BufferedSink {
+ static const int SIZE = 100000;
+ static const int SAFE_SIZE = SIZE - 5;
+ static const int SMALL = 10000;
+ final Sink<List<int>> _sink;
+ Uint8List _buffer = new Uint8List(SIZE);
+ int length = 0;
+ int flushedLength = 0;
+
+ Float64List _doubleBuffer = new Float64List(1);
+ Uint8List _doubleBufferUint8;
+
+ int get offset => length + flushedLength;
+
+ BufferedSink(this._sink);
+
+ void addDouble(double d) {
+ _doubleBufferUint8 ??= _doubleBuffer.buffer.asUint8List();
+ _doubleBuffer[0] = d;
+ addByte4(_doubleBufferUint8[0], _doubleBufferUint8[1],
+ _doubleBufferUint8[2], _doubleBufferUint8[3]);
+ addByte4(_doubleBufferUint8[4], _doubleBufferUint8[5],
+ _doubleBufferUint8[6], _doubleBufferUint8[7]);
+ }
+
+ void addByte(int byte) {
+ _buffer[length++] = byte;
+ if (length == SIZE) {
+ _sink.add(_buffer);
+ _buffer = new Uint8List(SIZE);
+ length = 0;
+ flushedLength += SIZE;
+ }
+ }
+
+ void addByte2(int byte1, int byte2) {
+ if (length < SAFE_SIZE) {
+ _buffer[length++] = byte1;
+ _buffer[length++] = byte2;
+ } else {
+ addByte(byte1);
+ addByte(byte2);
+ }
+ }
+
+ void addByte4(int byte1, int byte2, int byte3, int byte4) {
+ if (length < SAFE_SIZE) {
+ _buffer[length++] = byte1;
+ _buffer[length++] = byte2;
+ _buffer[length++] = byte3;
+ _buffer[length++] = byte4;
+ } else {
+ addByte(byte1);
+ addByte(byte2);
+ addByte(byte3);
+ addByte(byte4);
+ }
+ }
+
+ void addBytes(List<int> bytes) {
+ // Avoid copying a large buffer into the another large buffer. Also, if
+ // the bytes buffer is too large to fit in our own buffer, just emit both.
+ if (length + bytes.length < SIZE &&
+ (bytes.length < SMALL || length < SMALL)) {
+ _buffer.setRange(length, length + bytes.length, bytes);
+ length += bytes.length;
+ } else if (bytes.length < SMALL) {
+ // Flush as much as we can in the current buffer.
+ _buffer.setRange(length, SIZE, bytes);
+ _sink.add(_buffer);
+ // Copy over the remainder into a new buffer. It is guaranteed to fit
+ // because the input byte array is small.
+ int alreadyEmitted = SIZE - length;
+ int remainder = bytes.length - alreadyEmitted;
+ _buffer = new Uint8List(SIZE);
+ _buffer.setRange(0, remainder, bytes, alreadyEmitted);
+ length = remainder;
+ flushedLength += SIZE;
+ } else {
+ flush();
+ _sink.add(bytes);
+ flushedLength += bytes.length;
+ }
+ }
+
+ void flush() {
+ _sink.add(_buffer.sublist(0, length));
+ _buffer = new Uint8List(SIZE);
+ flushedLength += length;
+ length = 0;
+ }
+
+ void flushAndDestroy() {
+ _sink.add(_buffer.sublist(0, length));
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/binary/source.dart b/pkg/dart2js_info/lib/src/binary/source.dart
new file mode 100644
index 0000000..5ada983
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/binary/source.dart
@@ -0,0 +1,296 @@
+// 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:typed_data';
+import 'dart:convert';
+
+/// Interface for deserialization.
+// TODO(sigmund): share this with pkg:compiler/src/serialization/*
+abstract class DataSource {
+ /// Reads a reference to an [E] value from this data source. If the value has
+ /// not yet been deserialized, [f] is called to deserialize the value itself.
+ E readCached<E>(E f());
+
+ /// Reads a potentially `null` [E] value from this data source, calling [f] to
+ /// read the non-null value from the data source.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeValueOrNull].
+ E readValueOrNull<E>(E f());
+
+ /// Reads a list of [E] values from this data source. If [emptyAsNull] is
+ /// `true`, `null` is returned instead of an empty list.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeList].
+ List<E> readList<E>(E f(), {bool emptyAsNull: false});
+
+ /// Reads a boolean value from this data source.
+ bool readBool();
+
+ /// Reads a non-negative integer value from this data source.
+ int readInt();
+
+ /// Reads a potentially `null` non-negative integer value from this data
+ /// source.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeIntOrNull].
+ int readIntOrNull();
+
+ /// Reads a string value from this data source.
+ String readString();
+
+ /// Reads a potentially `null` string value from this data source.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeStringOrNull].
+ String readStringOrNull();
+
+ /// Reads a list of string values from this data source. If [emptyAsNull] is
+ /// `true`, `null` is returned instead of an empty list.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeStrings].
+ List<String> readStrings({bool emptyAsNull: false});
+
+ /// Reads a map from string values to [V] values from this data source,
+ /// calling [f] to read each value from the data source. If [emptyAsNull] is
+ /// `true`, `null` is returned instead of an empty map.
+ ///
+ /// This is a convenience method to be used together with
+ /// [DataSink.writeStringMap].
+ Map<String, V> readStringMap<V>(V f(), {bool emptyAsNull: false});
+
+ /// Reads an enum value from the list of enum [values] from this data source.
+ ///
+ /// The [values] argument is intended to be the static `.values` field on
+ /// enum classes, for instance:
+ ///
+ /// enum Foo { bar, baz }
+ /// ...
+ /// Foo foo = source.readEnum(Foo.values);
+ ///
+ E readEnum<E>(List<E> values);
+
+ /// Reads a URI value from this data source.
+ Uri readUri();
+}
+
+/// Mixin that implements all convenience methods of [DataSource].
+abstract class DataSourceMixin implements DataSource {
+ @override
+ E readValueOrNull<E>(E f()) {
+ bool hasValue = readBool();
+ if (hasValue) {
+ return f();
+ }
+ return null;
+ }
+
+ @override
+ List<E> readList<E>(E f(), {bool emptyAsNull: false}) {
+ int count = readInt();
+ if (count == 0 && emptyAsNull) return null;
+ List<E> list = new List<E>(count);
+ for (int i = 0; i < count; i++) {
+ list[i] = f();
+ }
+ return list;
+ }
+
+ @override
+ int readIntOrNull() {
+ bool hasValue = readBool();
+ if (hasValue) {
+ return readInt();
+ }
+ return null;
+ }
+
+ @override
+ String readStringOrNull() {
+ bool hasValue = readBool();
+ if (hasValue) {
+ return readString();
+ }
+ return null;
+ }
+
+ @override
+ List<String> readStrings({bool emptyAsNull: false}) {
+ int count = readInt();
+ if (count == 0 && emptyAsNull) return null;
+ List<String> list = new List<String>(count);
+ for (int i = 0; i < count; i++) {
+ list[i] = readString();
+ }
+ return list;
+ }
+
+ @override
+ Map<String, V> readStringMap<V>(V f(), {bool emptyAsNull: false}) {
+ int count = readInt();
+ if (count == 0 && emptyAsNull) return null;
+ Map<String, V> map = {};
+ for (int i = 0; i < count; i++) {
+ String key = readString();
+ V value = f();
+ map[key] = value;
+ }
+ return map;
+ }
+}
+
+/// Data source helper reads canonicalized [E] values through indices.
+class IndexedSource<E> {
+ final int Function() _readInt;
+ final List<E> _cache = [];
+ final Set<int> _pending = new Set();
+
+ IndexedSource(this._readInt);
+
+ /// Reads a reference to an [E] value from the data source.
+ ///
+ /// If the value hasn't yet been read, [readValue] is called to deserialize
+ /// the value itself.
+ E read(E readValue()) {
+ int index = _readInt();
+ if (_pending.contains(index)) throw "serialization cycles not supported";
+ if (index >= _cache.length) {
+ _pending.add(index);
+ _cache.add(null);
+ E value = readValue();
+ _pending.remove(index);
+ _cache[index] = value;
+ return value;
+ } else {
+ return _cache[index];
+ }
+ }
+}
+
+/// Base implementation of [DataSource] using [DataSourceMixin] to implement
+/// convenience methods.
+abstract class AbstractDataSource extends DataSourceMixin
+ implements DataSource {
+ IndexedSource<String> _stringIndex;
+ IndexedSource<Uri> _uriIndex;
+ Map<Type, IndexedSource> _generalCaches = {};
+
+ AbstractDataSource() {
+ _stringIndex = new IndexedSource<String>(_readIntInternal);
+ _uriIndex = new IndexedSource<Uri>(_readIntInternal);
+ }
+
+ @override
+ E readCached<E>(E f()) {
+ IndexedSource source =
+ _generalCaches[E] ??= new IndexedSource<E>(_readIntInternal);
+ return source.read(f);
+ }
+
+ @override
+ E readEnum<E>(List<E> values) {
+ return _readEnumInternal(values);
+ }
+
+ @override
+ Uri readUri() {
+ return _readUri();
+ }
+
+ Uri _readUri() {
+ return _uriIndex.read(_readUriInternal);
+ }
+
+ @override
+ bool readBool() {
+ int value = _readIntInternal();
+ assert(value == 0 || value == 1);
+ return value == 1;
+ }
+
+ @override
+ String readString() {
+ return _readString();
+ }
+
+ String _readString() {
+ return _stringIndex.read(_readStringInternal);
+ }
+
+ @override
+ int readInt() {
+ return _readIntInternal();
+ }
+
+ /// Actual deserialization of a string value, implemented by subclasses.
+ String _readStringInternal();
+
+ /// Actual deserialization of a non-negative integer value, implemented by
+ /// subclasses.
+ int _readIntInternal();
+
+ /// Actual deserialization of a URI value, implemented by subclasses.
+ Uri _readUriInternal();
+
+ /// Actual deserialization of an enum value in [values], implemented by
+ /// subclasses.
+ E _readEnumInternal<E>(List<E> values);
+}
+
+/// [DataSource] that reads data from a sequence of bytes.
+///
+/// This data source works together with [BinarySink].
+class BinarySource extends AbstractDataSource {
+ int _byteOffset = 0;
+ final List<int> _bytes;
+
+ BinarySource(this._bytes);
+ int _readByte() => _bytes[_byteOffset++];
+
+ @override
+ String _readStringInternal() {
+ int length = _readIntInternal();
+ List<int> bytes = new Uint8List(length);
+ bytes.setRange(0, bytes.length, _bytes, _byteOffset);
+ _byteOffset += bytes.length;
+ return utf8.decode(bytes);
+ }
+
+ @override
+ int _readIntInternal() {
+ var byte = _readByte();
+ if (byte & 0x80 == 0) {
+ // 0xxxxxxx
+ return byte;
+ } else if (byte & 0x40 == 0) {
+ // 10xxxxxx
+ return ((byte & 0x3F) << 8) | _readByte();
+ } else {
+ // 11xxxxxx
+ return ((byte & 0x3F) << 24) |
+ (_readByte() << 16) |
+ (_readByte() << 8) |
+ _readByte();
+ }
+ }
+
+ @override
+ Uri _readUriInternal() {
+ String text = _readString();
+ return Uri.parse(text);
+ }
+
+ @override
+ E _readEnumInternal<E>(List<E> values) {
+ int index = _readIntInternal();
+ assert(
+ 0 <= index && index < values.length,
+ "Invalid data kind index. "
+ "Expected one of $values, found index $index.");
+ return values[index];
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/diff.dart b/pkg/dart2js_info/lib/src/diff.dart
new file mode 100644
index 0000000..2d43f28
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/diff.dart
@@ -0,0 +1,165 @@
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/util.dart';
+
+class Diff {
+ final BasicInfo info;
+ final DiffKind kind;
+ Diff(this.info, this.kind);
+}
+
+enum DiffKind { add, remove, size, deferred }
+
+class RemoveDiff extends Diff {
+ RemoveDiff(BasicInfo info) : super(info, DiffKind.remove);
+}
+
+class AddDiff extends Diff {
+ AddDiff(BasicInfo info) : super(info, DiffKind.add);
+}
+
+class SizeDiff extends Diff {
+ final int sizeDifference;
+ SizeDiff(BasicInfo info, this.sizeDifference) : super(info, DiffKind.size);
+}
+
+class DeferredStatusDiff extends Diff {
+ final bool wasDeferredBefore;
+ DeferredStatusDiff(BasicInfo info, this.wasDeferredBefore)
+ : super(info, DiffKind.deferred);
+}
+
+List<Diff> diff(AllInfo oldInfo, AllInfo newInfo) {
+ var differ = new _InfoDiffer(oldInfo, newInfo);
+ differ.diff();
+ return differ.diffs;
+}
+
+class _InfoDiffer extends InfoVisitor<Null> {
+ final AllInfo _old;
+ final AllInfo _new;
+
+ BasicInfo _other;
+
+ List<Diff> diffs = <Diff>[];
+
+ _InfoDiffer(this._old, this._new);
+
+ void diff() {
+ _diffList(_old.libraries, _new.libraries);
+ }
+
+ @override
+ visitAll(AllInfo info) {
+ throw new StateError('should not diff AllInfo');
+ }
+
+ @override
+ visitProgram(ProgramInfo info) {
+ throw new StateError('should not diff ProgramInfo');
+ }
+
+ @override
+ visitOutput(OutputUnitInfo info) {
+ throw new StateError('should not diff OutputUnitInfo');
+ }
+
+ // TODO(het): diff constants
+ @override
+ visitConstant(ConstantInfo info) {
+ throw new StateError('should not diff ConstantInfo');
+ }
+
+ @override
+ visitLibrary(LibraryInfo info) {
+ var other = _other as LibraryInfo;
+ _checkSize(info, other);
+ _diffList(info.topLevelVariables, other.topLevelVariables);
+ _diffList(info.topLevelFunctions, other.topLevelFunctions);
+ _diffList(info.classes, other.classes);
+ }
+
+ @override
+ visitClass(ClassInfo info) {
+ var other = _other as ClassInfo;
+ _checkSize(info, other);
+ _checkDeferredStatus(info, other);
+ _diffList(info.fields, other.fields);
+ _diffList(info.functions, other.functions);
+ }
+
+ @override
+ visitClosure(ClosureInfo info) {
+ var other = _other as ClosureInfo;
+ _checkSize(info, other);
+ _checkDeferredStatus(info, other);
+ _diffList([info.function], [other.function]);
+ }
+
+ @override
+ visitField(FieldInfo info) {
+ var other = _other as FieldInfo;
+ _checkSize(info, other);
+ _checkDeferredStatus(info, other);
+ _diffList(info.closures, other.closures);
+ }
+
+ @override
+ visitFunction(FunctionInfo info) {
+ var other = _other as FunctionInfo;
+ _checkSize(info, other);
+ _checkDeferredStatus(info, other);
+ _diffList(info.closures, other.closures);
+ }
+
+ @override
+ visitTypedef(TypedefInfo info) {
+ var other = _other as TypedefInfo;
+ _checkSize(info, other);
+ _checkDeferredStatus(info, other);
+ }
+
+ void _checkSize(BasicInfo info, BasicInfo other) {
+ if (info.size != other.size) {
+ diffs.add(new SizeDiff(info, other.size - info.size));
+ }
+ }
+
+ void _checkDeferredStatus(BasicInfo oldInfo, BasicInfo newInfo) {
+ var oldIsDeferred = _isDeferred(oldInfo);
+ var newIsDeferred = _isDeferred(newInfo);
+ if (oldIsDeferred != newIsDeferred) {
+ diffs.add(new DeferredStatusDiff(oldInfo, oldIsDeferred));
+ }
+ }
+
+ bool _isDeferred(BasicInfo info) {
+ var outputUnit = info.outputUnit;
+ return outputUnit.name != null &&
+ outputUnit.name.isNotEmpty &&
+ outputUnit.name != 'main';
+ }
+
+ void _diffList(List<BasicInfo> oldInfos, List<BasicInfo> newInfos) {
+ var oldNames = <String, BasicInfo>{};
+ var newNames = <String, BasicInfo>{};
+ for (var oldInfo in oldInfos) {
+ oldNames[longName(oldInfo, useLibraryUri: true)] = oldInfo;
+ }
+ for (var newInfo in newInfos) {
+ newNames[longName(newInfo, useLibraryUri: true)] = newInfo;
+ }
+ for (var oldName in oldNames.keys) {
+ if (newNames[oldName] == null) {
+ diffs.add(new RemoveDiff(oldNames[oldName]));
+ } else {
+ _other = newNames[oldName];
+ oldNames[oldName].accept(this);
+ }
+ }
+ for (var newName in newNames.keys) {
+ if (oldNames[newName] == null) {
+ diffs.add(new AddDiff(newNames[newName]));
+ }
+ }
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/graph.dart b/pkg/dart2js_info/lib/src/graph.dart
new file mode 100644
index 0000000..1eaabce
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/graph.dart
@@ -0,0 +1,334 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// A library to work with graphs. It contains a couple algorithms, including
+/// Tarjan's algorithm to compute strongly connected components in a graph and
+/// Cooper et al's dominator algorithm.
+///
+/// Portions of the code in this library was adapted from
+/// `package:analyzer/src/generated/collection_utilities.dart`.
+// TODO(sigmund): move this into a shared place, like quiver?
+library dart2js_info.src.graph;
+
+import 'dart:math' as math;
+
+abstract class Graph<N> {
+ Iterable<N> get nodes;
+ bool get isEmpty;
+ int get nodeCount;
+ Iterable<N> targetsOf(N source);
+ Iterable<N> sourcesOf(N source);
+
+ /// Run a topological sort of the graph. Since the graph may contain cycles,
+ /// this results in a list of strongly connected components rather than a list
+ /// of nodes. The nodes in each strongly connected components only have edges
+ /// that point to nodes in the same component or earlier components.
+ List<List<N>> computeTopologicalSort() {
+ _SccFinder<N> finder = new _SccFinder<N>(this);
+ return finder.computeTopologicalSort();
+ }
+
+ /// Whether [source] can transitively reach [target].
+ bool containsPath(N source, N target) {
+ Set<N> seen = new Set<N>();
+ bool helper(N node) {
+ if (identical(node, target)) return true;
+ if (!seen.add(node)) return false;
+ return targetsOf(node).any(helper);
+ }
+
+ return helper(source);
+ }
+
+ /// Returns all nodes reachable from [root] in post order.
+ Iterable<N> postOrder(N root) sync* {
+ var seen = new Set<N>();
+ Iterable<N> helper(N n) sync* {
+ if (!seen.add(n)) return;
+ for (var x in targetsOf(n)) {
+ yield* helper(x);
+ }
+ yield n;
+ }
+
+ yield* helper(root);
+ }
+
+ /// Returns an iterable of all nodes reachable from [root] in preorder.
+ Iterable<N> preOrder(N root) sync* {
+ var seen = new Set<N>();
+ var stack = <N>[root];
+ while (stack.isNotEmpty) {
+ var next = stack.removeLast();
+ if (!seen.contains(next)) {
+ seen.add(next);
+ yield next;
+ stack.addAll(targetsOf(next));
+ }
+ }
+ }
+
+ /// Returns a list of nodes that form a cycle containing the given node. If
+ /// the node is not part of a cycle in this graph, then a list containing only
+ /// the node itself will be returned.
+ List<N> findCycleContaining(N node) {
+ assert(node != null);
+ _SccFinder<N> finder = new _SccFinder<N>(this);
+ return finder._componentContaining(node);
+ }
+
+ /// Returns a dominator tree starting from root. This is a new graph, with the
+ /// same nodes as this graph, but where edges exist between a node and the
+ /// nodes it immediately dominates. For example, this graph:
+ ///
+ /// root
+ /// / \
+ /// a b
+ /// | / \
+ /// c d e
+ /// \ / \ /
+ /// f g
+ ///
+ /// Produces this tree:
+ ///
+ /// root
+ /// /| \
+ /// a | b
+ /// | | /|\
+ /// c | d | e
+ /// | |
+ /// f g
+ ///
+ /// Internally we compute dominators using (Cooper, Harvey, and Kennedy's
+ /// algorithm)[http://www.cs.rice.edu/~keith/EMBED/dom.pdf].
+ Graph<N> dominatorTree(N root) {
+ var iDom = (new _DominatorFinder(this)..run(root)).immediateDominators;
+ var graph = new EdgeListGraph<N>();
+ for (N node in iDom.keys) {
+ if (node != root) graph.addEdge(iDom[node], node);
+ }
+ return graph;
+ }
+}
+
+class EdgeListGraph<N> extends Graph<N> {
+ /// Edges in the graph.
+ Map<N, Set<N>> _edges = new Map<N, Set<N>>();
+
+ /// The reverse of _edges.
+ Map<N, Set<N>> _revEdges = new Map<N, Set<N>>();
+
+ Iterable<N> get nodes => _edges.keys;
+ bool get isEmpty => _edges.isEmpty;
+ int get nodeCount => _edges.length;
+
+ final _empty = new Set<N>();
+
+ Iterable<N> targetsOf(N source) => _edges[source] ?? _empty;
+ Iterable<N> sourcesOf(N source) => _revEdges[source] ?? _empty;
+
+ void addEdge(N source, N target) {
+ assert(source != null);
+ assert(target != null);
+ addNode(source);
+ addNode(target);
+ _edges[source].add(target);
+ _revEdges[target].add(source);
+ }
+
+ void addNode(N node) {
+ assert(node != null);
+ _edges.putIfAbsent(node, () => new Set<N>());
+ _revEdges.putIfAbsent(node, () => new Set<N>());
+ }
+
+ /// Remove the edge from the given [source] node to the given [target] node.
+ /// If there was no such edge then the graph will be unmodified: the number of
+ /// edges will be the same and the set of nodes will be the same (neither node
+ /// will either be added or removed).
+ void removeEdge(N source, N target) {
+ _edges[source]?.remove(target);
+ }
+
+ /// Remove the given node from this graph. As a consequence, any edges for
+ /// which that node was either a head or a tail will also be removed.
+ void removeNode(N node) {
+ _edges.remove(node);
+ var sources = _revEdges[node];
+ if (sources == null) return;
+ for (var source in sources) {
+ _edges[source].remove(node);
+ }
+ }
+
+ /// Remove all of the given nodes from this graph. As a consequence, any edges
+ /// for which those nodes were either a head or a tail will also be removed.
+ void removeAllNodes(List<N> nodes) => nodes.forEach(removeNode);
+}
+
+/// Used by the [SccFinder] to maintain information about the nodes that have
+/// been examined. There is an instance of this class per node in the graph.
+class _NodeInfo<N> {
+ /// Depth of the node corresponding to this info.
+ int index = 0;
+
+ /// Depth of the first node in a cycle.
+ int lowlink = 0;
+
+ /// Whether the corresponding node is on the stack. Used to remove the need
+ /// for searching a collection for the node each time the question needs to be
+ /// asked.
+ bool onStack = false;
+
+ /// Component that contains the corresponding node.
+ List<N> component;
+
+ _NodeInfo(int depth)
+ : index = depth,
+ lowlink = depth,
+ onStack = false;
+}
+
+/// Implements Tarjan's Algorithm for finding the strongly connected components
+/// in a graph.
+class _SccFinder<N> {
+ /// The graph to process.
+ final Graph<N> _graph;
+
+ /// The index used to uniquely identify the depth of nodes.
+ int _index = 0;
+
+ /// Nodes that are being visited in order to identify components.
+ List<N> _stack = new List<N>();
+
+ /// Information associated with each node.
+ Map<N, _NodeInfo<N>> _info = <N, _NodeInfo<N>>{};
+
+ /// All strongly connected components found, in topological sort order (each
+ /// node in a strongly connected component only has edges that point to nodes
+ /// in the same component or earlier components).
+ List<List<N>> _allComponents = new List<List<N>>();
+
+ _SccFinder(this._graph);
+
+ /// Return a list containing the nodes that are part of the strongly connected
+ /// component that contains the given node.
+ List<N> _componentContaining(N node) => _strongConnect(node).component;
+
+ /// Run Tarjan's algorithm and return the resulting list of strongly connected
+ /// components. The list is in topological sort order (each node in a strongly
+ /// connected component only has edges that point to nodes in the same
+ /// component or earlier components).
+ List<List<N>> computeTopologicalSort() {
+ for (N node in _graph.nodes) {
+ var nodeInfo = _info[node];
+ if (nodeInfo == null) _strongConnect(node);
+ }
+ return _allComponents;
+ }
+
+ /// Remove and return the top-most element from the stack.
+ N _pop() {
+ N node = _stack.removeAt(_stack.length - 1);
+ _info[node].onStack = false;
+ return node;
+ }
+
+ /// Add the given node to the stack.
+ void _push(N node) {
+ _info[node].onStack = true;
+ _stack.add(node);
+ }
+
+ /// Compute the strongly connected component that contains the given node as
+ /// well as any components containing nodes that are reachable from the given
+ /// component.
+ _NodeInfo<N> _strongConnect(N v) {
+ // Set the depth index for v to the smallest unused index
+ var vInfo = new _NodeInfo<N>(_index++);
+ _info[v] = vInfo;
+ _push(v);
+
+ for (N w in _graph.targetsOf(v)) {
+ var wInfo = _info[w];
+ if (wInfo == null) {
+ // Successor w has not yet been visited; recurse on it
+ wInfo = _strongConnect(w);
+ vInfo.lowlink = math.min(vInfo.lowlink, wInfo.lowlink);
+ } else if (wInfo.onStack) {
+ // Successor w is in stack S and hence in the current SCC
+ vInfo.lowlink = math.min(vInfo.lowlink, wInfo.index);
+ }
+ }
+
+ // If v is a root node, pop the stack and generate an SCC
+ if (vInfo.lowlink == vInfo.index) {
+ var component = new List<N>();
+ N w;
+ do {
+ w = _pop();
+ component.add(w);
+ _info[w].component = component;
+ } while (!identical(w, v));
+ _allComponents.add(component);
+ }
+ return vInfo;
+ }
+}
+
+/// Computes dominators using (Cooper, Harvey, and Kennedy's
+/// algorithm)[http://www.cs.rice.edu/~keith/EMBED/dom.pdf].
+class _DominatorFinder<N> {
+ final Graph<N> _graph;
+ Map<N, N> immediateDominators = {};
+ Map<N, int> postOrderId = {};
+ _DominatorFinder(this._graph);
+
+ run(N root) {
+ immediateDominators[root] = root;
+ bool changed = true;
+ int i = 0;
+ var nodesInPostOrder = _graph.postOrder(root).toList();
+ for (var n in nodesInPostOrder) {
+ postOrderId[n] = i++;
+ }
+ var nodesInReversedPostOrder = nodesInPostOrder.reversed;
+ while (changed) {
+ changed = false;
+ for (var n in nodesInReversedPostOrder) {
+ if (n == root) continue;
+ bool first = true;
+ N idom;
+ for (var p in _graph.sourcesOf(n)) {
+ if (immediateDominators[p] != null) {
+ if (first) {
+ idom = p;
+ first = false;
+ } else {
+ idom = _intersect(p, idom);
+ }
+ }
+ }
+ if (immediateDominators[n] != idom) {
+ immediateDominators[n] = idom;
+ changed = true;
+ }
+ }
+ }
+ }
+
+ N _intersect(N b1, N b2) {
+ var finger1 = b1;
+ var finger2 = b2;
+ while (finger1 != finger2) {
+ while (postOrderId[finger1] < postOrderId[finger2]) {
+ finger1 = immediateDominators[finger1];
+ }
+ while (postOrderId[finger2] < postOrderId[finger1]) {
+ finger2 = immediateDominators[finger2];
+ }
+ }
+ return finger1;
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/io.dart b/pkg/dart2js_info/lib/src/io.dart
new file mode 100644
index 0000000..b37c331
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/io.dart
@@ -0,0 +1,15 @@
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:dart2js_info/binary_serialization.dart' as binary;
+
+Future<AllInfo> infoFromFile(String fileName) async {
+ var file = new File(fileName);
+ if (fileName.endsWith('.json')) {
+ return new AllInfoJsonCodec().decode(jsonDecode(await file.readAsString()));
+ } else {
+ return binary.decode(file.readAsBytesSync());
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/proto/info.pb.dart b/pkg/dart2js_info/lib/src/proto/info.pb.dart
new file mode 100644
index 0000000..910b7b2
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/proto/info.pb.dart
@@ -0,0 +1,1318 @@
+///
+// Generated code. Do not modify.
+// source: info.proto
+//
+// @dart = 2.3
+// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type
+
+import 'dart:core' as $core;
+
+import 'package:fixnum/fixnum.dart' as $fixnum;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+class DependencyInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('DependencyInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'targetId')
+ ..aOS(2, 'mask')
+ ..hasRequiredFields = false;
+
+ DependencyInfoPB._() : super();
+ factory DependencyInfoPB() => create();
+ factory DependencyInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory DependencyInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ DependencyInfoPB clone() => DependencyInfoPB()..mergeFromMessage(this);
+ DependencyInfoPB copyWith(void Function(DependencyInfoPB) updates) =>
+ super.copyWith((message) => updates(message as DependencyInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DependencyInfoPB create() => DependencyInfoPB._();
+ DependencyInfoPB createEmptyInstance() => create();
+ static $pb.PbList<DependencyInfoPB> createRepeated() =>
+ $pb.PbList<DependencyInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static DependencyInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<DependencyInfoPB>(create);
+ static DependencyInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get targetId => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set targetId($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasTargetId() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearTargetId() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get mask => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set mask($core.String v) {
+ $_setString(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasMask() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMask() => clearField(2);
+}
+
+class AllInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('AllInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOM<ProgramInfoPB>(1, 'program', subBuilder: ProgramInfoPB.create)
+ ..m<$core.String, InfoPB>(2, 'allInfos',
+ entryClassName: 'AllInfoPB.AllInfosEntry',
+ keyFieldType: $pb.PbFieldType.OS,
+ valueFieldType: $pb.PbFieldType.OM,
+ valueCreator: InfoPB.create,
+ packageName: const $pb.PackageName('dart2js_info.proto'))
+ ..pc<LibraryDeferredImportsPB>(3, 'deferredImports', $pb.PbFieldType.PM,
+ subBuilder: LibraryDeferredImportsPB.create)
+ ..hasRequiredFields = false;
+
+ AllInfoPB._() : super();
+ factory AllInfoPB() => create();
+ factory AllInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory AllInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ AllInfoPB clone() => AllInfoPB()..mergeFromMessage(this);
+ AllInfoPB copyWith(void Function(AllInfoPB) updates) =>
+ super.copyWith((message) => updates(message as AllInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static AllInfoPB create() => AllInfoPB._();
+ AllInfoPB createEmptyInstance() => create();
+ static $pb.PbList<AllInfoPB> createRepeated() => $pb.PbList<AllInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static AllInfoPB getDefault() =>
+ _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<AllInfoPB>(create);
+ static AllInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ ProgramInfoPB get program => $_getN(0);
+ @$pb.TagNumber(1)
+ set program(ProgramInfoPB v) {
+ setField(1, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasProgram() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearProgram() => clearField(1);
+ @$pb.TagNumber(1)
+ ProgramInfoPB ensureProgram() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.Map<$core.String, InfoPB> get allInfos => $_getMap(1);
+
+ @$pb.TagNumber(3)
+ $core.List<LibraryDeferredImportsPB> get deferredImports => $_getList(2);
+}
+
+enum InfoPB_Concrete {
+ libraryInfo,
+ classInfo,
+ functionInfo,
+ fieldInfo,
+ constantInfo,
+ outputUnitInfo,
+ typedefInfo,
+ closureInfo,
+ notSet
+}
+
+class InfoPB extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, InfoPB_Concrete> _InfoPB_ConcreteByTag = {
+ 100: InfoPB_Concrete.libraryInfo,
+ 101: InfoPB_Concrete.classInfo,
+ 102: InfoPB_Concrete.functionInfo,
+ 103: InfoPB_Concrete.fieldInfo,
+ 104: InfoPB_Concrete.constantInfo,
+ 105: InfoPB_Concrete.outputUnitInfo,
+ 106: InfoPB_Concrete.typedefInfo,
+ 107: InfoPB_Concrete.closureInfo,
+ 0: InfoPB_Concrete.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('InfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..oo(0, [100, 101, 102, 103, 104, 105, 106, 107])
+ ..aOS(1, 'name')
+ ..a<$core.int>(2, 'id', $pb.PbFieldType.O3)
+ ..aOS(3, 'serializedId')
+ ..aOS(4, 'coverageId')
+ ..a<$core.int>(5, 'size', $pb.PbFieldType.O3)
+ ..aOS(6, 'parentId')
+ ..pc<DependencyInfoPB>(7, 'uses', $pb.PbFieldType.PM,
+ subBuilder: DependencyInfoPB.create)
+ ..aOS(8, 'outputUnitId')
+ ..aOM<LibraryInfoPB>(100, 'libraryInfo', subBuilder: LibraryInfoPB.create)
+ ..aOM<ClassInfoPB>(101, 'classInfo', subBuilder: ClassInfoPB.create)
+ ..aOM<FunctionInfoPB>(102, 'functionInfo',
+ subBuilder: FunctionInfoPB.create)
+ ..aOM<FieldInfoPB>(103, 'fieldInfo', subBuilder: FieldInfoPB.create)
+ ..aOM<ConstantInfoPB>(104, 'constantInfo',
+ subBuilder: ConstantInfoPB.create)
+ ..aOM<OutputUnitInfoPB>(105, 'outputUnitInfo',
+ subBuilder: OutputUnitInfoPB.create)
+ ..aOM<TypedefInfoPB>(106, 'typedefInfo', subBuilder: TypedefInfoPB.create)
+ ..aOM<ClosureInfoPB>(107, 'closureInfo', subBuilder: ClosureInfoPB.create)
+ ..hasRequiredFields = false;
+
+ InfoPB._() : super();
+ factory InfoPB() => create();
+ factory InfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory InfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ InfoPB clone() => InfoPB()..mergeFromMessage(this);
+ InfoPB copyWith(void Function(InfoPB) updates) =>
+ super.copyWith((message) => updates(message as InfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static InfoPB create() => InfoPB._();
+ InfoPB createEmptyInstance() => create();
+ static $pb.PbList<InfoPB> createRepeated() => $pb.PbList<InfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static InfoPB getDefault() =>
+ _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<InfoPB>(create);
+ static InfoPB _defaultInstance;
+
+ InfoPB_Concrete whichConcrete() => _InfoPB_ConcreteByTag[$_whichOneof(0)];
+ void clearConcrete() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(1)
+ $core.String get name => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set name($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasName() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearName() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.int get id => $_getIZ(1);
+ @$pb.TagNumber(2)
+ set id($core.int v) {
+ $_setSignedInt32(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasId() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearId() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get serializedId => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set serializedId($core.String v) {
+ $_setString(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasSerializedId() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearSerializedId() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.String get coverageId => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set coverageId($core.String v) {
+ $_setString(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasCoverageId() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearCoverageId() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $core.int get size => $_getIZ(4);
+ @$pb.TagNumber(5)
+ set size($core.int v) {
+ $_setSignedInt32(4, v);
+ }
+
+ @$pb.TagNumber(5)
+ $core.bool hasSize() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearSize() => clearField(5);
+
+ @$pb.TagNumber(6)
+ $core.String get parentId => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set parentId($core.String v) {
+ $_setString(5, v);
+ }
+
+ @$pb.TagNumber(6)
+ $core.bool hasParentId() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearParentId() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $core.List<DependencyInfoPB> get uses => $_getList(6);
+
+ @$pb.TagNumber(8)
+ $core.String get outputUnitId => $_getSZ(7);
+ @$pb.TagNumber(8)
+ set outputUnitId($core.String v) {
+ $_setString(7, v);
+ }
+
+ @$pb.TagNumber(8)
+ $core.bool hasOutputUnitId() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearOutputUnitId() => clearField(8);
+
+ @$pb.TagNumber(100)
+ LibraryInfoPB get libraryInfo => $_getN(8);
+ @$pb.TagNumber(100)
+ set libraryInfo(LibraryInfoPB v) {
+ setField(100, v);
+ }
+
+ @$pb.TagNumber(100)
+ $core.bool hasLibraryInfo() => $_has(8);
+ @$pb.TagNumber(100)
+ void clearLibraryInfo() => clearField(100);
+ @$pb.TagNumber(100)
+ LibraryInfoPB ensureLibraryInfo() => $_ensure(8);
+
+ @$pb.TagNumber(101)
+ ClassInfoPB get classInfo => $_getN(9);
+ @$pb.TagNumber(101)
+ set classInfo(ClassInfoPB v) {
+ setField(101, v);
+ }
+
+ @$pb.TagNumber(101)
+ $core.bool hasClassInfo() => $_has(9);
+ @$pb.TagNumber(101)
+ void clearClassInfo() => clearField(101);
+ @$pb.TagNumber(101)
+ ClassInfoPB ensureClassInfo() => $_ensure(9);
+
+ @$pb.TagNumber(102)
+ FunctionInfoPB get functionInfo => $_getN(10);
+ @$pb.TagNumber(102)
+ set functionInfo(FunctionInfoPB v) {
+ setField(102, v);
+ }
+
+ @$pb.TagNumber(102)
+ $core.bool hasFunctionInfo() => $_has(10);
+ @$pb.TagNumber(102)
+ void clearFunctionInfo() => clearField(102);
+ @$pb.TagNumber(102)
+ FunctionInfoPB ensureFunctionInfo() => $_ensure(10);
+
+ @$pb.TagNumber(103)
+ FieldInfoPB get fieldInfo => $_getN(11);
+ @$pb.TagNumber(103)
+ set fieldInfo(FieldInfoPB v) {
+ setField(103, v);
+ }
+
+ @$pb.TagNumber(103)
+ $core.bool hasFieldInfo() => $_has(11);
+ @$pb.TagNumber(103)
+ void clearFieldInfo() => clearField(103);
+ @$pb.TagNumber(103)
+ FieldInfoPB ensureFieldInfo() => $_ensure(11);
+
+ @$pb.TagNumber(104)
+ ConstantInfoPB get constantInfo => $_getN(12);
+ @$pb.TagNumber(104)
+ set constantInfo(ConstantInfoPB v) {
+ setField(104, v);
+ }
+
+ @$pb.TagNumber(104)
+ $core.bool hasConstantInfo() => $_has(12);
+ @$pb.TagNumber(104)
+ void clearConstantInfo() => clearField(104);
+ @$pb.TagNumber(104)
+ ConstantInfoPB ensureConstantInfo() => $_ensure(12);
+
+ @$pb.TagNumber(105)
+ OutputUnitInfoPB get outputUnitInfo => $_getN(13);
+ @$pb.TagNumber(105)
+ set outputUnitInfo(OutputUnitInfoPB v) {
+ setField(105, v);
+ }
+
+ @$pb.TagNumber(105)
+ $core.bool hasOutputUnitInfo() => $_has(13);
+ @$pb.TagNumber(105)
+ void clearOutputUnitInfo() => clearField(105);
+ @$pb.TagNumber(105)
+ OutputUnitInfoPB ensureOutputUnitInfo() => $_ensure(13);
+
+ @$pb.TagNumber(106)
+ TypedefInfoPB get typedefInfo => $_getN(14);
+ @$pb.TagNumber(106)
+ set typedefInfo(TypedefInfoPB v) {
+ setField(106, v);
+ }
+
+ @$pb.TagNumber(106)
+ $core.bool hasTypedefInfo() => $_has(14);
+ @$pb.TagNumber(106)
+ void clearTypedefInfo() => clearField(106);
+ @$pb.TagNumber(106)
+ TypedefInfoPB ensureTypedefInfo() => $_ensure(14);
+
+ @$pb.TagNumber(107)
+ ClosureInfoPB get closureInfo => $_getN(15);
+ @$pb.TagNumber(107)
+ set closureInfo(ClosureInfoPB v) {
+ setField(107, v);
+ }
+
+ @$pb.TagNumber(107)
+ $core.bool hasClosureInfo() => $_has(15);
+ @$pb.TagNumber(107)
+ void clearClosureInfo() => clearField(107);
+ @$pb.TagNumber(107)
+ ClosureInfoPB ensureClosureInfo() => $_ensure(15);
+}
+
+class ProgramInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('ProgramInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'entrypointId')
+ ..a<$core.int>(2, 'size', $pb.PbFieldType.O3)
+ ..aOS(3, 'dart2jsVersion')
+ ..aInt64(4, 'compilationMoment')
+ ..aInt64(5, 'compilationDuration')
+ ..aInt64(6, 'toProtoDuration')
+ ..aInt64(7, 'dumpInfoDuration')
+ ..aOB(8, 'noSuchMethodEnabled')
+ ..aOB(9, 'isRuntimeTypeUsed')
+ ..aOB(10, 'isIsolateUsed')
+ ..aOB(11, 'isFunctionApplyUsed')
+ ..aOB(12, 'isMirrorsUsed')
+ ..aOB(13, 'minified')
+ ..hasRequiredFields = false;
+
+ ProgramInfoPB._() : super();
+ factory ProgramInfoPB() => create();
+ factory ProgramInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory ProgramInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ ProgramInfoPB clone() => ProgramInfoPB()..mergeFromMessage(this);
+ ProgramInfoPB copyWith(void Function(ProgramInfoPB) updates) =>
+ super.copyWith((message) => updates(message as ProgramInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ProgramInfoPB create() => ProgramInfoPB._();
+ ProgramInfoPB createEmptyInstance() => create();
+ static $pb.PbList<ProgramInfoPB> createRepeated() =>
+ $pb.PbList<ProgramInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static ProgramInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<ProgramInfoPB>(create);
+ static ProgramInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get entrypointId => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set entrypointId($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasEntrypointId() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearEntrypointId() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.int get size => $_getIZ(1);
+ @$pb.TagNumber(2)
+ set size($core.int v) {
+ $_setSignedInt32(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasSize() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearSize() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get dart2jsVersion => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set dart2jsVersion($core.String v) {
+ $_setString(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasDart2jsVersion() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearDart2jsVersion() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $fixnum.Int64 get compilationMoment => $_getI64(3);
+ @$pb.TagNumber(4)
+ set compilationMoment($fixnum.Int64 v) {
+ $_setInt64(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasCompilationMoment() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearCompilationMoment() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $fixnum.Int64 get compilationDuration => $_getI64(4);
+ @$pb.TagNumber(5)
+ set compilationDuration($fixnum.Int64 v) {
+ $_setInt64(4, v);
+ }
+
+ @$pb.TagNumber(5)
+ $core.bool hasCompilationDuration() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearCompilationDuration() => clearField(5);
+
+ @$pb.TagNumber(6)
+ $fixnum.Int64 get toProtoDuration => $_getI64(5);
+ @$pb.TagNumber(6)
+ set toProtoDuration($fixnum.Int64 v) {
+ $_setInt64(5, v);
+ }
+
+ @$pb.TagNumber(6)
+ $core.bool hasToProtoDuration() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearToProtoDuration() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $fixnum.Int64 get dumpInfoDuration => $_getI64(6);
+ @$pb.TagNumber(7)
+ set dumpInfoDuration($fixnum.Int64 v) {
+ $_setInt64(6, v);
+ }
+
+ @$pb.TagNumber(7)
+ $core.bool hasDumpInfoDuration() => $_has(6);
+ @$pb.TagNumber(7)
+ void clearDumpInfoDuration() => clearField(7);
+
+ @$pb.TagNumber(8)
+ $core.bool get noSuchMethodEnabled => $_getBF(7);
+ @$pb.TagNumber(8)
+ set noSuchMethodEnabled($core.bool v) {
+ $_setBool(7, v);
+ }
+
+ @$pb.TagNumber(8)
+ $core.bool hasNoSuchMethodEnabled() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearNoSuchMethodEnabled() => clearField(8);
+
+ @$pb.TagNumber(9)
+ $core.bool get isRuntimeTypeUsed => $_getBF(8);
+ @$pb.TagNumber(9)
+ set isRuntimeTypeUsed($core.bool v) {
+ $_setBool(8, v);
+ }
+
+ @$pb.TagNumber(9)
+ $core.bool hasIsRuntimeTypeUsed() => $_has(8);
+ @$pb.TagNumber(9)
+ void clearIsRuntimeTypeUsed() => clearField(9);
+
+ @$pb.TagNumber(10)
+ $core.bool get isIsolateUsed => $_getBF(9);
+ @$pb.TagNumber(10)
+ set isIsolateUsed($core.bool v) {
+ $_setBool(9, v);
+ }
+
+ @$pb.TagNumber(10)
+ $core.bool hasIsIsolateUsed() => $_has(9);
+ @$pb.TagNumber(10)
+ void clearIsIsolateUsed() => clearField(10);
+
+ @$pb.TagNumber(11)
+ $core.bool get isFunctionApplyUsed => $_getBF(10);
+ @$pb.TagNumber(11)
+ set isFunctionApplyUsed($core.bool v) {
+ $_setBool(10, v);
+ }
+
+ @$pb.TagNumber(11)
+ $core.bool hasIsFunctionApplyUsed() => $_has(10);
+ @$pb.TagNumber(11)
+ void clearIsFunctionApplyUsed() => clearField(11);
+
+ @$pb.TagNumber(12)
+ $core.bool get isMirrorsUsed => $_getBF(11);
+ @$pb.TagNumber(12)
+ set isMirrorsUsed($core.bool v) {
+ $_setBool(11, v);
+ }
+
+ @$pb.TagNumber(12)
+ $core.bool hasIsMirrorsUsed() => $_has(11);
+ @$pb.TagNumber(12)
+ void clearIsMirrorsUsed() => clearField(12);
+
+ @$pb.TagNumber(13)
+ $core.bool get minified => $_getBF(12);
+ @$pb.TagNumber(13)
+ set minified($core.bool v) {
+ $_setBool(12, v);
+ }
+
+ @$pb.TagNumber(13)
+ $core.bool hasMinified() => $_has(12);
+ @$pb.TagNumber(13)
+ void clearMinified() => clearField(13);
+}
+
+class LibraryInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('LibraryInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'uri')
+ ..pPS(2, 'childrenIds')
+ ..hasRequiredFields = false;
+
+ LibraryInfoPB._() : super();
+ factory LibraryInfoPB() => create();
+ factory LibraryInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory LibraryInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ LibraryInfoPB clone() => LibraryInfoPB()..mergeFromMessage(this);
+ LibraryInfoPB copyWith(void Function(LibraryInfoPB) updates) =>
+ super.copyWith((message) => updates(message as LibraryInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static LibraryInfoPB create() => LibraryInfoPB._();
+ LibraryInfoPB createEmptyInstance() => create();
+ static $pb.PbList<LibraryInfoPB> createRepeated() =>
+ $pb.PbList<LibraryInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static LibraryInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<LibraryInfoPB>(create);
+ static LibraryInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get uri => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set uri($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasUri() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearUri() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get childrenIds => $_getList(1);
+}
+
+class OutputUnitInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('OutputUnitInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..pPS(1, 'imports')
+ ..hasRequiredFields = false;
+
+ OutputUnitInfoPB._() : super();
+ factory OutputUnitInfoPB() => create();
+ factory OutputUnitInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory OutputUnitInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ OutputUnitInfoPB clone() => OutputUnitInfoPB()..mergeFromMessage(this);
+ OutputUnitInfoPB copyWith(void Function(OutputUnitInfoPB) updates) =>
+ super.copyWith((message) => updates(message as OutputUnitInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static OutputUnitInfoPB create() => OutputUnitInfoPB._();
+ OutputUnitInfoPB createEmptyInstance() => create();
+ static $pb.PbList<OutputUnitInfoPB> createRepeated() =>
+ $pb.PbList<OutputUnitInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static OutputUnitInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<OutputUnitInfoPB>(create);
+ static OutputUnitInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get imports => $_getList(0);
+}
+
+class ClassInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('ClassInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOB(1, 'isAbstract')
+ ..pPS(2, 'childrenIds')
+ ..hasRequiredFields = false;
+
+ ClassInfoPB._() : super();
+ factory ClassInfoPB() => create();
+ factory ClassInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory ClassInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ ClassInfoPB clone() => ClassInfoPB()..mergeFromMessage(this);
+ ClassInfoPB copyWith(void Function(ClassInfoPB) updates) =>
+ super.copyWith((message) => updates(message as ClassInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ClassInfoPB create() => ClassInfoPB._();
+ ClassInfoPB createEmptyInstance() => create();
+ static $pb.PbList<ClassInfoPB> createRepeated() => $pb.PbList<ClassInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static ClassInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<ClassInfoPB>(create);
+ static ClassInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.bool get isAbstract => $_getBF(0);
+ @$pb.TagNumber(1)
+ set isAbstract($core.bool v) {
+ $_setBool(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasIsAbstract() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearIsAbstract() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get childrenIds => $_getList(1);
+}
+
+class ConstantInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('ConstantInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'code')
+ ..hasRequiredFields = false;
+
+ ConstantInfoPB._() : super();
+ factory ConstantInfoPB() => create();
+ factory ConstantInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory ConstantInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ ConstantInfoPB clone() => ConstantInfoPB()..mergeFromMessage(this);
+ ConstantInfoPB copyWith(void Function(ConstantInfoPB) updates) =>
+ super.copyWith((message) => updates(message as ConstantInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ConstantInfoPB create() => ConstantInfoPB._();
+ ConstantInfoPB createEmptyInstance() => create();
+ static $pb.PbList<ConstantInfoPB> createRepeated() =>
+ $pb.PbList<ConstantInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static ConstantInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<ConstantInfoPB>(create);
+ static ConstantInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get code => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set code($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasCode() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearCode() => clearField(1);
+}
+
+class FieldInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('FieldInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'type')
+ ..aOS(2, 'inferredType')
+ ..pPS(3, 'childrenIds')
+ ..aOS(4, 'code')
+ ..aOB(5, 'isConst')
+ ..aOS(6, 'initializerId')
+ ..hasRequiredFields = false;
+
+ FieldInfoPB._() : super();
+ factory FieldInfoPB() => create();
+ factory FieldInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory FieldInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ FieldInfoPB clone() => FieldInfoPB()..mergeFromMessage(this);
+ FieldInfoPB copyWith(void Function(FieldInfoPB) updates) =>
+ super.copyWith((message) => updates(message as FieldInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FieldInfoPB create() => FieldInfoPB._();
+ FieldInfoPB createEmptyInstance() => create();
+ static $pb.PbList<FieldInfoPB> createRepeated() => $pb.PbList<FieldInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static FieldInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<FieldInfoPB>(create);
+ static FieldInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get type => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set type($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasType() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearType() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get inferredType => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set inferredType($core.String v) {
+ $_setString(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasInferredType() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearInferredType() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$core.String> get childrenIds => $_getList(2);
+
+ @$pb.TagNumber(4)
+ $core.String get code => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set code($core.String v) {
+ $_setString(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasCode() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearCode() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $core.bool get isConst => $_getBF(4);
+ @$pb.TagNumber(5)
+ set isConst($core.bool v) {
+ $_setBool(4, v);
+ }
+
+ @$pb.TagNumber(5)
+ $core.bool hasIsConst() => $_has(4);
+ @$pb.TagNumber(5)
+ void clearIsConst() => clearField(5);
+
+ @$pb.TagNumber(6)
+ $core.String get initializerId => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set initializerId($core.String v) {
+ $_setString(5, v);
+ }
+
+ @$pb.TagNumber(6)
+ $core.bool hasInitializerId() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearInitializerId() => clearField(6);
+}
+
+class TypedefInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('TypedefInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'type')
+ ..hasRequiredFields = false;
+
+ TypedefInfoPB._() : super();
+ factory TypedefInfoPB() => create();
+ factory TypedefInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory TypedefInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ TypedefInfoPB clone() => TypedefInfoPB()..mergeFromMessage(this);
+ TypedefInfoPB copyWith(void Function(TypedefInfoPB) updates) =>
+ super.copyWith((message) => updates(message as TypedefInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static TypedefInfoPB create() => TypedefInfoPB._();
+ TypedefInfoPB createEmptyInstance() => create();
+ static $pb.PbList<TypedefInfoPB> createRepeated() =>
+ $pb.PbList<TypedefInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static TypedefInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<TypedefInfoPB>(create);
+ static TypedefInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get type => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set type($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasType() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearType() => clearField(1);
+}
+
+class FunctionModifiersPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('FunctionModifiersPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOB(1, 'isStatic')
+ ..aOB(2, 'isConst')
+ ..aOB(3, 'isFactory')
+ ..aOB(4, 'isExternal')
+ ..hasRequiredFields = false;
+
+ FunctionModifiersPB._() : super();
+ factory FunctionModifiersPB() => create();
+ factory FunctionModifiersPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory FunctionModifiersPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ FunctionModifiersPB clone() => FunctionModifiersPB()..mergeFromMessage(this);
+ FunctionModifiersPB copyWith(void Function(FunctionModifiersPB) updates) =>
+ super.copyWith((message) => updates(message as FunctionModifiersPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FunctionModifiersPB create() => FunctionModifiersPB._();
+ FunctionModifiersPB createEmptyInstance() => create();
+ static $pb.PbList<FunctionModifiersPB> createRepeated() =>
+ $pb.PbList<FunctionModifiersPB>();
+ @$core.pragma('dart2js:noInline')
+ static FunctionModifiersPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<FunctionModifiersPB>(create);
+ static FunctionModifiersPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.bool get isStatic => $_getBF(0);
+ @$pb.TagNumber(1)
+ set isStatic($core.bool v) {
+ $_setBool(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasIsStatic() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearIsStatic() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.bool get isConst => $_getBF(1);
+ @$pb.TagNumber(2)
+ set isConst($core.bool v) {
+ $_setBool(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasIsConst() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearIsConst() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.bool get isFactory => $_getBF(2);
+ @$pb.TagNumber(3)
+ set isFactory($core.bool v) {
+ $_setBool(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasIsFactory() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearIsFactory() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.bool get isExternal => $_getBF(3);
+ @$pb.TagNumber(4)
+ set isExternal($core.bool v) {
+ $_setBool(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasIsExternal() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearIsExternal() => clearField(4);
+}
+
+class ParameterInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('ParameterInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'name')
+ ..aOS(2, 'type')
+ ..aOS(3, 'declaredType')
+ ..hasRequiredFields = false;
+
+ ParameterInfoPB._() : super();
+ factory ParameterInfoPB() => create();
+ factory ParameterInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory ParameterInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ ParameterInfoPB clone() => ParameterInfoPB()..mergeFromMessage(this);
+ ParameterInfoPB copyWith(void Function(ParameterInfoPB) updates) =>
+ super.copyWith((message) => updates(message as ParameterInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ParameterInfoPB create() => ParameterInfoPB._();
+ ParameterInfoPB createEmptyInstance() => create();
+ static $pb.PbList<ParameterInfoPB> createRepeated() =>
+ $pb.PbList<ParameterInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static ParameterInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<ParameterInfoPB>(create);
+ static ParameterInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get name => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set name($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasName() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearName() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get type => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set type($core.String v) {
+ $_setString(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasType() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearType() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get declaredType => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set declaredType($core.String v) {
+ $_setString(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasDeclaredType() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearDeclaredType() => clearField(3);
+}
+
+class FunctionInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('FunctionInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOM<FunctionModifiersPB>(1, 'functionModifiers',
+ subBuilder: FunctionModifiersPB.create)
+ ..pPS(2, 'childrenIds')
+ ..aOS(3, 'returnType')
+ ..aOS(4, 'inferredReturnType')
+ ..pc<ParameterInfoPB>(5, 'parameters', $pb.PbFieldType.PM,
+ subBuilder: ParameterInfoPB.create)
+ ..aOS(6, 'sideEffects')
+ ..a<$core.int>(7, 'inlinedCount', $pb.PbFieldType.O3)
+ ..aOS(8, 'code')
+ ..hasRequiredFields = false;
+
+ FunctionInfoPB._() : super();
+ factory FunctionInfoPB() => create();
+ factory FunctionInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory FunctionInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ FunctionInfoPB clone() => FunctionInfoPB()..mergeFromMessage(this);
+ FunctionInfoPB copyWith(void Function(FunctionInfoPB) updates) =>
+ super.copyWith((message) => updates(message as FunctionInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FunctionInfoPB create() => FunctionInfoPB._();
+ FunctionInfoPB createEmptyInstance() => create();
+ static $pb.PbList<FunctionInfoPB> createRepeated() =>
+ $pb.PbList<FunctionInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static FunctionInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<FunctionInfoPB>(create);
+ static FunctionInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ FunctionModifiersPB get functionModifiers => $_getN(0);
+ @$pb.TagNumber(1)
+ set functionModifiers(FunctionModifiersPB v) {
+ setField(1, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasFunctionModifiers() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFunctionModifiers() => clearField(1);
+ @$pb.TagNumber(1)
+ FunctionModifiersPB ensureFunctionModifiers() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get childrenIds => $_getList(1);
+
+ @$pb.TagNumber(3)
+ $core.String get returnType => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set returnType($core.String v) {
+ $_setString(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasReturnType() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearReturnType() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.String get inferredReturnType => $_getSZ(3);
+ @$pb.TagNumber(4)
+ set inferredReturnType($core.String v) {
+ $_setString(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasInferredReturnType() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearInferredReturnType() => clearField(4);
+
+ @$pb.TagNumber(5)
+ $core.List<ParameterInfoPB> get parameters => $_getList(4);
+
+ @$pb.TagNumber(6)
+ $core.String get sideEffects => $_getSZ(5);
+ @$pb.TagNumber(6)
+ set sideEffects($core.String v) {
+ $_setString(5, v);
+ }
+
+ @$pb.TagNumber(6)
+ $core.bool hasSideEffects() => $_has(5);
+ @$pb.TagNumber(6)
+ void clearSideEffects() => clearField(6);
+
+ @$pb.TagNumber(7)
+ $core.int get inlinedCount => $_getIZ(6);
+ @$pb.TagNumber(7)
+ set inlinedCount($core.int v) {
+ $_setSignedInt32(6, v);
+ }
+
+ @$pb.TagNumber(7)
+ $core.bool hasInlinedCount() => $_has(6);
+ @$pb.TagNumber(7)
+ void clearInlinedCount() => clearField(7);
+
+ @$pb.TagNumber(8)
+ $core.String get code => $_getSZ(7);
+ @$pb.TagNumber(8)
+ set code($core.String v) {
+ $_setString(7, v);
+ }
+
+ @$pb.TagNumber(8)
+ $core.bool hasCode() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearCode() => clearField(8);
+}
+
+class ClosureInfoPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('ClosureInfoPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'functionId')
+ ..hasRequiredFields = false;
+
+ ClosureInfoPB._() : super();
+ factory ClosureInfoPB() => create();
+ factory ClosureInfoPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory ClosureInfoPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ ClosureInfoPB clone() => ClosureInfoPB()..mergeFromMessage(this);
+ ClosureInfoPB copyWith(void Function(ClosureInfoPB) updates) =>
+ super.copyWith((message) => updates(message as ClosureInfoPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ClosureInfoPB create() => ClosureInfoPB._();
+ ClosureInfoPB createEmptyInstance() => create();
+ static $pb.PbList<ClosureInfoPB> createRepeated() =>
+ $pb.PbList<ClosureInfoPB>();
+ @$core.pragma('dart2js:noInline')
+ static ClosureInfoPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<ClosureInfoPB>(create);
+ static ClosureInfoPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get functionId => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set functionId($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasFunctionId() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearFunctionId() => clearField(1);
+}
+
+class DeferredImportPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('DeferredImportPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'prefix')
+ ..pPS(2, 'files')
+ ..hasRequiredFields = false;
+
+ DeferredImportPB._() : super();
+ factory DeferredImportPB() => create();
+ factory DeferredImportPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory DeferredImportPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ DeferredImportPB clone() => DeferredImportPB()..mergeFromMessage(this);
+ DeferredImportPB copyWith(void Function(DeferredImportPB) updates) =>
+ super.copyWith((message) => updates(message as DeferredImportPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DeferredImportPB create() => DeferredImportPB._();
+ DeferredImportPB createEmptyInstance() => create();
+ static $pb.PbList<DeferredImportPB> createRepeated() =>
+ $pb.PbList<DeferredImportPB>();
+ @$core.pragma('dart2js:noInline')
+ static DeferredImportPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<DeferredImportPB>(create);
+ static DeferredImportPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get prefix => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set prefix($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasPrefix() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPrefix() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.List<$core.String> get files => $_getList(1);
+}
+
+class LibraryDeferredImportsPB extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo('LibraryDeferredImportsPB',
+ package: const $pb.PackageName('dart2js_info.proto'),
+ createEmptyInstance: create)
+ ..aOS(1, 'libraryUri')
+ ..aOS(2, 'libraryName')
+ ..pc<DeferredImportPB>(3, 'imports', $pb.PbFieldType.PM,
+ subBuilder: DeferredImportPB.create)
+ ..hasRequiredFields = false;
+
+ LibraryDeferredImportsPB._() : super();
+ factory LibraryDeferredImportsPB() => create();
+ factory LibraryDeferredImportsPB.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory LibraryDeferredImportsPB.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ LibraryDeferredImportsPB clone() =>
+ LibraryDeferredImportsPB()..mergeFromMessage(this);
+ LibraryDeferredImportsPB copyWith(
+ void Function(LibraryDeferredImportsPB) updates) =>
+ super.copyWith((message) => updates(message as LibraryDeferredImportsPB));
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static LibraryDeferredImportsPB create() => LibraryDeferredImportsPB._();
+ LibraryDeferredImportsPB createEmptyInstance() => create();
+ static $pb.PbList<LibraryDeferredImportsPB> createRepeated() =>
+ $pb.PbList<LibraryDeferredImportsPB>();
+ @$core.pragma('dart2js:noInline')
+ static LibraryDeferredImportsPB getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<LibraryDeferredImportsPB>(create);
+ static LibraryDeferredImportsPB _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get libraryUri => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set libraryUri($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasLibraryUri() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearLibraryUri() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get libraryName => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set libraryName($core.String v) {
+ $_setString(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasLibraryName() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearLibraryName() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<DeferredImportPB> get imports => $_getList(2);
+}
diff --git a/pkg/dart2js_info/lib/src/proto/info.pbenum.dart b/pkg/dart2js_info/lib/src/proto/info.pbenum.dart
new file mode 100644
index 0000000..9990b57
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/proto/info.pbenum.dart
@@ -0,0 +1,6 @@
+///
+// Generated code. Do not modify.
+// source: info.proto
+//
+// @dart = 2.3
+// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type
diff --git a/pkg/dart2js_info/lib/src/proto/info.pbjson.dart b/pkg/dart2js_info/lib/src/proto/info.pbjson.dart
new file mode 100644
index 0000000..00eff86
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/proto/info.pbjson.dart
@@ -0,0 +1,381 @@
+///
+// Generated code. Do not modify.
+// source: info.proto
+//
+// @dart = 2.3
+// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type
+
+const DependencyInfoPB$json = const {
+ '1': 'DependencyInfoPB',
+ '2': const [
+ const {'1': 'target_id', '3': 1, '4': 1, '5': 9, '10': 'targetId'},
+ const {'1': 'mask', '3': 2, '4': 1, '5': 9, '10': 'mask'},
+ ],
+};
+
+const AllInfoPB$json = const {
+ '1': 'AllInfoPB',
+ '2': const [
+ const {
+ '1': 'program',
+ '3': 1,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.ProgramInfoPB',
+ '10': 'program'
+ },
+ const {
+ '1': 'all_infos',
+ '3': 2,
+ '4': 3,
+ '5': 11,
+ '6': '.dart2js_info.proto.AllInfoPB.AllInfosEntry',
+ '10': 'allInfos'
+ },
+ const {
+ '1': 'deferred_imports',
+ '3': 3,
+ '4': 3,
+ '5': 11,
+ '6': '.dart2js_info.proto.LibraryDeferredImportsPB',
+ '10': 'deferredImports'
+ },
+ ],
+ '3': const [AllInfoPB_AllInfosEntry$json],
+};
+
+const AllInfoPB_AllInfosEntry$json = const {
+ '1': 'AllInfosEntry',
+ '2': const [
+ const {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
+ const {
+ '1': 'value',
+ '3': 2,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.InfoPB',
+ '10': 'value'
+ },
+ ],
+ '7': const {'7': true},
+};
+
+const InfoPB$json = const {
+ '1': 'InfoPB',
+ '2': const [
+ const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
+ const {'1': 'id', '3': 2, '4': 1, '5': 5, '10': 'id'},
+ const {'1': 'serialized_id', '3': 3, '4': 1, '5': 9, '10': 'serializedId'},
+ const {'1': 'coverage_id', '3': 4, '4': 1, '5': 9, '10': 'coverageId'},
+ const {'1': 'size', '3': 5, '4': 1, '5': 5, '10': 'size'},
+ const {'1': 'parent_id', '3': 6, '4': 1, '5': 9, '10': 'parentId'},
+ const {
+ '1': 'uses',
+ '3': 7,
+ '4': 3,
+ '5': 11,
+ '6': '.dart2js_info.proto.DependencyInfoPB',
+ '10': 'uses'
+ },
+ const {'1': 'output_unit_id', '3': 8, '4': 1, '5': 9, '10': 'outputUnitId'},
+ const {
+ '1': 'library_info',
+ '3': 100,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.LibraryInfoPB',
+ '9': 0,
+ '10': 'libraryInfo'
+ },
+ const {
+ '1': 'class_info',
+ '3': 101,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.ClassInfoPB',
+ '9': 0,
+ '10': 'classInfo'
+ },
+ const {
+ '1': 'function_info',
+ '3': 102,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.FunctionInfoPB',
+ '9': 0,
+ '10': 'functionInfo'
+ },
+ const {
+ '1': 'field_info',
+ '3': 103,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.FieldInfoPB',
+ '9': 0,
+ '10': 'fieldInfo'
+ },
+ const {
+ '1': 'constant_info',
+ '3': 104,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.ConstantInfoPB',
+ '9': 0,
+ '10': 'constantInfo'
+ },
+ const {
+ '1': 'output_unit_info',
+ '3': 105,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.OutputUnitInfoPB',
+ '9': 0,
+ '10': 'outputUnitInfo'
+ },
+ const {
+ '1': 'typedef_info',
+ '3': 106,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.TypedefInfoPB',
+ '9': 0,
+ '10': 'typedefInfo'
+ },
+ const {
+ '1': 'closure_info',
+ '3': 107,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.ClosureInfoPB',
+ '9': 0,
+ '10': 'closureInfo'
+ },
+ ],
+ '8': const [
+ const {'1': 'concrete'},
+ ],
+ '9': const [
+ const {'1': 9, '2': 100},
+ ],
+};
+
+const ProgramInfoPB$json = const {
+ '1': 'ProgramInfoPB',
+ '2': const [
+ const {'1': 'entrypoint_id', '3': 1, '4': 1, '5': 9, '10': 'entrypointId'},
+ const {'1': 'size', '3': 2, '4': 1, '5': 5, '10': 'size'},
+ const {
+ '1': 'dart2js_version',
+ '3': 3,
+ '4': 1,
+ '5': 9,
+ '10': 'dart2jsVersion'
+ },
+ const {
+ '1': 'compilation_moment',
+ '3': 4,
+ '4': 1,
+ '5': 3,
+ '10': 'compilationMoment'
+ },
+ const {
+ '1': 'compilation_duration',
+ '3': 5,
+ '4': 1,
+ '5': 3,
+ '10': 'compilationDuration'
+ },
+ const {
+ '1': 'to_proto_duration',
+ '3': 6,
+ '4': 1,
+ '5': 3,
+ '10': 'toProtoDuration'
+ },
+ const {
+ '1': 'dump_info_duration',
+ '3': 7,
+ '4': 1,
+ '5': 3,
+ '10': 'dumpInfoDuration'
+ },
+ const {
+ '1': 'no_such_method_enabled',
+ '3': 8,
+ '4': 1,
+ '5': 8,
+ '10': 'noSuchMethodEnabled'
+ },
+ const {
+ '1': 'is_runtime_type_used',
+ '3': 9,
+ '4': 1,
+ '5': 8,
+ '10': 'isRuntimeTypeUsed'
+ },
+ const {
+ '1': 'is_isolate_used',
+ '3': 10,
+ '4': 1,
+ '5': 8,
+ '10': 'isIsolateUsed'
+ },
+ const {
+ '1': 'is_function_apply_used',
+ '3': 11,
+ '4': 1,
+ '5': 8,
+ '10': 'isFunctionApplyUsed'
+ },
+ const {
+ '1': 'is_mirrors_used',
+ '3': 12,
+ '4': 1,
+ '5': 8,
+ '10': 'isMirrorsUsed'
+ },
+ const {'1': 'minified', '3': 13, '4': 1, '5': 8, '10': 'minified'},
+ ],
+};
+
+const LibraryInfoPB$json = const {
+ '1': 'LibraryInfoPB',
+ '2': const [
+ const {'1': 'uri', '3': 1, '4': 1, '5': 9, '10': 'uri'},
+ const {'1': 'children_ids', '3': 2, '4': 3, '5': 9, '10': 'childrenIds'},
+ ],
+};
+
+const OutputUnitInfoPB$json = const {
+ '1': 'OutputUnitInfoPB',
+ '2': const [
+ const {'1': 'imports', '3': 1, '4': 3, '5': 9, '10': 'imports'},
+ ],
+};
+
+const ClassInfoPB$json = const {
+ '1': 'ClassInfoPB',
+ '2': const [
+ const {'1': 'is_abstract', '3': 1, '4': 1, '5': 8, '10': 'isAbstract'},
+ const {'1': 'children_ids', '3': 2, '4': 3, '5': 9, '10': 'childrenIds'},
+ ],
+};
+
+const ConstantInfoPB$json = const {
+ '1': 'ConstantInfoPB',
+ '2': const [
+ const {'1': 'code', '3': 1, '4': 1, '5': 9, '10': 'code'},
+ ],
+};
+
+const FieldInfoPB$json = const {
+ '1': 'FieldInfoPB',
+ '2': const [
+ const {'1': 'type', '3': 1, '4': 1, '5': 9, '10': 'type'},
+ const {'1': 'inferred_type', '3': 2, '4': 1, '5': 9, '10': 'inferredType'},
+ const {'1': 'children_ids', '3': 3, '4': 3, '5': 9, '10': 'childrenIds'},
+ const {'1': 'code', '3': 4, '4': 1, '5': 9, '10': 'code'},
+ const {'1': 'is_const', '3': 5, '4': 1, '5': 8, '10': 'isConst'},
+ const {
+ '1': 'initializer_id',
+ '3': 6,
+ '4': 1,
+ '5': 9,
+ '10': 'initializerId'
+ },
+ ],
+};
+
+const TypedefInfoPB$json = const {
+ '1': 'TypedefInfoPB',
+ '2': const [
+ const {'1': 'type', '3': 1, '4': 1, '5': 9, '10': 'type'},
+ ],
+};
+
+const FunctionModifiersPB$json = const {
+ '1': 'FunctionModifiersPB',
+ '2': const [
+ const {'1': 'is_static', '3': 1, '4': 1, '5': 8, '10': 'isStatic'},
+ const {'1': 'is_const', '3': 2, '4': 1, '5': 8, '10': 'isConst'},
+ const {'1': 'is_factory', '3': 3, '4': 1, '5': 8, '10': 'isFactory'},
+ const {'1': 'is_external', '3': 4, '4': 1, '5': 8, '10': 'isExternal'},
+ ],
+};
+
+const ParameterInfoPB$json = const {
+ '1': 'ParameterInfoPB',
+ '2': const [
+ const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
+ const {'1': 'type', '3': 2, '4': 1, '5': 9, '10': 'type'},
+ const {'1': 'declared_type', '3': 3, '4': 1, '5': 9, '10': 'declaredType'},
+ ],
+};
+
+const FunctionInfoPB$json = const {
+ '1': 'FunctionInfoPB',
+ '2': const [
+ const {
+ '1': 'function_modifiers',
+ '3': 1,
+ '4': 1,
+ '5': 11,
+ '6': '.dart2js_info.proto.FunctionModifiersPB',
+ '10': 'functionModifiers'
+ },
+ const {'1': 'children_ids', '3': 2, '4': 3, '5': 9, '10': 'childrenIds'},
+ const {'1': 'return_type', '3': 3, '4': 1, '5': 9, '10': 'returnType'},
+ const {
+ '1': 'inferred_return_type',
+ '3': 4,
+ '4': 1,
+ '5': 9,
+ '10': 'inferredReturnType'
+ },
+ const {
+ '1': 'parameters',
+ '3': 5,
+ '4': 3,
+ '5': 11,
+ '6': '.dart2js_info.proto.ParameterInfoPB',
+ '10': 'parameters'
+ },
+ const {'1': 'side_effects', '3': 6, '4': 1, '5': 9, '10': 'sideEffects'},
+ const {'1': 'inlined_count', '3': 7, '4': 1, '5': 5, '10': 'inlinedCount'},
+ const {'1': 'code', '3': 8, '4': 1, '5': 9, '10': 'code'},
+ ],
+ '9': const [
+ const {'1': 9, '2': 10},
+ ],
+};
+
+const ClosureInfoPB$json = const {
+ '1': 'ClosureInfoPB',
+ '2': const [
+ const {'1': 'function_id', '3': 1, '4': 1, '5': 9, '10': 'functionId'},
+ ],
+};
+
+const DeferredImportPB$json = const {
+ '1': 'DeferredImportPB',
+ '2': const [
+ const {'1': 'prefix', '3': 1, '4': 1, '5': 9, '10': 'prefix'},
+ const {'1': 'files', '3': 2, '4': 3, '5': 9, '10': 'files'},
+ ],
+};
+
+const LibraryDeferredImportsPB$json = const {
+ '1': 'LibraryDeferredImportsPB',
+ '2': const [
+ const {'1': 'library_uri', '3': 1, '4': 1, '5': 9, '10': 'libraryUri'},
+ const {'1': 'library_name', '3': 2, '4': 1, '5': 9, '10': 'libraryName'},
+ const {
+ '1': 'imports',
+ '3': 3,
+ '4': 3,
+ '5': 11,
+ '6': '.dart2js_info.proto.DeferredImportPB',
+ '10': 'imports'
+ },
+ ],
+};
diff --git a/pkg/dart2js_info/lib/src/proto/info.pbserver.dart b/pkg/dart2js_info/lib/src/proto/info.pbserver.dart
new file mode 100644
index 0000000..8f63e58
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/proto/info.pbserver.dart
@@ -0,0 +1,8 @@
+///
+// Generated code. Do not modify.
+// source: info.proto
+//
+// @dart = 2.3
+// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type
+
+export 'info.pb.dart';
diff --git a/pkg/dart2js_info/lib/src/string_edit_buffer.dart b/pkg/dart2js_info/lib/src/string_edit_buffer.dart
new file mode 100644
index 0000000..dc314f7
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/string_edit_buffer.dart
@@ -0,0 +1,113 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Defines [StringEditBuffer], a buffer that can be used to apply edits on a
+/// string.
+// TODO(sigmund): this should move to a separate package.
+library dart2js.src.string_edit_buffer;
+
+/// A buffer meant to apply edits on a string (rather than building a string
+/// from scratch). Each change is described using the location information on
+/// the original string. Internally this buffer keeps track of how a
+/// modification in one portion can offset a modification further down the
+/// string.
+class StringEditBuffer {
+ final String original;
+ final _edits = <_StringEdit>[];
+
+ StringEditBuffer(this.original);
+
+ bool get hasEdits => _edits.length > 0;
+
+ /// Edit the original text, replacing text on the range [begin] and
+ /// exclusive [end] with the [replacement] string.
+ void replace(int begin, int end, String replacement, [int sortId]) {
+ _edits.add(new _StringEdit(begin, end, replacement, sortId));
+ }
+
+ /// Insert [string] at [offset].
+ /// Equivalent to `replace(offset, offset, string)`.
+ void insert(int offset, String string, [sortId]) =>
+ replace(offset, offset, string, sortId);
+
+ /// Remove text from the range [begin] to exclusive [end].
+ /// Equivalent to `replace(begin, end, '')`.
+ void remove(int begin, int end) => replace(begin, end, '');
+
+ /// Applies all pending [edit]s and returns a new string.
+ ///
+ /// This method is non-destructive: it does not discard existing edits or
+ /// change the [original] string. Further edits can be added and this method
+ /// can be called again.
+ ///
+ /// Throws [UnsupportedError] if the edits were overlapping. If no edits were
+ /// made, the original string will be returned.
+ String toString() {
+ var sb = new StringBuffer();
+ if (_edits.length == 0) return original;
+
+ // Sort edits by start location.
+ _edits.sort();
+
+ int consumed = 0;
+ for (var edit in _edits) {
+ if (consumed > edit.begin) {
+ sb = new StringBuffer();
+ sb.write('overlapping edits. Insert at offset ');
+ sb.write(edit.begin);
+ sb.write(' but have consumed ');
+ sb.write(consumed);
+ sb.write(' input characters. List of edits:');
+ for (var e in _edits) {
+ sb.write('\n ');
+ sb.write(e);
+ }
+ throw new UnsupportedError(sb.toString());
+ }
+
+ // Add characters from the original string between this edit and the last
+ // one, if any.
+ var betweenEdits = original.substring(consumed, edit.begin);
+ sb.write(betweenEdits);
+ sb.write(edit.string);
+ consumed = edit.end;
+ }
+
+ // Add any text from the end of the original string that was not replaced.
+ sb.write(original.substring(consumed));
+ return sb.toString();
+ }
+}
+
+/// A single edit in a [StringEditBuffer].
+class _StringEdit implements Comparable<_StringEdit> {
+ // Offset where edit begins
+ final int begin;
+
+ // Offset where edit ends
+ final int end;
+
+ // Sort index as a tie-breaker for edits that have the same location.
+ final int sortId;
+
+ // String to insert
+ final String string;
+
+ _StringEdit(int begin, this.end, this.string, [int sortId])
+ : begin = begin,
+ sortId = sortId == null ? begin : sortId;
+
+ int get length => end - begin;
+
+ String toString() => '(Edit @ $begin,$end: "$string")';
+
+ int compareTo(_StringEdit other) {
+ int diff = begin - other.begin;
+ if (diff != 0) return diff;
+ diff = end - other.end;
+ if (diff != 0) return diff;
+ // use edit order as a tie breaker
+ return sortId - other.sortId;
+ }
+}
diff --git a/pkg/dart2js_info/lib/src/table.dart b/pkg/dart2js_info/lib/src/table.dart
new file mode 100644
index 0000000..85abcd3
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/table.dart
@@ -0,0 +1,126 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library dart2js_info.src.table;
+
+import 'dart:math' show max;
+
+/// Helper class to present data on the command-line in a table form.
+class Table {
+ int _totalColumns = 0;
+ int get totalColumns => _totalColumns;
+
+ /// Abbreviations, used to make headers shorter.
+ Map<String, String> abbreviations = {};
+
+ /// Width of each column.
+ List<int> widths = <int>[];
+
+ /// The header for each column (`header.length == totalColumns`).
+ List header = [];
+
+ /// The color for each column (`color.length == totalColumns`).
+ List colors = [];
+
+ /// Each row on the table. Note that all rows have the same size
+ /// (`rows[*].length == totalColumns`).
+ List<List> rows = [];
+
+ /// Columns to skip, for example, if they are all zero entries.
+ List<bool> _skipped = <bool>[];
+
+ /// Whether we started adding entries. Indicates that no more columns can be
+ /// added.
+ bool _sealed = false;
+
+ /// Current row being built by [addEntry].
+ List _currentRow;
+
+ /// Add a column with the given [name].
+ void declareColumn(String name,
+ {bool abbreviate: false, String color: _NO_COLOR}) {
+ assert(!_sealed);
+ var headerName = name;
+ if (abbreviate) {
+ // abbreviate the header by using only the initials of each word
+ headerName =
+ name.split(' ').map((s) => s.substring(0, 1).toUpperCase()).join('');
+ while (abbreviations[headerName] != null) headerName = "$headerName'";
+ abbreviations[headerName] = name;
+ }
+ widths.add(max(5, headerName.length + 1));
+ header.add(headerName);
+ colors.add(color);
+ _skipped.add(_totalColumns > 0);
+ _totalColumns++;
+ }
+
+ /// Add an entry in the table, creating a new row each time [totalColumns]
+ /// entries are added.
+ void addEntry(entry) {
+ if (_currentRow == null) {
+ _sealed = true;
+ _currentRow = [];
+ }
+ int pos = _currentRow.length;
+ assert(pos < _totalColumns);
+
+ widths[pos] = max(widths[pos], '$entry'.length + 1);
+ _currentRow.add('$entry');
+ if (entry is int && entry != 0) {
+ _skipped[pos] = false;
+ }
+
+ if (pos + 1 == _totalColumns) {
+ rows.add(_currentRow);
+ _currentRow = [];
+ }
+ }
+
+ /// Add an empty row to divide sections of the table.
+ void addEmptyRow() {
+ var emptyRow = [];
+ for (int i = 0; i < _totalColumns; i++) {
+ emptyRow.add('-' * widths[i]);
+ }
+ rows.add(emptyRow);
+ }
+
+ /// Enter the header titles. OK to do so more than once in long tables.
+ void addHeader() {
+ rows.add(header);
+ }
+
+ /// Generates a string representation of the table to print on a terminal.
+ // TODO(sigmund): add also a .csv format
+ String toString() {
+ var sb = new StringBuffer();
+ sb.write('\n');
+ for (var row in rows) {
+ var lastColor = _NO_COLOR;
+ for (int i = 0; i < _totalColumns; i++) {
+ if (_skipped[i]) continue;
+ var entry = row[i];
+ var color = colors[i];
+ if (lastColor != color) {
+ sb.write(color);
+ lastColor = color;
+ }
+ // Align first column to the left, everything else to the right.
+ sb.write(
+ i == 0 ? entry.padRight(widths[i]) : entry.padLeft(widths[i] + 1));
+ }
+ if (lastColor != _NO_COLOR) sb.write(_NO_COLOR);
+ sb.write('\n');
+ }
+ sb.write('\nWhere:\n');
+ for (var id in abbreviations.keys) {
+ sb.write(' $id:'.padRight(7));
+ sb.write(' ${abbreviations[id]}\n');
+ }
+ return sb.toString();
+ }
+}
+
+const _NO_COLOR = "\x1b[0m";
diff --git a/pkg/dart2js_info/lib/src/util.dart b/pkg/dart2js_info/lib/src/util.dart
new file mode 100644
index 0000000..31e9ffc
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/util.dart
@@ -0,0 +1,99 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library dart2js_info.src.util;
+
+import 'package:dart2js_info/info.dart';
+
+import 'graph.dart';
+
+/// Computes a graph of dependencies from [info].
+Graph<Info> graphFromInfo(AllInfo info) {
+ print(' info: dependency graph information is work in progress and'
+ ' might be incomplete');
+ // Note: we are combining dependency information that is computed in two ways
+ // (functionInfo.uses vs allInfo.dependencies).
+ // TODO(sigmund): fix inconsistencies between these two ways, stick with one
+ // of them.
+ // TODO(sigmund): create a concrete implementation of InfoGraph, instead of
+ // using the EdgeListGraph.
+ var graph = new EdgeListGraph<Info>();
+ for (var f in info.functions) {
+ graph.addNode(f);
+ for (var g in f.uses) {
+ graph.addEdge(f, g.target);
+ }
+ if (info.dependencies[f] != null) {
+ for (var g in info.dependencies[f]) {
+ graph.addEdge(f, g);
+ }
+ }
+ }
+
+ for (var f in info.fields) {
+ graph.addNode(f);
+ for (var g in f.uses) {
+ graph.addEdge(f, g.target);
+ }
+ if (info.dependencies[f] != null) {
+ for (var g in info.dependencies[f]) {
+ graph.addEdge(f, g);
+ }
+ }
+ }
+
+ return graph;
+}
+
+/// Provide a unique long name associated with [info].
+// TODO(sigmund): guarantee that the name is actually unique.
+String longName(Info info, {bool useLibraryUri: false, bool forId: false}) {
+ var infoPath = [];
+ while (info != null) {
+ infoPath.add(info);
+ info = info.parent;
+ }
+ var sb = new StringBuffer();
+ var first = true;
+ for (var segment in infoPath.reversed) {
+ if (!first) sb.write('.');
+ // TODO(sigmund): ensure that the first segment is a LibraryInfo.
+ // assert(!first || segment is LibraryInfo);
+ // (today might not be true for for closure classes).
+ if (segment is LibraryInfo) {
+ // TODO(kevmoo): Remove this when dart2js can be invoked with an app-root
+ // custom URI
+ if (useLibraryUri && forId && segment.uri.isScheme('file')) {
+ assert(Uri.base.isScheme('file'));
+ var currentBase = Uri.base.path;
+ var segmentString = segment.uri.path;
+
+ // If longName is being called to calculate an element ID (forId = true)
+ // then use a relative path for the longName calculation
+ // This allows a more stable ID for cases when files are generated into
+ // temp directories – e.g. with pkg:build_web_compilers
+ if (segmentString.startsWith(currentBase)) {
+ segmentString = segmentString.substring(currentBase.length);
+ }
+
+ sb.write(segmentString);
+ } else {
+ sb.write(useLibraryUri ? segment.uri : segment.name);
+ }
+ sb.write('::');
+ } else {
+ first = false;
+ sb.write(segment.name);
+ }
+ }
+ return sb.toString();
+}
+
+/// Produce a string containing [value] padded with white space up to [n] chars.
+pad(value, n, {bool right: false}) {
+ var s = '$value';
+ if (s.length >= n) return s;
+ var pad = ' ' * (n - s.length);
+ return right ? '$s$pad' : '$pad$s';
+}
diff --git a/pkg/dart2js_info/pubspec.yaml b/pkg/dart2js_info/pubspec.yaml
new file mode 100644
index 0000000..77980f6
--- /dev/null
+++ b/pkg/dart2js_info/pubspec.yaml
@@ -0,0 +1,25 @@
+name: dart2js_info
+version: 0.6.5
+
+description: >-
+ Libraries and tools to process data produced when running dart2js with
+ --dump-info.
+homepage: https://github.com/dart-lang/dart2js_info/
+
+environment:
+ sdk: '>=2.3.0 <3.0.0'
+
+dependencies:
+ args: ^1.4.3
+ collection: ^1.10.1
+ fixnum: '>=0.10.5 <2.0.0'
+ path: ^1.3.6
+ protobuf: '>=1.0.1 <3.0.0'
+ shelf: ^0.7.3
+ yaml: ^2.1.0
+
+dev_dependencies:
+ test: ^1.2.0
+
+executables:
+ dart2js_info: tools
diff --git a/pkg/dart2js_info/test/binary_serialization_test.dart b/pkg/dart2js_info/test/binary_serialization_test.dart
new file mode 100644
index 0000000..e38f3cb
--- /dev/null
+++ b/pkg/dart2js_info/test/binary_serialization_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:dart2js_info/binary_serialization.dart' as binary;
+import 'package:test/test.dart';
+
+class ByteSink implements Sink<List<int>> {
+ BytesBuilder builder = new BytesBuilder();
+
+ add(List<int> data) => builder.add(data);
+ close() {}
+}
+
+main() {
+ group('json to proto conversion with deferred files', () {
+ test('hello_world_deferred', () {
+ var helloWorld = new File(
+ 'test/hello_world_deferred/hello_world_deferred.js.info.json');
+ var contents = helloWorld.readAsStringSync();
+ var json = jsonDecode(contents);
+ var info = new AllInfoJsonCodec().decode(json);
+
+ var sink = new ByteSink();
+ binary.encode(info, sink);
+ var info2 = binary.decode(sink.builder.toBytes());
+ var json2 = new AllInfoJsonCodec().encode(info2);
+
+ info.program.toJsonDuration = new Duration(milliseconds: 0);
+ var json1 = new AllInfoJsonCodec().encode(info);
+ var contents1 = const JsonEncoder.withIndent(" ").convert(json1);
+ var contents2 = const JsonEncoder.withIndent(" ").convert(json2);
+ expect(contents1 == contents2, isTrue);
+ });
+ });
+}
diff --git a/pkg/dart2js_info/test/graph_test.dart b/pkg/dart2js_info/test/graph_test.dart
new file mode 100644
index 0000000..4934adf
--- /dev/null
+++ b/pkg/dart2js_info/test/graph_test.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:dart2js_info/src/graph.dart';
+import 'package:test/test.dart';
+
+main() {
+ var graph = makeTestGraph();
+
+ test('preorder traversal', () {
+ expect(graph.preOrder('A').toList(), equals(['A', 'E', 'D', 'C', 'B']));
+ });
+
+ test('postorder traversal', () {
+ expect(graph.postOrder('A').toList(), equals(['C', 'E', 'D', 'B', 'A']));
+ });
+
+ test('topological sort', () {
+ expect(
+ graph.computeTopologicalSort(),
+ equals([
+ ['C'],
+ ['E'],
+ ['D', 'B', 'A']
+ ]));
+ });
+
+ test('contains path', () {
+ expect(graph.containsPath('A', 'C'), isTrue);
+ expect(graph.containsPath('B', 'E'), isTrue);
+ expect(graph.containsPath('C', 'A'), isFalse);
+ expect(graph.containsPath('E', 'B'), isFalse);
+ });
+
+ test('dominator tree', () {
+ // A dominates all other nodes in the graph, the resulting tree looks like
+ // A
+ // / / | |
+ // B C D E
+ var dom = graph.dominatorTree('A');
+ expect(dom.targetsOf('A').length, equals(4));
+ });
+
+ test('cycle finding', () {
+ expect(graph.findCycleContaining('B'), equals(['A', 'D', 'B']));
+ expect(graph.findCycleContaining('C'), equals(['C']));
+ });
+}
+
+/// Creates a simple test graph with the following structure:
+/// ```
+/// A -> E
+/// / ^ ^
+/// / \ /
+/// v v /
+/// B -> D
+/// \ /
+/// v v
+/// C
+/// ```
+Graph<String> makeTestGraph() {
+ var graph = new EdgeListGraph<String>();
+ graph.addEdge('A', 'B');
+ graph.addEdge('A', 'D');
+ graph.addEdge('A', 'E');
+ graph.addEdge('B', 'C');
+ graph.addEdge('B', 'D');
+ graph.addEdge('D', 'A');
+ graph.addEdge('D', 'C');
+ graph.addEdge('D', 'E');
+ return graph;
+}
diff --git a/pkg/dart2js_info/test/hello_world/hello_world.dart b/pkg/dart2js_info/test/hello_world/hello_world.dart
new file mode 100644
index 0000000..800db1c
--- /dev/null
+++ b/pkg/dart2js_info/test/hello_world/hello_world.dart
@@ -0,0 +1,3 @@
+main() {
+ print("Hello, World!");
+}
diff --git a/pkg/dart2js_info/test/hello_world/hello_world.js.info.json b/pkg/dart2js_info/test/hello_world/hello_world.js.info.json
new file mode 100644
index 0000000..afe12f8
--- /dev/null
+++ b/pkg/dart2js_info/test/hello_world/hello_world.js.info.json
@@ -0,0 +1,1618 @@
+{
+ "elements": {
+ "library": {
+ "60281205": {
+ "id": "library/60281205",
+ "kind": "library",
+ "name": "<unnamed>",
+ "size": 85,
+ "children": [
+ "function/531925466"
+ ],
+ "canonicalUri": "file:///Users/kevmoo/source/github/dart2js_info/test/hello_world/hello_world.dart"
+ },
+ "174368900": {
+ "id": "library/174368900",
+ "kind": "library",
+ "name": "_foreign_helper",
+ "size": 0,
+ "children": [
+ "class/949988971"
+ ],
+ "canonicalUri": "dart:_foreign_helper"
+ },
+ "238986171": {
+ "id": "library/238986171",
+ "kind": "library",
+ "name": "dart2js._js_primitives",
+ "size": 483,
+ "children": [
+ "function/864228238"
+ ],
+ "canonicalUri": "dart:_js_primitives"
+ },
+ "325218131": {
+ "id": "library/325218131",
+ "kind": "library",
+ "name": "_interceptors",
+ "size": 0,
+ "children": [
+ "class/1019758482"
+ ],
+ "canonicalUri": "dart:_interceptors"
+ },
+ "631335891": {
+ "id": "library/631335891",
+ "kind": "library",
+ "name": "dart.core",
+ "size": 0,
+ "children": [
+ "class/36312556",
+ "class/56472591",
+ "class/93352366",
+ "class/143626168",
+ "class/175705485",
+ "class/948502579",
+ "class/974704527",
+ "class/991730135",
+ "function/399195151"
+ ],
+ "canonicalUri": "dart:core"
+ },
+ "689380639": {
+ "id": "library/689380639",
+ "kind": "library",
+ "name": "dart._internal",
+ "size": 0,
+ "children": [
+ "field/908476008",
+ "function/606513838"
+ ],
+ "canonicalUri": "dart:_internal"
+ },
+ "754126564": {
+ "id": "library/754126564",
+ "kind": "library",
+ "name": "dart.collection",
+ "size": 0,
+ "children": [
+ "field/522978319"
+ ],
+ "canonicalUri": "dart:collection"
+ },
+ "965528565": {
+ "id": "library/965528565",
+ "kind": "library",
+ "name": "dart2js._embedded_names",
+ "size": 0,
+ "children": [
+ "class/73206861",
+ "class/716671121",
+ "field/55541185",
+ "field/1020283310"
+ ],
+ "canonicalUri": "dart:_js_embedded_names"
+ },
+ "966364039": {
+ "id": "library/966364039",
+ "kind": "library",
+ "name": "_js_helper",
+ "size": 0,
+ "children": [
+ "class/138211367",
+ "class/156108056",
+ "class/269073412",
+ "class/317291728",
+ "class/324980341",
+ "class/354160010",
+ "class/644348892",
+ "class/866150578",
+ "class/1019636942",
+ "field/417944821",
+ "field/526089142"
+ ],
+ "canonicalUri": "dart:_js_helper"
+ }
+ },
+ "class": {
+ "36312556": {
+ "id": "class/36312556",
+ "kind": "class",
+ "name": "ConcurrentModificationError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/376257386"
+ ]
+ },
+ "56472591": {
+ "id": "class/56472591",
+ "kind": "class",
+ "name": "AssertionError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/840751619"
+ ]
+ },
+ "73206861": {
+ "id": "class/73206861",
+ "kind": "class",
+ "name": "JsGetName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/965528565",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/159930244",
+ "field/190934046",
+ "field/202409972",
+ "field/391942199",
+ "field/422530140",
+ "field/447707988",
+ "field/586155906",
+ "field/626399440",
+ "field/645423404",
+ "field/667376711",
+ "field/701716969",
+ "field/743971885",
+ "field/844410756",
+ "field/864119084",
+ "field/875039735",
+ "field/914172423",
+ "field/960584371",
+ "field/1012317118",
+ "field/1019580176"
+ ]
+ },
+ "93352366": {
+ "id": "class/93352366",
+ "kind": "class",
+ "name": "CyclicInitializationError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/944915314"
+ ]
+ },
+ "138211367": {
+ "id": "class/138211367",
+ "kind": "class",
+ "name": "BoundClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/125830184",
+ "field/180845508",
+ "field/302220255",
+ "field/435101137",
+ "field/709451133",
+ "field/1061931090"
+ ]
+ },
+ "143626168": {
+ "id": "class/143626168",
+ "kind": "class",
+ "name": "ArgumentError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/4524053",
+ "field/509005655",
+ "field/727752212",
+ "field/759319863"
+ ]
+ },
+ "156108056": {
+ "id": "class/156108056",
+ "kind": "class",
+ "name": "ReflectionInfo",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/116849538",
+ "field/130159427",
+ "field/206386055",
+ "field/259683855",
+ "field/338588500",
+ "field/420557924",
+ "field/446360348",
+ "field/603434183",
+ "field/656800516",
+ "field/840091021",
+ "field/911662921"
+ ]
+ },
+ "175705485": {
+ "id": "class/175705485",
+ "kind": "class",
+ "name": "IndexError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/505549528",
+ "field/954188953"
+ ]
+ },
+ "269073412": {
+ "id": "class/269073412",
+ "kind": "class",
+ "name": "TypeImpl",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/70141207",
+ "field/412345286"
+ ]
+ },
+ "317291728": {
+ "id": "class/317291728",
+ "kind": "class",
+ "name": "Closure",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/386221903"
+ ]
+ },
+ "324980341": {
+ "id": "class/324980341",
+ "kind": "class",
+ "name": "TypeErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/319720392"
+ ]
+ },
+ "354160010": {
+ "id": "class/354160010",
+ "kind": "class",
+ "name": "Primitives",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/118657756"
+ ]
+ },
+ "644348892": {
+ "id": "class/644348892",
+ "kind": "class",
+ "name": "CastErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/185234473"
+ ]
+ },
+ "716671121": {
+ "id": "class/716671121",
+ "kind": "class",
+ "name": "JsBuiltin",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/965528565",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/17152193",
+ "field/153611669",
+ "field/221593932",
+ "field/413692838",
+ "field/483247773",
+ "field/793498792",
+ "field/805748014",
+ "field/936474054",
+ "field/1063003009"
+ ]
+ },
+ "866150578": {
+ "id": "class/866150578",
+ "kind": "class",
+ "name": "RuntimeError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/653339731"
+ ]
+ },
+ "948502579": {
+ "id": "class/948502579",
+ "kind": "class",
+ "name": "StateError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/190358771"
+ ]
+ },
+ "949988971": {
+ "id": "class/949988971",
+ "kind": "class",
+ "name": "JS_CONST",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/174368900",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/249142929"
+ ]
+ },
+ "974704527": {
+ "id": "class/974704527",
+ "kind": "class",
+ "name": "RangeError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/111931226",
+ "field/649547880"
+ ]
+ },
+ "991730135": {
+ "id": "class/991730135",
+ "kind": "class",
+ "name": "UnsupportedError",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/140571055"
+ ]
+ },
+ "1019636942": {
+ "id": "class/1019636942",
+ "kind": "class",
+ "name": "TypeVariable",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/856247106",
+ "field/874766737",
+ "field/1068071433"
+ ]
+ },
+ "1019758482": {
+ "id": "class/1019758482",
+ "kind": "class",
+ "name": "ArrayIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/112618843",
+ "field/237146195",
+ "field/504170901",
+ "field/577142640"
+ ]
+ }
+ },
+ "function": {
+ "399195151": {
+ "id": "function/399195151",
+ "kind": "function",
+ "name": "print",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/631335891",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "Value mask: [\"Hello, World!\"] type: [exact=JSString]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "(Object) -> void",
+ "measurements": null
+ },
+ "531925466": {
+ "id": "function/531925466",
+ "kind": "function",
+ "name": "main",
+ "size": 62,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/60281205",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 0,
+ "code": "main: function() {\n H.printString(\"Hello, World!\");\n}\n",
+ "type": "() -> dynamic",
+ "measurements": null
+ },
+ "606513838": {
+ "id": "function/606513838",
+ "kind": "function",
+ "name": "printToConsole",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/689380639",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": true
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "line",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "(String) -> void",
+ "measurements": null
+ },
+ "864228238": {
+ "id": "function/864228238",
+ "kind": "function",
+ "name": "printString",
+ "size": 460,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/238986171",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 0,
+ "code": "printString: function(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 window == \"object\")\n return;\n if (typeof print == \"function\") {\n print(string);\n return;\n }\n throw \"Unable to print message: \" + String(string);\n}\n",
+ "type": "(String) -> void",
+ "measurements": null
+ }
+ },
+ "typedef": {},
+ "field": {
+ "4524053": {
+ "id": "field/4524053",
+ "kind": "field",
+ "name": "_hasValue",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "Value mask: [true] type: [exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "17152193": {
+ "id": "field/17152193",
+ "kind": "field",
+ "name": "getType",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "55541185": {
+ "id": "field/55541185",
+ "kind": "field",
+ "name": "MANGLED_GLOBAL_NAMES",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value mask: [\"mangledGlobalNames\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "70141207": {
+ "id": "field/70141207",
+ "kind": "field",
+ "name": "_typeName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/269073412",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "111931226": {
+ "id": "field/111931226",
+ "kind": "field",
+ "name": "start",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/974704527",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "num"
+ },
+ "112618843": {
+ "id": "field/112618843",
+ "kind": "field",
+ "name": "_length",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSUInt32]",
+ "code": null,
+ "type": "int"
+ },
+ "116849538": {
+ "id": "field/116849538",
+ "kind": "field",
+ "name": "areOptionalParametersNamed",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "118657756": {
+ "id": "field/118657756",
+ "kind": "field",
+ "name": "DOLLAR_CHAR_VALUE",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/354160010",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "125830184": {
+ "id": "field/125830184",
+ "kind": "field",
+ "name": "_self",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "130159427": {
+ "id": "field/130159427",
+ "kind": "field",
+ "name": "OPTIONAL_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "140571055": {
+ "id": "field/140571055",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/991730135",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "153611669": {
+ "id": "field/153611669",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "159930244": {
+ "id": "field/159930244",
+ "kind": "field",
+ "name": "CALL_CATCH_ALL",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "180845508": {
+ "id": "field/180845508",
+ "kind": "field",
+ "name": "_target",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "185234473": {
+ "id": "field/185234473",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/644348892",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "190358771": {
+ "id": "field/190358771",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/948502579",
+ "children": [],
+ "inferredType": "Value mask: [\"No element\"] type: [exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "190934046": {
+ "id": "field/190934046",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "202409972": {
+ "id": "field/202409972",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETER_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "206386055": {
+ "id": "field/206386055",
+ "kind": "field",
+ "name": "jsFunction",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "221593932": {
+ "id": "field/221593932",
+ "kind": "field",
+ "name": "isFunctionType",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "237146195": {
+ "id": "field/237146195",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSArray]",
+ "code": null,
+ "type": "JSArray<E>"
+ },
+ "249142929": {
+ "id": "field/249142929",
+ "kind": "field",
+ "name": "code",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/949988971",
+ "children": [],
+ "inferredType": "Value mask: [\"function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n}\"] type: [exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "259683855": {
+ "id": "field/259683855",
+ "kind": "field",
+ "name": "functionType",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "302220255": {
+ "id": "field/302220255",
+ "kind": "field",
+ "name": "_receiver",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "319720392": {
+ "id": "field/319720392",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/324980341",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "338588500": {
+ "id": "field/338588500",
+ "kind": "field",
+ "name": "requiredParameterCount",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "376257386": {
+ "id": "field/376257386",
+ "kind": "field",
+ "name": "modifiedObject",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/36312556",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "Object"
+ },
+ "386221903": {
+ "id": "field/386221903",
+ "kind": "field",
+ "name": "functionCounter",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/317291728",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "391942199": {
+ "id": "field/391942199",
+ "kind": "field",
+ "name": "OPERATOR_AS_PREFIX",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "412345286": {
+ "id": "field/412345286",
+ "kind": "field",
+ "name": "_unmangledName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/269073412",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "413692838": {
+ "id": "field/413692838",
+ "kind": "field",
+ "name": "rawRuntimeType",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "417944821": {
+ "id": "field/417944821",
+ "kind": "field",
+ "name": "_inTypeAssertion",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "420557924": {
+ "id": "field/420557924",
+ "kind": "field",
+ "name": "isAccessor",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "422530140": {
+ "id": "field/422530140",
+ "kind": "field",
+ "name": "TYPEDEF_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "435101137": {
+ "id": "field/435101137",
+ "kind": "field",
+ "name": "selfFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "446360348": {
+ "id": "field/446360348",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "447707988": {
+ "id": "field/447707988",
+ "kind": "field",
+ "name": "RTI_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "483247773": {
+ "id": "field/483247773",
+ "kind": "field",
+ "name": "rawRtiToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "504170901": {
+ "id": "field/504170901",
+ "kind": "field",
+ "name": "_current",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "E"
+ },
+ "505549528": {
+ "id": "field/505549528",
+ "kind": "field",
+ "name": "indexable",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/175705485",
+ "children": [],
+ "inferredType": "Union of [[exact=IndexError], [exact=JSString], [exact=StringBuffer], [subclass=JSArray]]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "509005655": {
+ "id": "field/509005655",
+ "kind": "field",
+ "name": "name",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "Value mask: [\"index\"] type: [null|exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "522978319": {
+ "id": "field/522978319",
+ "kind": "field",
+ "name": "_toStringVisiting",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/754126564",
+ "children": [],
+ "inferredType": "Container mask: [subclass=JSArray] length: null type: [exact=JSExtendableArray]",
+ "code": null,
+ "type": "List"
+ },
+ "526089142": {
+ "id": "field/526089142",
+ "kind": "field",
+ "name": "_constructorNameFallback",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[exact=JS_CONST]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "577142640": {
+ "id": "field/577142640",
+ "kind": "field",
+ "name": "_index",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": null,
+ "type": "int"
+ },
+ "586155906": {
+ "id": "field/586155906",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "603434183": {
+ "id": "field/603434183",
+ "kind": "field",
+ "name": "cachedSortedIndices",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "List"
+ },
+ "626399440": {
+ "id": "field/626399440",
+ "kind": "field",
+ "name": "FUNCTION_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "645423404": {
+ "id": "field/645423404",
+ "kind": "field",
+ "name": "CALL_NAME_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "649547880": {
+ "id": "field/649547880",
+ "kind": "field",
+ "name": "end",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/974704527",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "num"
+ },
+ "653339731": {
+ "id": "field/653339731",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/866150578",
+ "children": [],
+ "inferredType": "Value mask: [\"Intercepted function with no arguments.\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "656800516": {
+ "id": "field/656800516",
+ "kind": "field",
+ "name": "data",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSFixedArray]",
+ "code": null,
+ "type": "List"
+ },
+ "667376711": {
+ "id": "field/667376711",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_RETURN_TYPE_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "701716969": {
+ "id": "field/701716969",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_VOID_RETURN_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "709451133": {
+ "id": "field/709451133",
+ "kind": "field",
+ "name": "receiverFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "727752212": {
+ "id": "field/727752212",
+ "kind": "field",
+ "name": "invalidValue",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "743971885": {
+ "id": "field/743971885",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_NAMED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "759319863": {
+ "id": "field/759319863",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "793498792": {
+ "id": "field/793498792",
+ "kind": "field",
+ "name": "isGivenTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "805748014": {
+ "id": "field/805748014",
+ "kind": "field",
+ "name": "isSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "840091021": {
+ "id": "field/840091021",
+ "kind": "field",
+ "name": "optionalParameterCount",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "840751619": {
+ "id": "field/840751619",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/56472591",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "Object"
+ },
+ "844410756": {
+ "id": "field/844410756",
+ "kind": "field",
+ "name": "DEFAULT_VALUES_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "856247106": {
+ "id": "field/856247106",
+ "kind": "field",
+ "name": "bound",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019636942",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "864119084": {
+ "id": "field/864119084",
+ "kind": "field",
+ "name": "OBJECT_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "874766737": {
+ "id": "field/874766737",
+ "kind": "field",
+ "name": "owner",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019636942",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "Type"
+ },
+ "875039735": {
+ "id": "field/875039735",
+ "kind": "field",
+ "name": "NULL_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "908476008": {
+ "id": "field/908476008",
+ "kind": "field",
+ "name": "printToZone",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/689380639",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "Function"
+ },
+ "911662921": {
+ "id": "field/911662921",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_INDEX",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "914172423": {
+ "id": "field/914172423",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "936474054": {
+ "id": "field/936474054",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "944915314": {
+ "id": "field/944915314",
+ "kind": "field",
+ "name": "variableName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/93352366",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "954188953": {
+ "id": "field/954188953",
+ "kind": "field",
+ "name": "length",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/175705485",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "960584371": {
+ "id": "field/960584371",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "1012317118": {
+ "id": "field/1012317118",
+ "kind": "field",
+ "name": "SIGNATURE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "1019580176": {
+ "id": "field/1019580176",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "1020283310": {
+ "id": "field/1020283310",
+ "kind": "field",
+ "name": "STATIC_FUNCTION_NAME_PROPERTY_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value mask: [\"$static_name\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "1061931090": {
+ "id": "field/1061931090",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "1063003009": {
+ "id": "field/1063003009",
+ "kind": "field",
+ "name": "isCheckPropertyToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "1068071433": {
+ "id": "field/1068071433",
+ "kind": "field",
+ "name": "name",
+ "size": 0,
+ "outputUnit": "outputUnit/987444055",
+ "parent": "class/1019636942",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ }
+ },
+ "constant": {},
+ "closure": {}
+ },
+ "holding": {
+ "function/399195151": [
+ {
+ "id": "function/606513838",
+ "mask": "inlined"
+ }
+ ],
+ "function/531925466": [
+ {
+ "id": "function/399195151",
+ "mask": "null"
+ },
+ {
+ "id": "function/399195151",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/606513838",
+ "mask": "null"
+ },
+ {
+ "id": "function/864228238",
+ "mask": "null"
+ },
+ {
+ "id": "function/864228238",
+ "mask": "null"
+ }
+ ]
+ },
+ "dependencies": {},
+ "outputUnits": [
+ {
+ "id": "outputUnit/987444055",
+ "kind": "outputUnit",
+ "name": null,
+ "size": 10324,
+ "imports": [
+ null
+ ]
+ }
+ ],
+ "dump_version": 5,
+ "deferredFiles": {},
+ "dump_minor_version": "0",
+ "program": {
+ "entrypoint": "function/531925466",
+ "size": 10324,
+ "dart2jsVersion": "1.23.0-dev.11.7",
+ "compilationMoment": "2017-04-17 09:46:41.661617",
+ "compilationDuration": 357402,
+ "toJsonDuration": 4000,
+ "dumpInfoDuration": 0,
+ "noSuchMethodEnabled": false,
+ "minified": false
+ }
+}
\ No newline at end of file
diff --git a/pkg/dart2js_info/test/hello_world_deferred/deferred_import.dart b/pkg/dart2js_info/test/hello_world_deferred/deferred_import.dart
new file mode 100644
index 0000000..a719959
--- /dev/null
+++ b/pkg/dart2js_info/test/hello_world_deferred/deferred_import.dart
@@ -0,0 +1 @@
+const helloWorld = "Hello, World!";
diff --git a/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.dart b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.dart
new file mode 100644
index 0000000..9baf023
--- /dev/null
+++ b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.dart
@@ -0,0 +1,6 @@
+import 'deferred_import.dart' deferred as deferred_import;
+
+Future<void> main() async {
+ await deferred_import.loadLibrary();
+ print(deferred_import.helloWorld);
+}
diff --git a/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json
new file mode 100644
index 0000000..7098f4a
--- /dev/null
+++ b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json
@@ -0,0 +1,26128 @@
+{
+ "elements": {
+ "library": {
+ "174368900": {
+ "id": "library/174368900",
+ "kind": "library",
+ "name": "_foreign_helper",
+ "size": 65,
+ "children": [
+ "class/949988971"
+ ],
+ "canonicalUri": "dart:_foreign_helper"
+ },
+ "237882207": {
+ "id": "library/237882207",
+ "kind": "library",
+ "name": "<unnamed>",
+ "size": 0,
+ "children": [
+ "field/162036481",
+ "field/241563122"
+ ],
+ "canonicalUri": "dart:_async_await_error_codes"
+ },
+ "238986171": {
+ "id": "library/238986171",
+ "kind": "library",
+ "name": "dart2js._js_primitives",
+ "size": 483,
+ "children": [
+ "function/864228238"
+ ],
+ "canonicalUri": "dart:_js_primitives"
+ },
+ "239009133": {
+ "id": "library/239009133",
+ "kind": "library",
+ "name": "<unnamed>",
+ "size": 0,
+ "children": [
+ "field/83424460"
+ ],
+ "canonicalUri": "file:///usr/local/google/home/lorenvs/git/dart2js_info/test/hello_world_deferred/deferred_import.dart"
+ },
+ "325218131": {
+ "id": "library/325218131",
+ "kind": "library",
+ "name": "_interceptors",
+ "size": 8861,
+ "children": [
+ "class/86936801",
+ "class/245082925",
+ "class/359696216",
+ "class/418854932",
+ "class/506846212",
+ "class/523978038",
+ "class/535478555",
+ "class/699388972",
+ "class/793539876",
+ "class/851867060",
+ "class/1003011102",
+ "class/1019758482",
+ "class/1034266724",
+ "field/406601007",
+ "function/821285776"
+ ],
+ "canonicalUri": "dart:_interceptors"
+ },
+ "527944179": {
+ "id": "library/527944179",
+ "kind": "library",
+ "name": "dart._js_names",
+ "size": 137,
+ "children": [
+ "function/203738274",
+ "function/508874693"
+ ],
+ "canonicalUri": "dart:_js_names"
+ },
+ "631335891": {
+ "id": "library/631335891",
+ "kind": "library",
+ "name": "dart.core",
+ "size": 9004,
+ "children": [
+ "class/36312556",
+ "class/56472591",
+ "class/70813553",
+ "class/93352366",
+ "class/143626168",
+ "class/175705485",
+ "class/217690375",
+ "class/293821936",
+ "class/314168330",
+ "class/335005182",
+ "class/347664883",
+ "class/351911148",
+ "class/481500691",
+ "class/542248491",
+ "class/562873772",
+ "class/595024907",
+ "class/627219877",
+ "class/631051714",
+ "class/635685670",
+ "class/803883908",
+ "class/893386369",
+ "class/948502579",
+ "class/959990109",
+ "class/974704527",
+ "class/991730135",
+ "class/1052045656",
+ "field/261042870",
+ "function/399195151"
+ ],
+ "canonicalUri": "dart:core"
+ },
+ "689380639": {
+ "id": "library/689380639",
+ "kind": "library",
+ "name": "dart._internal",
+ "size": 3245,
+ "children": [
+ "class/60704969",
+ "class/171867442",
+ "class/202804702",
+ "class/365655194",
+ "class/540398347",
+ "class/680257415",
+ "class/737466373",
+ "field/908476008",
+ "function/606513838"
+ ],
+ "canonicalUri": "dart:_internal"
+ },
+ "754126564": {
+ "id": "library/754126564",
+ "kind": "library",
+ "name": "dart.collection",
+ "size": 10695,
+ "children": [
+ "class/113750884",
+ "class/123522748",
+ "class/143510818",
+ "class/476286669",
+ "class/607623563",
+ "class/614050497",
+ "class/748502014",
+ "class/758572498",
+ "class/812154630",
+ "class/868658259",
+ "class/943457796",
+ "class/975959345",
+ "class/1059387371",
+ "class/1070558590",
+ "field/522978319",
+ "function/778541068",
+ "function/921677904"
+ ],
+ "canonicalUri": "dart:collection"
+ },
+ "934372066": {
+ "id": "library/934372066",
+ "kind": "library",
+ "name": "<unnamed>",
+ "size": 996,
+ "children": [
+ "function/921486255"
+ ],
+ "canonicalUri": "file:///usr/local/google/home/lorenvs/git/dart2js_info/test/hello_world_deferred/hello_world_deferred.dart"
+ },
+ "965528565": {
+ "id": "library/965528565",
+ "kind": "library",
+ "name": "dart2js._embedded_names",
+ "size": 0,
+ "children": [
+ "class/73206861",
+ "class/716671121",
+ "field/43092689",
+ "field/55541185",
+ "field/110087164",
+ "field/125761045",
+ "field/214758996",
+ "field/637404994",
+ "field/698350444",
+ "field/879032432",
+ "field/1020283310"
+ ],
+ "canonicalUri": "dart:_js_embedded_names"
+ },
+ "966364039": {
+ "id": "library/966364039",
+ "kind": "library",
+ "name": "_js_helper",
+ "size": 53313,
+ "children": [
+ "class/8008562",
+ "class/17649844",
+ "class/27679401",
+ "class/44790816",
+ "class/138211367",
+ "class/156108056",
+ "class/216047131",
+ "class/269073412",
+ "class/294355530",
+ "class/317291728",
+ "class/324980341",
+ "class/354160010",
+ "class/373504153",
+ "class/388380492",
+ "class/466061502",
+ "class/500662026",
+ "class/518228506",
+ "class/644348892",
+ "class/692496355",
+ "class/722522722",
+ "class/742137989",
+ "class/790616034",
+ "class/866150578",
+ "class/954836234",
+ "class/958488954",
+ "field/8965675",
+ "field/126292751",
+ "field/244162491",
+ "field/417944821",
+ "field/496557243",
+ "field/526089142",
+ "field/670005717",
+ "field/907727246",
+ "field/926265914",
+ "function/21667157",
+ "function/53631526",
+ "function/64968119",
+ "function/79175019",
+ "function/108053021",
+ "function/109394176",
+ "function/136972596",
+ "function/163889622",
+ "function/193787732",
+ "function/225159691",
+ "function/230858033",
+ "function/257728434",
+ "function/263798810",
+ "function/264370095",
+ "function/265638794",
+ "function/268773900",
+ "function/275681184",
+ "function/292889014",
+ "function/299781104",
+ "function/306374693",
+ "function/308590446",
+ "function/309114439",
+ "function/310457557",
+ "function/316732114",
+ "function/326542993",
+ "function/418915149",
+ "function/419713835",
+ "function/435575019",
+ "function/445547062",
+ "function/467155193",
+ "function/483766990",
+ "function/486797615",
+ "function/487598887",
+ "function/491418529",
+ "function/499330809",
+ "function/501712645",
+ "function/528985088",
+ "function/544746737",
+ "function/551570860",
+ "function/553851206",
+ "function/555987509",
+ "function/560797298",
+ "function/607704865",
+ "function/638664464",
+ "function/639806883",
+ "function/658082982",
+ "function/665676035",
+ "function/668300184",
+ "function/679532174",
+ "function/689069465",
+ "function/708419578",
+ "function/710092165",
+ "function/714600619",
+ "function/717561594",
+ "function/722993348",
+ "function/734834560",
+ "function/736875717",
+ "function/737782244",
+ "function/751200407",
+ "function/756575134",
+ "function/764768055",
+ "function/772250195",
+ "function/788412943",
+ "function/798288240",
+ "function/813370328",
+ "function/827571674",
+ "function/906921796",
+ "function/967508646",
+ "function/984452543",
+ "function/992679489",
+ "function/1012615396",
+ "function/1049802380",
+ "function/1060205580"
+ ],
+ "canonicalUri": "dart:_js_helper"
+ },
+ "1052666095": {
+ "id": "library/1052666095",
+ "kind": "library",
+ "name": "dart.async",
+ "size": 35210,
+ "children": [
+ "class/32494041",
+ "class/80405414",
+ "class/185316425",
+ "class/240292734",
+ "class/410333734",
+ "class/438137149",
+ "class/471305727",
+ "class/566341130",
+ "class/577121337",
+ "class/611525899",
+ "class/714718140",
+ "class/733467750",
+ "class/770824752",
+ "class/784178238",
+ "class/850763763",
+ "class/934351233",
+ "class/952584796",
+ "class/1012203707",
+ "class/1040168844",
+ "class/1059755229",
+ "field/29748263",
+ "field/370436126",
+ "field/639289778",
+ "field/931441116",
+ "field/952591811",
+ "function/67701762",
+ "function/82702408",
+ "function/116583875",
+ "function/160969748",
+ "function/205154197",
+ "function/262026503",
+ "function/271854590",
+ "function/330018012",
+ "function/336168458",
+ "function/337937411",
+ "function/364010339",
+ "function/412886703",
+ "function/415620823",
+ "function/635153575",
+ "function/650942169",
+ "function/658921946",
+ "function/663282901",
+ "function/710611585",
+ "function/831655802",
+ "function/835692712",
+ "function/887884267"
+ ],
+ "canonicalUri": "dart:async"
+ }
+ },
+ "class": {
+ "8008562": {
+ "id": "class/8008562",
+ "kind": "class",
+ "name": "DeferredNotLoadedError",
+ "size": 160,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/826222890",
+ "function/116203851",
+ "function/179653294"
+ ]
+ },
+ "17649844": {
+ "id": "class/17649844",
+ "kind": "class",
+ "name": "JsNoSuchMethodError",
+ "size": 763,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/345425066",
+ "field/347443343",
+ "field/627383241",
+ "function/336352070",
+ "function/636061569"
+ ]
+ },
+ "27679401": {
+ "id": "class/27679401",
+ "kind": "class",
+ "name": "UnknownJsTypeError",
+ "size": 167,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/346735010",
+ "function/430193009",
+ "function/793410068"
+ ]
+ },
+ "32494041": {
+ "id": "class/32494041",
+ "kind": "class",
+ "name": "_TimerImpl",
+ "size": 786,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/9743357",
+ "field/710218156",
+ "field/889385105",
+ "function/773230206"
+ ]
+ },
+ "36312556": {
+ "id": "class/36312556",
+ "kind": "class",
+ "name": "ConcurrentModificationError",
+ "size": 473,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/376257386",
+ "function/701409225",
+ "function/745741399"
+ ]
+ },
+ "44790816": {
+ "id": "class/44790816",
+ "kind": "class",
+ "name": "TearOffClosure",
+ "size": 29,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "56472591": {
+ "id": "class/56472591",
+ "kind": "class",
+ "name": "AssertionError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/840751619"
+ ]
+ },
+ "60704969": {
+ "id": "class/60704969",
+ "kind": "class",
+ "name": "SubListIterable",
+ "size": 2236,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/52345936",
+ "field/373519716",
+ "field/850921879",
+ "function/150523169",
+ "function/199851072",
+ "function/494094492",
+ "function/784650927",
+ "function/990521259",
+ "function/1016194181"
+ ]
+ },
+ "70813553": {
+ "id": "class/70813553",
+ "kind": "class",
+ "name": "Iterable",
+ "size": 323,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/66015995",
+ "function/430236296"
+ ]
+ },
+ "73206861": {
+ "id": "class/73206861",
+ "kind": "class",
+ "name": "JsGetName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/159930244",
+ "field/190934046",
+ "field/202409972",
+ "field/391942199",
+ "field/422530140",
+ "field/447707988",
+ "field/496083304",
+ "field/586155906",
+ "field/626399440",
+ "field/645423404",
+ "field/667376711",
+ "field/701716969",
+ "field/743971885",
+ "field/842452872",
+ "field/844410756",
+ "field/854910375",
+ "field/864119084",
+ "field/875039735",
+ "field/914172423",
+ "field/960584371",
+ "field/1012317118",
+ "field/1019580176"
+ ]
+ },
+ "80405414": {
+ "id": "class/80405414",
+ "kind": "class",
+ "name": "_FutureListener",
+ "size": 683,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/79374407",
+ "field/187449514",
+ "field/304825305",
+ "field/343514633",
+ "field/378321689",
+ "field/421412262",
+ "field/449691021",
+ "field/516194057",
+ "field/708528118",
+ "field/714493219",
+ "field/966669333",
+ "field/969673523",
+ "field/1055298109",
+ "function/39768413",
+ "function/68051831",
+ "function/95599505",
+ "function/171287120",
+ "function/350333970",
+ "function/370120278",
+ "function/373761717",
+ "function/430787578",
+ "function/552271305",
+ "function/692185405",
+ "function/748173162",
+ "function/795411795",
+ "function/919469907",
+ "function/1030881401",
+ "function/1055095230"
+ ]
+ },
+ "86936801": {
+ "id": "class/86936801",
+ "kind": "class",
+ "name": "Interceptor",
+ "size": 341,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/425007214",
+ "function/796179660",
+ "function/944731702"
+ ]
+ },
+ "93352366": {
+ "id": "class/93352366",
+ "kind": "class",
+ "name": "CyclicInitializationError",
+ "size": 269,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/944915314",
+ "function/150705145",
+ "function/681643547"
+ ]
+ },
+ "113750884": {
+ "id": "class/113750884",
+ "kind": "class",
+ "name": "_LinkedHashSetIterator",
+ "size": 645,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/65712884",
+ "field/635439616",
+ "field/646361925",
+ "field/795932009",
+ "function/176842663",
+ "function/676035370",
+ "function/834909172"
+ ]
+ },
+ "123522748": {
+ "id": "class/123522748",
+ "kind": "class",
+ "name": "_LinkedHashSet",
+ "size": 3795,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/60920969",
+ "field/229586442",
+ "field/347672432",
+ "field/410301694",
+ "field/435679137",
+ "field/459351028",
+ "field/676869951",
+ "function/702510",
+ "function/16600620",
+ "function/30570662",
+ "function/31139860",
+ "function/98156511",
+ "function/99251871",
+ "function/114607430",
+ "function/130131853",
+ "function/275957193",
+ "function/336424489",
+ "function/380929608",
+ "function/448031436",
+ "function/616072379",
+ "function/649401243",
+ "function/870367819",
+ "function/920500080",
+ "function/969026469",
+ "function/998984172",
+ "function/1002752870"
+ ]
+ },
+ "138211367": {
+ "id": "class/138211367",
+ "kind": "class",
+ "name": "BoundClosure",
+ "size": 1734,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/125830184",
+ "field/180845508",
+ "field/302220255",
+ "field/435101137",
+ "field/709451133",
+ "field/1061931090",
+ "function/15478302",
+ "function/292195356",
+ "function/393060060",
+ "function/564404904",
+ "function/705889064",
+ "function/724475372",
+ "function/762030080",
+ "function/791079680",
+ "function/906797235"
+ ]
+ },
+ "143510818": {
+ "id": "class/143510818",
+ "kind": "class",
+ "name": "LinkedHashSet",
+ "size": 31,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/128684509"
+ ]
+ },
+ "143626168": {
+ "id": "class/143626168",
+ "kind": "class",
+ "name": "ArgumentError",
+ "size": 967,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/4524053",
+ "field/509005655",
+ "field/727752212",
+ "field/759319863",
+ "function/448227795",
+ "function/464959827",
+ "function/606572177",
+ "function/717852932",
+ "function/885768717"
+ ]
+ },
+ "156108056": {
+ "id": "class/156108056",
+ "kind": "class",
+ "name": "ReflectionInfo",
+ "size": 756,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/116849538",
+ "field/130159427",
+ "field/206386055",
+ "field/259683855",
+ "field/338588500",
+ "field/420557924",
+ "field/446360348",
+ "field/603434183",
+ "field/656800516",
+ "field/840091021",
+ "field/911662921",
+ "function/222294695",
+ "function/684612786"
+ ]
+ },
+ "171867442": {
+ "id": "class/171867442",
+ "kind": "class",
+ "name": "SkipIterable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/648221667"
+ ]
+ },
+ "175705485": {
+ "id": "class/175705485",
+ "kind": "class",
+ "name": "IndexError",
+ "size": 742,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/505549528",
+ "field/954188953",
+ "function/275271990",
+ "function/620005669",
+ "function/985926244"
+ ]
+ },
+ "185316425": {
+ "id": "class/185316425",
+ "kind": "class",
+ "name": "_Zone",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/57158184"
+ ]
+ },
+ "202804702": {
+ "id": "class/202804702",
+ "kind": "class",
+ "name": "EfficientLengthIterable",
+ "size": 30,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "216047131": {
+ "id": "class/216047131",
+ "kind": "class",
+ "name": "StringMatch",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/231027572",
+ "field/402795939",
+ "field/404664193"
+ ]
+ },
+ "217690375": {
+ "id": "class/217690375",
+ "kind": "class",
+ "name": "_Exception",
+ "size": 121,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/650081226",
+ "function/431897853",
+ "function/806420362"
+ ]
+ },
+ "240292734": {
+ "id": "class/240292734",
+ "kind": "class",
+ "name": "StreamIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/357627841"
+ ]
+ },
+ "245082925": {
+ "id": "class/245082925",
+ "kind": "class",
+ "name": "JSBool",
+ "size": 225,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/175997763",
+ "function/991909617"
+ ]
+ },
+ "269073412": {
+ "id": "class/269073412",
+ "kind": "class",
+ "name": "TypeImpl",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/70141207",
+ "field/412345286"
+ ]
+ },
+ "293821936": {
+ "id": "class/293821936",
+ "kind": "class",
+ "name": "StringBuffer",
+ "size": 836,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/1047452024",
+ "function/210296716",
+ "function/335045122",
+ "function/358340511",
+ "function/372037963",
+ "function/388977016",
+ "function/521874428",
+ "function/789545114",
+ "function/843997665"
+ ]
+ },
+ "294355530": {
+ "id": "class/294355530",
+ "kind": "class",
+ "name": "TypeErrorDecoder",
+ "size": 2490,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/55197673",
+ "field/79943715",
+ "field/123513767",
+ "field/146902950",
+ "field/169031325",
+ "field/189240247",
+ "field/337959975",
+ "field/359397062",
+ "field/366629653",
+ "field/368849633",
+ "field/381082880",
+ "field/645317327",
+ "field/646744185",
+ "field/817840529",
+ "field/906853360",
+ "field/1012307238",
+ "function/219348673",
+ "function/229841336",
+ "function/473156332",
+ "function/553278458",
+ "function/611761598",
+ "function/640815092",
+ "function/642221110",
+ "function/698206676",
+ "function/725505159",
+ "function/814002251",
+ "function/932567378"
+ ]
+ },
+ "314168330": {
+ "id": "class/314168330",
+ "kind": "class",
+ "name": "double",
+ "size": 25,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "317291728": {
+ "id": "class/317291728",
+ "kind": "class",
+ "name": "Closure",
+ "size": 266,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/386221903",
+ "function/253794122",
+ "function/273024378",
+ "function/320253842",
+ "function/476860251",
+ "function/899124813",
+ "function/922840913",
+ "function/1051093947"
+ ]
+ },
+ "324980341": {
+ "id": "class/324980341",
+ "kind": "class",
+ "name": "TypeErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/319720392"
+ ]
+ },
+ "335005182": {
+ "id": "class/335005182",
+ "kind": "class",
+ "name": "num",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "347664883": {
+ "id": "class/347664883",
+ "kind": "class",
+ "name": "StackTrace",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/272589495"
+ ]
+ },
+ "351911148": {
+ "id": "class/351911148",
+ "kind": "class",
+ "name": "Null",
+ "size": 200,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/565013754",
+ "function/860159722"
+ ]
+ },
+ "354160010": {
+ "id": "class/354160010",
+ "kind": "class",
+ "name": "Primitives",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/118657756",
+ "function/507333070",
+ "function/540949546",
+ "function/549577701",
+ "function/712365042",
+ "function/873863767",
+ "function/890739228",
+ "function/993180100"
+ ]
+ },
+ "359696216": {
+ "id": "class/359696216",
+ "kind": "class",
+ "name": "JSDouble",
+ "size": 30,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": []
+ },
+ "365655194": {
+ "id": "class/365655194",
+ "kind": "class",
+ "name": "ListIterator",
+ "size": 707,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/153843292",
+ "field/154746101",
+ "field/525450391",
+ "field/626762025",
+ "function/80270395",
+ "function/581270226",
+ "function/1047605700"
+ ]
+ },
+ "373504153": {
+ "id": "class/373504153",
+ "kind": "class",
+ "name": "LinkedHashMapKeyIterable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/499560688",
+ "function/739160294",
+ "function/950782810"
+ ]
+ },
+ "388380492": {
+ "id": "class/388380492",
+ "kind": "class",
+ "name": "ExceptionAndStackTrace",
+ "size": 52,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/701889804",
+ "field/909027003",
+ "function/259223906"
+ ]
+ },
+ "410333734": {
+ "id": "class/410333734",
+ "kind": "class",
+ "name": "DeferredLoadException",
+ "size": 262,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/443749531",
+ "function/72077250",
+ "function/754771250"
+ ]
+ },
+ "418854932": {
+ "id": "class/418854932",
+ "kind": "class",
+ "name": "JSNull",
+ "size": 268,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/519947595",
+ "function/878987098",
+ "function/962973203"
+ ]
+ },
+ "438137149": {
+ "id": "class/438137149",
+ "kind": "class",
+ "name": "Future",
+ "size": 1279,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/1016218670",
+ "function/385444888",
+ "function/513053773",
+ "function/754498726"
+ ]
+ },
+ "466061502": {
+ "id": "class/466061502",
+ "kind": "class",
+ "name": "StaticClosure",
+ "size": 238,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/143567266",
+ "function/285148179"
+ ]
+ },
+ "471305727": {
+ "id": "class/471305727",
+ "kind": "class",
+ "name": "Completer",
+ "size": 31,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/350634082",
+ "function/1014821943"
+ ]
+ },
+ "476286669": {
+ "id": "class/476286669",
+ "kind": "class",
+ "name": "MapMixin",
+ "size": 195,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/891910474",
+ "function/1008544093"
+ ]
+ },
+ "481500691": {
+ "id": "class/481500691",
+ "kind": "class",
+ "name": "bool",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/173469993",
+ "function/808159833"
+ ]
+ },
+ "500662026": {
+ "id": "class/500662026",
+ "kind": "class",
+ "name": "LinkedHashMapCell",
+ "size": 100,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/192950192",
+ "field/431266734",
+ "field/509651846",
+ "field/996559228",
+ "function/481547973"
+ ]
+ },
+ "506846212": {
+ "id": "class/506846212",
+ "kind": "class",
+ "name": "UnknownJavaScriptObject",
+ "size": 38,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": []
+ },
+ "518228506": {
+ "id": "class/518228506",
+ "kind": "class",
+ "name": "_StackTrace",
+ "size": 393,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/127038922",
+ "field/460958077",
+ "function/272627576",
+ "function/436231120"
+ ]
+ },
+ "523978038": {
+ "id": "class/523978038",
+ "kind": "class",
+ "name": "JSArray",
+ "size": 3800,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/80736041",
+ "function/144469777",
+ "function/144469778",
+ "function/162825675",
+ "function/221934998",
+ "function/369614033",
+ "function/405266426",
+ "function/407139250",
+ "function/437395524",
+ "function/453686242",
+ "function/456567103",
+ "function/478486472",
+ "function/482441661",
+ "function/653699436",
+ "function/952130975",
+ "function/979933658",
+ "function/997099929",
+ "function/1024143730"
+ ]
+ },
+ "535478555": {
+ "id": "class/535478555",
+ "kind": "class",
+ "name": "JSInt",
+ "size": 47,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": []
+ },
+ "540398347": {
+ "id": "class/540398347",
+ "kind": "class",
+ "name": "ListIterable",
+ "size": 161,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/852972506"
+ ]
+ },
+ "542248491": {
+ "id": "class/542248491",
+ "kind": "class",
+ "name": "StackOverflowError",
+ "size": 121,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/93381370",
+ "function/632290992"
+ ]
+ },
+ "562873772": {
+ "id": "class/562873772",
+ "kind": "class",
+ "name": "int",
+ "size": 25,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "566341130": {
+ "id": "class/566341130",
+ "kind": "class",
+ "name": "_RootZone",
+ "size": 1610,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/63166902",
+ "function/164775669",
+ "function/338379080",
+ "function/351622741",
+ "function/390828239",
+ "function/417406426",
+ "function/613322203",
+ "function/633677177",
+ "function/644221207",
+ "function/888466063",
+ "function/904115316",
+ "function/968241519",
+ "function/992393187",
+ "function/1036675160"
+ ]
+ },
+ "577121337": {
+ "id": "class/577121337",
+ "kind": "class",
+ "name": "AsyncError",
+ "size": 137,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/24026359",
+ "field/1023319897",
+ "function/11804710",
+ "function/613119304"
+ ]
+ },
+ "595024907": {
+ "id": "class/595024907",
+ "kind": "class",
+ "name": "NullThrownError",
+ "size": 101,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/730595126",
+ "function/968358412"
+ ]
+ },
+ "607623563": {
+ "id": "class/607623563",
+ "kind": "class",
+ "name": "ListBase",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/1060110710"
+ ]
+ },
+ "611525899": {
+ "id": "class/611525899",
+ "kind": "class",
+ "name": "_AsyncRun",
+ "size": 688,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/932611099",
+ "function/67489885",
+ "function/163884478",
+ "function/165003912",
+ "function/546320785",
+ "function/608925525"
+ ]
+ },
+ "614050497": {
+ "id": "class/614050497",
+ "kind": "class",
+ "name": "LinkedHashMap",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/116599339"
+ ]
+ },
+ "627219877": {
+ "id": "class/627219877",
+ "kind": "class",
+ "name": "Object",
+ "size": 378,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/167405219",
+ "function/749970393",
+ "function/837956997"
+ ]
+ },
+ "631051714": {
+ "id": "class/631051714",
+ "kind": "class",
+ "name": "Exception",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/301932486"
+ ]
+ },
+ "635685670": {
+ "id": "class/635685670",
+ "kind": "class",
+ "name": "String",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "644348892": {
+ "id": "class/644348892",
+ "kind": "class",
+ "name": "CastErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/185234473"
+ ]
+ },
+ "680257415": {
+ "id": "class/680257415",
+ "kind": "class",
+ "name": "SkipIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/51929026",
+ "field/824622307"
+ ]
+ },
+ "692496355": {
+ "id": "class/692496355",
+ "kind": "class",
+ "name": "Es6LinkedHashMap",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/494583530"
+ ]
+ },
+ "699388972": {
+ "id": "class/699388972",
+ "kind": "class",
+ "name": "JSUnmodifiableArray",
+ "size": 29,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": []
+ },
+ "714718140": {
+ "id": "class/714718140",
+ "kind": "class",
+ "name": "_AsyncCompleter",
+ "size": 383,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/102471615",
+ "function/779765691",
+ "function/1065856678"
+ ]
+ },
+ "716671121": {
+ "id": "class/716671121",
+ "kind": "class",
+ "name": "JsBuiltin",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/17152193",
+ "field/153611669",
+ "field/221593932",
+ "field/413692838",
+ "field/434352794",
+ "field/483247773",
+ "field/563519506",
+ "field/618333384",
+ "field/680112395",
+ "field/701363438",
+ "field/793498792",
+ "field/805748014",
+ "field/936474054",
+ "field/1063003009"
+ ]
+ },
+ "722522722": {
+ "id": "class/722522722",
+ "kind": "class",
+ "name": "JsLinkedHashMap",
+ "size": 5142,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/202484522",
+ "field/232791153",
+ "field/269363605",
+ "field/650800220",
+ "field/742643375",
+ "field/795691913",
+ "field/818740436",
+ "function/538046",
+ "function/38646490",
+ "function/123959555",
+ "function/245651187",
+ "function/315128565",
+ "function/370295194",
+ "function/400990606",
+ "function/542135743",
+ "function/573775196",
+ "function/585544091",
+ "function/636443477",
+ "function/665416673",
+ "function/669694580",
+ "function/687991937",
+ "function/689271731",
+ "function/702114504",
+ "function/731794670",
+ "function/756812986",
+ "function/813862273",
+ "function/820195095",
+ "function/889342435",
+ "function/897413385",
+ "function/1015140651",
+ "function/1033661873"
+ ]
+ },
+ "733467750": {
+ "id": "class/733467750",
+ "kind": "class",
+ "name": "_AsyncCallbackEntry",
+ "size": 41,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/607252",
+ "field/221913650",
+ "function/895978326"
+ ]
+ },
+ "737466373": {
+ "id": "class/737466373",
+ "kind": "class",
+ "name": "IterableElementError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/458931695"
+ ]
+ },
+ "742137989": {
+ "id": "class/742137989",
+ "kind": "class",
+ "name": "LinkedHashMapKeyIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/60719081",
+ "field/130629664",
+ "field/635780781",
+ "field/1051861725"
+ ]
+ },
+ "748502014": {
+ "id": "class/748502014",
+ "kind": "class",
+ "name": "MapBase",
+ "size": 379,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/987508329"
+ ]
+ },
+ "758572498": {
+ "id": "class/758572498",
+ "kind": "class",
+ "name": "SetMixin",
+ "size": 137,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/176570718"
+ ]
+ },
+ "770824752": {
+ "id": "class/770824752",
+ "kind": "class",
+ "name": "_Completer",
+ "size": 510,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/1025923114",
+ "function/766396929"
+ ]
+ },
+ "784178238": {
+ "id": "class/784178238",
+ "kind": "class",
+ "name": "_Future",
+ "size": 15179,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/240049228",
+ "field/285504086",
+ "field/370348518",
+ "field/485816538",
+ "field/786919906",
+ "field/840661601",
+ "field/927731351",
+ "field/978504898",
+ "function/15925204",
+ "function/16930089",
+ "function/18599313",
+ "function/22227107",
+ "function/51167109",
+ "function/94108092",
+ "function/96457955",
+ "function/263363184",
+ "function/271674536",
+ "function/292751514",
+ "function/325386239",
+ "function/352514166",
+ "function/492708773",
+ "function/519629171",
+ "function/533906117",
+ "function/553149607",
+ "function/556268777",
+ "function/574550003",
+ "function/599927967",
+ "function/638807044",
+ "function/664449932",
+ "function/717417998",
+ "function/722405802",
+ "function/772606842",
+ "function/823929753",
+ "function/853973218",
+ "function/901078366",
+ "function/941710296",
+ "function/971160936",
+ "function/983564685",
+ "function/1031131035",
+ "function/1058735230"
+ ]
+ },
+ "790616034": {
+ "id": "class/790616034",
+ "kind": "class",
+ "name": "NullError",
+ "size": 429,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/23408725",
+ "field/414662379",
+ "function/143741280",
+ "function/148863126"
+ ]
+ },
+ "793539876": {
+ "id": "class/793539876",
+ "kind": "class",
+ "name": "JSString",
+ "size": 1983,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/186999466",
+ "function/204916897",
+ "function/312768442",
+ "function/347974666",
+ "function/550544609",
+ "function/726979110",
+ "function/773528822",
+ "function/942227822"
+ ]
+ },
+ "803883908": {
+ "id": "class/803883908",
+ "kind": "class",
+ "name": "Duration",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/186466978",
+ "field/299693352",
+ "field/478876039",
+ "field/728368328",
+ "field/790173099",
+ "field/795392143",
+ "field/849640421",
+ "field/914591285",
+ "field/951952385",
+ "field/962499289",
+ "field/996584734",
+ "function/357240896"
+ ]
+ },
+ "812154630": {
+ "id": "class/812154630",
+ "kind": "class",
+ "name": "IterableBase",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/430480673",
+ "function/580865640"
+ ]
+ },
+ "850763763": {
+ "id": "class/850763763",
+ "kind": "class",
+ "name": "_AsyncAwaitCompleter",
+ "size": 1026,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/334228980",
+ "field/368460625",
+ "function/618126497",
+ "function/693686431",
+ "function/852141617",
+ "function/1014074245"
+ ]
+ },
+ "851867060": {
+ "id": "class/851867060",
+ "kind": "class",
+ "name": "JavaScriptObject",
+ "size": 182,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/91425461",
+ "function/380325809"
+ ]
+ },
+ "866150578": {
+ "id": "class/866150578",
+ "kind": "class",
+ "name": "RuntimeError",
+ "size": 123,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/653339731",
+ "function/841192189",
+ "function/848267879"
+ ]
+ },
+ "868658259": {
+ "id": "class/868658259",
+ "kind": "class",
+ "name": "_LinkedHashSetCell",
+ "size": 52,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/295541341",
+ "field/839347349",
+ "field/914365883",
+ "function/411231605"
+ ]
+ },
+ "893386369": {
+ "id": "class/893386369",
+ "kind": "class",
+ "name": "Error",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/302617892",
+ "function/355012434",
+ "function/1042482096"
+ ]
+ },
+ "934351233": {
+ "id": "class/934351233",
+ "kind": "class",
+ "name": "_ZoneFunction",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/303835005",
+ "field/657138181"
+ ]
+ },
+ "943457796": {
+ "id": "class/943457796",
+ "kind": "class",
+ "name": "SetBase",
+ "size": 30,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "948502579": {
+ "id": "class/948502579",
+ "kind": "class",
+ "name": "StateError",
+ "size": 240,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/190358771",
+ "function/130041650",
+ "function/271556856"
+ ]
+ },
+ "949988971": {
+ "id": "class/949988971",
+ "kind": "class",
+ "name": "JS_CONST",
+ "size": 32,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/174368900",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/249142929"
+ ]
+ },
+ "952584796": {
+ "id": "class/952584796",
+ "kind": "class",
+ "name": "_SyncCompleter",
+ "size": 495,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/99501118",
+ "function/162872908",
+ "function/477609809"
+ ]
+ },
+ "954836234": {
+ "id": "class/954836234",
+ "kind": "class",
+ "name": "_StringAllMatchesIterable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/771598536"
+ ]
+ },
+ "958488954": {
+ "id": "class/958488954",
+ "kind": "class",
+ "name": "_StringAllMatchesIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/16888485",
+ "field/275000790",
+ "field/661173290"
+ ]
+ },
+ "959990109": {
+ "id": "class/959990109",
+ "kind": "class",
+ "name": "List",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/210974499",
+ "function/436170439"
+ ]
+ },
+ "974704527": {
+ "id": "class/974704527",
+ "kind": "class",
+ "name": "RangeError",
+ "size": 1580,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/111931226",
+ "field/649547880",
+ "function/243489700",
+ "function/349997389",
+ "function/427434111",
+ "function/539017937",
+ "function/965257927",
+ "function/1024465827"
+ ]
+ },
+ "975959345": {
+ "id": "class/975959345",
+ "kind": "class",
+ "name": "_HashSetBase",
+ "size": 29,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "991730135": {
+ "id": "class/991730135",
+ "kind": "class",
+ "name": "UnsupportedError",
+ "size": 264,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/140571055",
+ "function/208283907",
+ "function/474133145"
+ ]
+ },
+ "1003011102": {
+ "id": "class/1003011102",
+ "kind": "class",
+ "name": "JSNumber",
+ "size": 967,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/717638099",
+ "field/1001207931",
+ "function/440018750",
+ "function/499807915",
+ "function/738104072",
+ "function/752981084",
+ "function/830798781",
+ "function/854200700"
+ ]
+ },
+ "1012203707": {
+ "id": "class/1012203707",
+ "kind": "class",
+ "name": "Timer",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "function/367762222"
+ ]
+ },
+ "1019758482": {
+ "id": "class/1019758482",
+ "kind": "class",
+ "name": "ArrayIterator",
+ "size": 574,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/112618843",
+ "field/237146195",
+ "field/504170901",
+ "field/577142640",
+ "function/950708086",
+ "function/977867690",
+ "function/1027535878"
+ ]
+ },
+ "1034266724": {
+ "id": "class/1034266724",
+ "kind": "class",
+ "name": "PlainJavaScriptObject",
+ "size": 38,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": []
+ },
+ "1040168844": {
+ "id": "class/1040168844",
+ "kind": "class",
+ "name": "_StreamIterator",
+ "size": 66,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/51249772",
+ "field/172148876",
+ "field/305114389",
+ "function/188708191"
+ ]
+ },
+ "1052045656": {
+ "id": "class/1052045656",
+ "kind": "class",
+ "name": "Map",
+ "size": 28,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": []
+ },
+ "1059387371": {
+ "id": "class/1059387371",
+ "kind": "class",
+ "name": "_LinkedIdentityHashSet",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "function/120153851"
+ ]
+ },
+ "1059755229": {
+ "id": "class/1059755229",
+ "kind": "class",
+ "name": "Zone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/42778158",
+ "function/343621437",
+ "function/460512542",
+ "function/975105635"
+ ]
+ },
+ "1070558590": {
+ "id": "class/1070558590",
+ "kind": "class",
+ "name": "_LinkedCustomHashSet",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/398469089",
+ "field/882420015",
+ "field/973809471"
+ ]
+ }
+ },
+ "function": {
+ "538046": {
+ "id": "function/538046",
+ "kind": "function",
+ "name": "_newHashTable",
+ "size": 234,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_newHashTable$0: function() {\n var table = Object.create(null);\n this._setTableEntry$3(table, \"<non-identifier-key>\", table);\n this._deleteTableEntry$2(table, \"<non-identifier-key>\");\n return table;\n}\n",
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "702510": {
+ "id": "function/702510",
+ "kind": "function",
+ "name": "_getTableEntry",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "11804710": {
+ "id": "function/11804710",
+ "kind": "function",
+ "name": "AsyncError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/577121337",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=AsyncError]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "dynamic Function(Object,StackTrace)",
+ "measurements": null
+ },
+ "15204906": {
+ "id": "function/15204906",
+ "kind": "function",
+ "name": "call",
+ "size": 1534,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/963665986",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var completeResult, e, s, t1, exception, t2, originalSource;\n completeResult = null;\n try {\n t1 = this.listener;\n completeResult = t1.result._zone.run$1(t1.callback);\n } catch (exception) {\n e = H.unwrapException(exception);\n s = H.getTraceFromException(exception);\n if (this.hasError) {\n t1 = this._box_1.source._resultOrListeners.get$error();\n t2 = e;\n t2 = t1 == null ? t2 == null : t1 === t2;\n t1 = t2;\n } else\n t1 = false;\n t2 = this._box_0;\n if (t1)\n t2.listenerValueOrError = this._box_1.source._resultOrListeners;\n else\n t2.listenerValueOrError = new P.AsyncError(e, s);\n t2.listenerHasError = true;\n return;\n }\n if (!!J.getInterceptor(completeResult).$isFuture) {\n if (completeResult instanceof P._Future && completeResult.get$_state() >= 4) {\n if (completeResult.get$_state() === 8) {\n t1 = this._box_0;\n t1.listenerValueOrError = completeResult.get$_resultOrListeners();\n t1.listenerHasError = true;\n }\n return;\n }\n originalSource = this._box_1.source;\n t1 = this._box_0;\n t1.listenerValueOrError = completeResult.then$1(new P._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource));\n t1.listenerHasError = false;\n }\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "15478302": {
+ "id": "function/15478302",
+ "kind": "function",
+ "name": "toString",
+ "size": 257,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var receiver = this._receiver;\n if (receiver == null)\n receiver = this._self;\n return \"Closure '\" + H.S(this._name) + \"' of \" + (\"Instance of '\" + H.Primitives_objectTypeName(receiver) + \"'\");\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "15925204": {
+ "id": "function/15925204",
+ "kind": "function",
+ "name": "_complete",
+ "size": 590,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_complete$1: function(value) {\n var t1, t2, listeners;\n t1 = this.$ti;\n t2 = H.checkSubtypeV1(value, \"$isFuture\", t1, \"$asFuture\");\n if (t2) {\n t1 = H.checkSubtypeV1(value, \"$is_Future\", t1, null);\n if (t1)\n P._Future__chainCoreFuture(value, this);\n else\n P._Future__chainForeignFuture(value, this);\n } else {\n listeners = this._removeListeners$0();\n this._state = 4;\n this._resultOrListeners = value;\n P._Future__propagateToListeners(this, listeners);\n }\n}\n",
+ "type": "void Function(dynamic)",
+ "measurements": null
+ },
+ "16600620": {
+ "id": "function/16600620",
+ "kind": "function",
+ "name": "_add",
+ "size": 563,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_LinkedHashSet.E"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_add$1: function(element) {\n var rest, hash, bucket;\n rest = this._rest;\n if (rest == null) {\n rest = P._LinkedHashSet__newHashTable();\n this._rest = rest;\n }\n hash = this._computeHashCode$1(element);\n bucket = rest[hash];\n if (bucket == null)\n rest[hash] = [this._newLinkedCell$1(element)];\n else {\n if (this._findBucketIndex$2(bucket, element) >= 0)\n return false;\n bucket.push(this._newLinkedCell$1(element));\n }\n return true;\n}\n",
+ "type": "bool Function(_LinkedHashSet.E)",
+ "measurements": null
+ },
+ "16930089": {
+ "id": "function/16930089",
+ "kind": "function",
+ "name": "_thenNoZoneRegistration",
+ "size": 253,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<_thenNoZoneRegistration.E>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "dynamic Function(_Future.T)"
+ },
+ {
+ "name": "onError",
+ "type": "[null|subclass=Closure]",
+ "declaredType": "Function"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_thenNoZoneRegistration$2: function(f, onError) {\n var result = new P._Future(0, $.Zone__current, null, [null]);\n this._addListener$1(new P._FutureListener(null, result, onError == null ? 1 : 3, f, onError));\n return result;\n}\n",
+ "type": "Future<_thenNoZoneRegistration.E> Function(dynamic Function(_Future.T),Function)",
+ "measurements": null
+ },
+ "18599313": {
+ "id": "function/18599313",
+ "kind": "function",
+ "name": "_addListener",
+ "size": 869,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/181809904"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "listener",
+ "type": "[exact=_FutureListener]",
+ "declaredType": "_FutureListener<dynamic,dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_addListener$1: function(listener) {\n var t1, source;\n t1 = this._state;\n if (t1 <= 1) {\n listener._nextListener = this._resultOrListeners;\n this._resultOrListeners = listener;\n } else {\n if (t1 === 2) {\n source = this._resultOrListeners;\n if (source.get$_state() < 4) {\n source._addListener$1(listener);\n return;\n }\n this._state = source._state;\n this._resultOrListeners = source._resultOrListeners;\n }\n t1 = this._zone;\n t1.toString;\n P._rootScheduleMicrotask(null, null, t1, new P._Future__addListener_closure(this, listener));\n }\n}\n",
+ "type": "void Function(_FutureListener<dynamic,dynamic>)",
+ "measurements": null
+ },
+ "21667157": {
+ "id": "function/21667157",
+ "kind": "function",
+ "name": "areAssignableV1",
+ "size": 631,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=JSArray]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=JSArray]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "allowShorter",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "areAssignableV1: function(s, t, allowShorter) {\n var t1, sLength, tLength, i, t2;\n t1 = t == null;\n if (t1 && s == null)\n return true;\n if (t1)\n return allowShorter;\n if (s == null)\n return false;\n sLength = s.length;\n tLength = t.length;\n if (allowShorter) {\n if (sLength < tLength)\n return false;\n } else if (sLength !== tLength)\n return false;\n for (i = 0; i < tLength; ++i) {\n t1 = s[i];\n t2 = t[i];\n if (!(H.isSubtypeV1(t1, t2) || H.isSubtypeV1(t2, t1)))\n return false;\n }\n return true;\n}\n",
+ "type": "bool Function(List<dynamic>,List<dynamic>,bool)",
+ "measurements": null
+ },
+ "22227107": {
+ "id": "function/22227107",
+ "kind": "function",
+ "name": "_setError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(Object,StackTrace)",
+ "measurements": null
+ },
+ "30570662": {
+ "id": "function/30570662",
+ "kind": "function",
+ "name": "_setTableEntry",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "void Function(dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "31139860": {
+ "id": "function/31139860",
+ "kind": "function",
+ "name": "length",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n return this._collection$_length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "38646490": {
+ "id": "function/38646490",
+ "kind": "function",
+ "name": "_setTableEntry",
+ "size": 83,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_setTableEntry$3: function(table, key, value) {\n table[key] = value;\n}\n",
+ "type": "void Function(dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "39412415": {
+ "id": "function/39412415",
+ "kind": "function",
+ "name": "call",
+ "size": 526,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/938184478",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "theError",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "theStackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$2: function(theError, theStackTrace) {\n var t1, t2;\n t1 = this._box_0;\n t2 = --t1.remaining;\n if (t1.values != null) {\n t1.values = null;\n if (t1.remaining === 0 || this.eagerError)\n this.result._completeError$2(theError, theStackTrace);\n else {\n t1.error = theError;\n t1.stackTrace = theStackTrace;\n }\n } else if (t2 === 0 && !this.eagerError)\n this.result._completeError$2(t1.error, t1.stackTrace);\n}\n",
+ "type": "Null Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "39768413": {
+ "id": "function/39768413",
+ "kind": "function",
+ "name": "handlesValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "51167109": {
+ "id": "function/51167109",
+ "kind": "function",
+ "name": "_error",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "AsyncError",
+ "inferredReturnType": "[null|exact=AsyncError]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 8,
+ "code": null,
+ "type": "AsyncError Function()",
+ "measurements": null
+ },
+ "53631526": {
+ "id": "function/53631526",
+ "kind": "function",
+ "name": "loadDeferredLibrary",
+ "size": 4011,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [
+ "closure/601101415",
+ "closure/624687097",
+ "closure/844800611",
+ "closure/965562379"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<Null>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "loadId",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "loadDeferredLibrary: function(loadId) {\n var _box_0, indexes, t1, uris, hashes, index2uri, index2hash, i, index, total, waitingForLoad, isHunkLoaded;\n _box_0 = {};\n indexes = init.deferredLibraryParts[loadId];\n if (indexes == null) {\n t1 = new P._Future(0, $.Zone__current, null, [P.Null]);\n t1._asyncComplete$1(null);\n return t1;\n }\n uris = [];\n hashes = [];\n index2uri = init.deferredPartUris;\n index2hash = init.deferredPartHashes;\n for (i = 0; i < indexes.length; ++i) {\n index = indexes[i];\n uris.push(index2uri[index]);\n hashes.push(index2hash[index]);\n }\n total = hashes.length;\n waitingForLoad = P.List_List$filled(total, true, false);\n _box_0.nextHunkToInitialize = 0;\n isHunkLoaded = init.isHunkLoaded;\n t1 = new H.loadDeferredLibrary_initializeSomeLoadedHunks(_box_0, total, waitingForLoad, uris, hashes, init.isHunkInitialized, isHunkLoaded, init.initializeLoadedHunk);\n return P.Future_wait(P.List_List$generate(total, new H.loadDeferredLibrary_loadAndInitialize(isHunkLoaded, hashes, waitingForLoad, uris, t1), true), null, false).then$1(new H.loadDeferredLibrary_closure(_box_0, t1, total, loadId));\n}\n",
+ "type": "Future<Null> Function(String)",
+ "measurements": null
+ },
+ "57158184": {
+ "id": "function/57158184",
+ "kind": "function",
+ "name": "inSameErrorZone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/185316425",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "otherZone",
+ "type": "[null|exact=_RootZone]",
+ "declaredType": "Zone"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "bool Function(Zone)",
+ "measurements": null
+ },
+ "63166902": {
+ "id": "function/63166902",
+ "kind": "function",
+ "name": "run",
+ "size": 152,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "run.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "run.R Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "run$1: function(f) {\n if ($.Zone__current === C.C__RootZone)\n return f.call$0();\n return P._rootRun(null, null, this, f);\n}\n",
+ "type": "run.R Function(run.R Function())",
+ "measurements": null
+ },
+ "64968119": {
+ "id": "function/64968119",
+ "kind": "function",
+ "name": "tryStringifyException",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|exact=JSString]",
+ "parameters": [
+ {
+ "name": "ex",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(dynamic)",
+ "measurements": null
+ },
+ "66015995": {
+ "id": "function/66015995",
+ "kind": "function",
+ "name": "toString",
+ "size": 102,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/70813553",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return P.IterableBase_iterableToShortString(this, \"(\", \")\");\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "67489885": {
+ "id": "function/67489885",
+ "kind": "function",
+ "name": "_scheduleImmediateJsOverride",
+ "size": 382,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [
+ "closure/231160067"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_AsyncRun__scheduleImmediateJsOverride: [function(callback) {\n self.scheduleImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateJsOverride_internalCallback(callback), 0));\n}, \"call$1\", \"async__AsyncRun__scheduleImmediateJsOverride$closure\", 4, 0, 3]\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "67701762": {
+ "id": "function/67701762",
+ "kind": "function",
+ "name": "_hasTimer",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "68051831": {
+ "id": "function/68051831",
+ "kind": "function",
+ "name": "handleError",
+ "size": 409,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "asyncError",
+ "type": "[null|exact=AsyncError]",
+ "declaredType": "AsyncError"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "handleError$1: function(asyncError) {\n var errorCallback, t1;\n errorCallback = this.errorCallback;\n t1 = this.result._zone;\n if (H.functionTypeTest(errorCallback, {func: 1, args: [P.Object, P.StackTrace]}))\n return t1.runBinary$3(errorCallback, asyncError.error, asyncError.stackTrace);\n else\n return t1.runUnary$2(errorCallback, asyncError.error);\n}\n",
+ "type": "dynamic Function(AsyncError)",
+ "measurements": null
+ },
+ "72077250": {
+ "id": "function/72077250",
+ "kind": "function",
+ "name": "toString",
+ "size": 92,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/410333734",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"DeferredLoadException: '\" + this._s + \"'\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "79175019": {
+ "id": "function/79175019",
+ "kind": "function",
+ "name": "_isWorker",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "80270395": {
+ "id": "function/80270395",
+ "kind": "function",
+ "name": "current",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "ListIterator.E",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$current: function() {\n return this.__internal$_current;\n}\n",
+ "type": "ListIterator.E Function()",
+ "measurements": null
+ },
+ "80736041": {
+ "id": "function/80736041",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 96,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return H.Primitives_objectHashCode(receiver);\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "81057679": {
+ "id": "function/81057679",
+ "kind": "function",
+ "name": "call",
+ "size": 69,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/310226650",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bindCallback.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n return this.$this.run$1(this.f);\n}\n",
+ "type": "bindCallback.R Function()",
+ "measurements": null
+ },
+ "82702408": {
+ "id": "function/82702408",
+ "kind": "function",
+ "name": "_startMicrotaskLoop",
+ "size": 415,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_startMicrotaskLoop: [function() {\n $._isInCallbackLoop = true;\n try {\n P._microtaskLoop();\n } finally {\n $._lastPriorityCallback = null;\n $._isInCallbackLoop = false;\n if ($._nextCallback != null)\n $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());\n }\n}, \"call$0\", \"async___startMicrotaskLoop$closure\", 0, 0, 1]\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "91425461": {
+ "id": "function/91425461",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 60,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/851867060",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[exact=JSUInt31]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return 0;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "93381370": {
+ "id": "function/93381370",
+ "kind": "function",
+ "name": "toString",
+ "size": 66,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/542248491",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"Stack Overflow\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Stack Overflow\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "94108092": {
+ "id": "function/94108092",
+ "kind": "function",
+ "name": "_Future",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 5,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "95599505": {
+ "id": "function/95599505",
+ "kind": "function",
+ "name": "handleWhenComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "96457955": {
+ "id": "function/96457955",
+ "kind": "function",
+ "name": "_completeWithValue",
+ "size": 222,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_Future.T"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_completeWithValue$1: function(value) {\n var listeners = this._removeListeners$0();\n this._state = 4;\n this._resultOrListeners = value;\n P._Future__propagateToListeners(this, listeners);\n}\n",
+ "type": "void Function(_Future.T)",
+ "measurements": null
+ },
+ "98156511": {
+ "id": "function/98156511",
+ "kind": "function",
+ "name": "contains",
+ "size": 534,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "contains$1: function(_, object) {\n var strings, nums;\n if (typeof object === \"string\" && object !== \"__proto__\") {\n strings = this._strings;\n if (strings == null)\n return false;\n return strings[object] != null;\n } else if (typeof object === \"number\" && (object & 0x3ffffff) === object) {\n nums = this._nums;\n if (nums == null)\n return false;\n return nums[object] != null;\n } else\n return this._contains$1(object);\n}\n",
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "99251871": {
+ "id": "function/99251871",
+ "kind": "function",
+ "name": "iterator",
+ "size": 172,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Iterator<_LinkedHashSet.E>",
+ "inferredReturnType": "[exact=_LinkedHashSetIterator]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 0,
+ "code": "get$iterator: function(_) {\n var t1 = new P._LinkedHashSetIterator(this, this._modifications, null, null);\n t1._cell = this._first;\n return t1;\n}\n",
+ "type": "Iterator<_LinkedHashSet.E> Function()",
+ "measurements": null
+ },
+ "99501118": {
+ "id": "function/99501118",
+ "kind": "function",
+ "name": "complete",
+ "size": 325,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/952584796",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "complete$1: [function(value) {\n var t1 = this.future;\n if (t1._state !== 0)\n throw H.wrapException(P.StateError$(\"Future already completed\"));\n t1._complete$1(value);\n}, function() {\n return this.complete$1(null);\n}, \"complete$0\", \"call$1\", \"call$0\", \"get$complete\", 0, 2, 15]\n",
+ "type": "void Function([dynamic])",
+ "measurements": null
+ },
+ "102471615": {
+ "id": "function/102471615",
+ "kind": "function",
+ "name": "complete",
+ "size": 208,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/714718140",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "complete$1: function(value) {\n var t1 = this.future;\n if (t1._state !== 0)\n throw H.wrapException(P.StateError$(\"Future already completed\"));\n t1._asyncComplete$1(value);\n}\n",
+ "type": "void Function([dynamic])",
+ "measurements": null
+ },
+ "108053021": {
+ "id": "function/108053021",
+ "kind": "function",
+ "name": "hasNoField",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "109394176": {
+ "id": "function/109394176",
+ "kind": "function",
+ "name": "jsonEncodeNative",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "114607430": {
+ "id": "function/114607430",
+ "kind": "function",
+ "name": "_getBucket",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<dynamic>",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "List<dynamic> Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "116203851": {
+ "id": "function/116203851",
+ "kind": "function",
+ "name": "toString",
+ "size": 114,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/8008562",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Deferred library \" + H.S(this.libraryName) + \" was not loaded.\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "116583875": {
+ "id": "function/116583875",
+ "kind": "function",
+ "name": "_asyncRethrow",
+ "size": 143,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "completer",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Completer<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncRethrow: function(object, completer) {\n completer.completeError$2(H.unwrapException(object), H.getTraceFromException(object));\n}\n",
+ "type": "dynamic Function(dynamic,Completer<dynamic>)",
+ "measurements": null
+ },
+ "116599339": {
+ "id": "function/116599339",
+ "kind": "function",
+ "name": "LinkedHashMap._empty",
+ "size": 126,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/614050497",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>",
+ "inferredReturnType": "[subclass=JsLinkedHashMap]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "LinkedHashMap_LinkedHashMap$_empty: function() {\n return new H.JsLinkedHashMap(0, null, null, null, null, null, 0);\n}\n",
+ "type": "LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V> Function()",
+ "measurements": null
+ },
+ "120153851": {
+ "id": "function/120153851",
+ "kind": "function",
+ "name": "_LinkedIdentityHashSet",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1059387371",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_LinkedIdentityHashSet]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "123959555": {
+ "id": "function/123959555",
+ "kind": "function",
+ "name": "JsLinkedHashMap",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JsLinkedHashMap]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "128684509": {
+ "id": "function/128684509",
+ "kind": "function",
+ "name": "LinkedHashSet",
+ "size": 156,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143510818",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "LinkedHashSet<LinkedHashSet.E>",
+ "inferredReturnType": "[subclass=_LinkedHashSet]",
+ "parameters": [
+ {
+ "name": "equals",
+ "type": "[null]",
+ "declaredType": "bool Function(LinkedHashSet.E,LinkedHashSet.E)"
+ },
+ {
+ "name": "hashCode",
+ "type": "[null]",
+ "declaredType": "int Function(LinkedHashSet.E)"
+ },
+ {
+ "name": "isValidKey",
+ "type": "[null]",
+ "declaredType": "bool Function(dynamic)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "LinkedHashSet_LinkedHashSet: function(equals, hashCode, isValidKey, $E) {\n return new P._LinkedHashSet(0, null, null, null, null, null, 0, [$E]);\n}\n",
+ "type": "LinkedHashSet<LinkedHashSet.E> Function({bool Function(LinkedHashSet.E,LinkedHashSet.E) equals,int Function(LinkedHashSet.E) hashCode,bool Function(dynamic) isValidKey})",
+ "measurements": null
+ },
+ "130041650": {
+ "id": "function/130041650",
+ "kind": "function",
+ "name": "toString",
+ "size": 78,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/948502579",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Bad state: \" + this.message;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "130131853": {
+ "id": "function/130131853",
+ "kind": "function",
+ "name": "_contains",
+ "size": 212,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_contains$1: function(object) {\n var rest = this._rest;\n if (rest == null)\n return false;\n return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;\n}\n",
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "136972596": {
+ "id": "function/136972596",
+ "kind": "function",
+ "name": "isFunctionSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "139456351": {
+ "id": "function/139456351",
+ "kind": "function",
+ "name": "call",
+ "size": 297,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/637664934",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "k",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "v",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$2: function(k, v) {\n var t1, t2;\n t1 = this._box_0;\n if (!t1.first)\n this.result._contents += \", \";\n t1.first = false;\n t1 = this.result;\n t2 = t1._contents += H.S(k);\n t1._contents = t2 + \": \";\n t1._contents += H.S(v);\n}\n",
+ "type": "Null Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "143567266": {
+ "id": "function/143567266",
+ "kind": "function",
+ "name": "StaticClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/466061502",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=StaticClosure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "143741280": {
+ "id": "function/143741280",
+ "kind": "function",
+ "name": "toString",
+ "size": 214,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/790616034",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1 = this._method;\n if (t1 == null)\n return \"NullError: \" + H.S(this._message);\n return \"NullError: method not found: '\" + H.S(t1) + \"' on null\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "144469777": {
+ "id": "function/144469777",
+ "kind": "function",
+ "name": "length",
+ "size": 308,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "newLength",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "set$length: function(receiver, newLength) {\n if (!!receiver.fixed$length)\n H.throwExpression(P.UnsupportedError$(\"set length\"));\n if (newLength < 0)\n throw H.wrapException(P.RangeError$range(newLength, 0, null, \"newLength\", null));\n receiver.length = newLength;\n}\n",
+ "type": "void Function(int)",
+ "measurements": null
+ },
+ "144469778": {
+ "id": "function/144469778",
+ "kind": "function",
+ "name": "length",
+ "size": 72,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSUInt32]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$length: function(receiver) {\n return receiver.length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "148863126": {
+ "id": "function/148863126",
+ "kind": "function",
+ "name": "NullError",
+ "size": 130,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/790616034",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=NullError]",
+ "parameters": [
+ {
+ "name": "_message",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "match",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "NullError$: function(_message, match) {\n return new H.NullError(_message, match == null ? null : match.method);\n}\n",
+ "type": "dynamic Function(String,dynamic)",
+ "measurements": null
+ },
+ "150523169": {
+ "id": "function/150523169",
+ "kind": "function",
+ "name": "_startIndex",
+ "size": 221,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$_startIndex: function() {\n var $length, t1;\n $length = J.get$length$as(this.__internal$_iterable);\n t1 = this._start;\n if (t1 > $length)\n return $length;\n return t1;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "150705145": {
+ "id": "function/150705145",
+ "kind": "function",
+ "name": "toString",
+ "size": 222,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/93352366",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1 = this.variableName;\n return t1 == null ? \"Reading static variable during its initialization\" : \"Reading static variable '\" + H.S(t1) + \"' during its initialization\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "160969748": {
+ "id": "function/160969748",
+ "kind": "function",
+ "name": "_rootRunUnary",
+ "size": 323,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_rootRunUnary.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "self",
+ "type": "[null]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "parent",
+ "type": "[null]",
+ "declaredType": "ZoneDelegate"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "f",
+ "type": "[null|subclass=Closure]",
+ "declaredType": "_rootRunUnary.R Function(_rootRunUnary.T)"
+ },
+ {
+ "name": "arg",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_rootRunUnary.T"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_rootRunUnary: function($self, $parent, zone, f, arg) {\n var old, t1;\n t1 = $.Zone__current;\n if (t1 === zone)\n return f.call$1(arg);\n $.Zone__current = zone;\n old = t1;\n try {\n t1 = f.call$1(arg);\n return t1;\n } finally {\n $.Zone__current = old;\n }\n}\n",
+ "type": "_rootRunUnary.R Function(Zone,ZoneDelegate,Zone,_rootRunUnary.R Function(_rootRunUnary.T),_rootRunUnary.T)",
+ "measurements": null
+ },
+ "162825675": {
+ "id": "function/162825675",
+ "kind": "function",
+ "name": "join",
+ "size": 383,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "separator",
+ "type": "Value([exact=JSString], value: \"\n\")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "join$1: function(receiver, separator) {\n var t1, list, i, t2;\n t1 = receiver.length;\n list = new Array(t1);\n list.fixed$length = Array;\n for (i = 0; i < receiver.length; ++i) {\n t2 = H.S(receiver[i]);\n if (i >= t1)\n return H.ioore(list, i);\n list[i] = t2;\n }\n return list.join(separator);\n}\n",
+ "type": "String Function([String])",
+ "measurements": null
+ },
+ "162872908": {
+ "id": "function/162872908",
+ "kind": "function",
+ "name": "_SyncCompleter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/952584796",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_SyncCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "163884478": {
+ "id": "function/163884478",
+ "kind": "function",
+ "name": "_scheduleImmediateWithSetImmediate",
+ "size": 395,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [
+ "closure/817717319"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_AsyncRun__scheduleImmediateWithSetImmediate: [function(callback) {\n self.setImmediate(H.convertDartClosureToJS(new P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(callback), 0));\n}, \"call$1\", \"async__AsyncRun__scheduleImmediateWithSetImmediate$closure\", 4, 0, 3]\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "163889622": {
+ "id": "function/163889622",
+ "kind": "function",
+ "name": "wrapException",
+ "size": 402,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "ex",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "wrapException: function(ex) {\n var wrapper;\n if (ex == null)\n ex = new P.NullThrownError();\n wrapper = new Error();\n wrapper.dartException = ex;\n if (\"defineProperty\" in Object) {\n Object.defineProperty(wrapper, \"message\", {get: H.toStringWrapper});\n wrapper.name = \"\";\n } else\n wrapper.toString = H.toStringWrapper;\n return wrapper;\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "164775669": {
+ "id": "function/164775669",
+ "kind": "function",
+ "name": "registerCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "registerCallback.R Function()",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "registerCallback.R Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "registerCallback.R Function() Function(registerCallback.R Function())",
+ "measurements": null
+ },
+ "165003912": {
+ "id": "function/165003912",
+ "kind": "function",
+ "name": "_initializeScheduleImmediate",
+ "size": 1331,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [
+ "closure/607767883",
+ "closure/913475889"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Function",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_AsyncRun__initializeScheduleImmediate: function() {\n var t1, div, span;\n t1 = {};\n if (self.scheduleImmediate != null)\n return P.async__AsyncRun__scheduleImmediateJsOverride$closure();\n if (self.MutationObserver != null && self.document != null) {\n div = self.document.createElement(\"div\");\n span = self.document.createElement(\"span\");\n t1.storedCallback = null;\n new self.MutationObserver(H.convertDartClosureToJS(new P._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});\n return new P._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);\n } else if (self.setImmediate != null)\n return P.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();\n return P.async__AsyncRun__scheduleImmediateWithTimer$closure();\n}\n",
+ "type": "Function Function()",
+ "measurements": null
+ },
+ "167405219": {
+ "id": "function/167405219",
+ "kind": "function",
+ "name": "toString",
+ "size": 107,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/627219877",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Instance of '\" + H.Primitives_objectTypeName(this) + \"'\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "171287120": {
+ "id": "function/171287120",
+ "kind": "function",
+ "name": "_onError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Function",
+ "inferredReturnType": "[null|subclass=Closure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Function Function()",
+ "measurements": null
+ },
+ "173469993": {
+ "id": "function/173469993",
+ "kind": "function",
+ "name": "toString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/481500691",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "175997763": {
+ "id": "function/175997763",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 85,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/245082925",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return receiver ? 519018 : 218159;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "176570718": {
+ "id": "function/176570718",
+ "kind": "function",
+ "name": "toString",
+ "size": 101,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/758572498",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return P.IterableBase_iterableToFullString(this, \"{\", \"}\");\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "176842663": {
+ "id": "function/176842663",
+ "kind": "function",
+ "name": "moveNext",
+ "size": 480,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 0,
+ "code": "moveNext$0: function() {\n var t1 = this._set;\n if (this._modifications !== t1._modifications)\n throw H.wrapException(P.ConcurrentModificationError$(t1));\n else {\n t1 = this._cell;\n if (t1 == null) {\n this._collection$_current = null;\n return false;\n } else {\n this._collection$_current = t1._element;\n this._cell = t1._next;\n return true;\n }\n }\n}\n",
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "179653294": {
+ "id": "function/179653294",
+ "kind": "function",
+ "name": "DeferredNotLoadedError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/8008562",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=DeferredNotLoadedError]",
+ "parameters": [
+ {
+ "name": "libraryName",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "186999466": {
+ "id": "function/186999466",
+ "kind": "function",
+ "name": "length",
+ "size": 72,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$length: function(receiver) {\n return receiver.length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "188708191": {
+ "id": "function/188708191",
+ "kind": "function",
+ "name": "_StreamIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1040168844",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_StreamIterator]",
+ "parameters": [
+ {
+ "name": "stream",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Stream<_StreamIterator.T>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(Stream<_StreamIterator.T>)",
+ "measurements": null
+ },
+ "193787732": {
+ "id": "function/193787732",
+ "kind": "function",
+ "name": "_getRuntimeTypeAsStringV1",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "rti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "onTypeVariable",
+ "type": "[null]",
+ "declaredType": "String Function(int)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(dynamic,{String Function(int) onTypeVariable})",
+ "measurements": null
+ },
+ "199851072": {
+ "id": "function/199851072",
+ "kind": "function",
+ "name": "SubListIterable",
+ "size": 232,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=SubListIterable]",
+ "parameters": [
+ {
+ "name": "_iterable",
+ "type": "Union([exact=SubListIterable], [subclass=JSArray])",
+ "declaredType": "Iterable<SubListIterable.E>"
+ },
+ {
+ "name": "_start",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_endOrLength",
+ "type": "[null]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "SubListIterable$: function(_iterable, _start, _endOrLength) {\n var t1 = new H.SubListIterable(_iterable, _start, _endOrLength);\n t1.SubListIterable$3(_iterable, _start, _endOrLength);\n return t1;\n}\n",
+ "type": "dynamic Function(Iterable<SubListIterable.E>,int,int)",
+ "measurements": null
+ },
+ "203738274": {
+ "id": "function/203738274",
+ "kind": "function",
+ "name": "extractKeys",
+ "size": 114,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/527944179",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<dynamic>",
+ "inferredReturnType": "[exact=JSFixedArray]",
+ "parameters": [
+ {
+ "name": "victim",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "extractKeys: function(victim) {\n return J.JSArray_JSArray$markFixed(victim ? Object.keys(victim) : []);\n}\n",
+ "type": "List<dynamic> Function(dynamic)",
+ "measurements": null
+ },
+ "204916897": {
+ "id": "function/204916897",
+ "kind": "function",
+ "name": "_codeUnitAt",
+ "size": 203,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[exact=JSUInt31]",
+ "parameters": [
+ {
+ "name": "index",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_codeUnitAt$1: function(receiver, index) {\n if (index >= receiver.length)\n throw H.wrapException(H.diagnoseIndexError(receiver, index));\n return receiver.charCodeAt(index);\n}\n",
+ "type": "int Function(int)",
+ "measurements": null
+ },
+ "205154197": {
+ "id": "function/205154197",
+ "kind": "function",
+ "name": "_registerErrorHandler",
+ "size": 498,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Function",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "errorHandler",
+ "type": "[subclass=Closure]",
+ "declaredType": "Function"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes anything)",
+ "inlinedCount": 0,
+ "code": "_registerErrorHandler: function(errorHandler, zone) {\n if (H.functionTypeTest(errorHandler, {func: 1, args: [P.Object, P.StackTrace]}))\n return zone.registerBinaryCallback$1(errorHandler);\n if (H.functionTypeTest(errorHandler, {func: 1, args: [P.Object]}))\n return errorHandler;\n throw H.wrapException(P.ArgumentError$value(errorHandler, \"onError\", \"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a a valid result\"));\n}\n",
+ "type": "Function Function(Function,Zone)",
+ "measurements": null
+ },
+ "208283907": {
+ "id": "function/208283907",
+ "kind": "function",
+ "name": "UnsupportedError",
+ "size": 98,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/991730135",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=UnsupportedError]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "UnsupportedError$: function(message) {\n return new P.UnsupportedError(message);\n}\n",
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "210296716": {
+ "id": "function/210296716",
+ "kind": "function",
+ "name": "StringBuffer",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=StringBuffer]",
+ "parameters": [
+ {
+ "name": "content",
+ "type": "[exact=JSString]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes anything)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "dynamic Function([Object])",
+ "measurements": null
+ },
+ "210974499": {
+ "id": "function/210974499",
+ "kind": "function",
+ "name": "List.filled",
+ "size": 268,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/959990109",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "List<List.E>",
+ "inferredReturnType": "Union([exact=JSExtendableArray], [exact=JSFixedArray])",
+ "parameters": [
+ {
+ "name": "length",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "fill",
+ "type": "Value([exact=JSBool], value: true)",
+ "declaredType": "List.E"
+ },
+ {
+ "name": "growable",
+ "type": "Value([exact=JSBool], value: false)",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "List_List$filled: function($length, fill, growable) {\n var result, t1, i;\n result = J.JSArray_JSArray$fixed($length);\n if ($length !== 0 && true)\n for (t1 = result.length, i = 0; i < t1; ++i)\n result[i] = true;\n return result;\n}\n",
+ "type": "List<List.E> Function(int,List.E,{bool growable})",
+ "measurements": null
+ },
+ "219348673": {
+ "id": "function/219348673",
+ "kind": "function",
+ "name": "provokeCallErrorOnNull",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "221934998": {
+ "id": "function/221934998",
+ "kind": "function",
+ "name": "+",
+ "size": 369,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<JSArray.E>",
+ "inferredReturnType": "Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "List<JSArray.E>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "$add: function(receiver, other) {\n var totalLength, t1;\n totalLength = C.JSInt_methods.$add(receiver.length, C.JSInt_methods.get$length(other));\n t1 = [];\n this.set$length(t1, totalLength);\n this.setRange$3(t1, 0, receiver.length, receiver);\n this.setRange$3(t1, receiver.length, totalLength, other);\n return t1;\n}\n",
+ "type": "List<JSArray.E> Function(List<JSArray.E>)",
+ "measurements": null
+ },
+ "222294695": {
+ "id": "function/222294695",
+ "kind": "function",
+ "name": "ReflectionInfo.internal",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ReflectionInfo]",
+ "parameters": [
+ {
+ "name": "jsFunction",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "data",
+ "type": "[exact=JSFixedArray]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "isAccessor",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ },
+ {
+ "name": "requiredParameterCount",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "optionalParameterCount",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "areOptionalParametersNamed",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ },
+ {
+ "name": "functionType",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,List<dynamic>,bool,int,int,bool,dynamic)",
+ "measurements": null
+ },
+ "225159691": {
+ "id": "function/225159691",
+ "kind": "function",
+ "name": "checkNull",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "Value([exact=JSString], value: \"/\")",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "Value([exact=JSString], value: \"/\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "229841336": {
+ "id": "function/229841336",
+ "kind": "function",
+ "name": "provokePropertyErrorOn",
+ "size": 255,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "expression",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "TypeErrorDecoder_provokePropertyErrorOn: function(expression) {\n return function($expr$) {\n try {\n $expr$.$method$;\n } catch (e) {\n return e.message;\n }\n }(expression);\n}\n",
+ "type": "String Function(dynamic)",
+ "measurements": null
+ },
+ "230858033": {
+ "id": "function/230858033",
+ "kind": "function",
+ "name": "runtimeTypeToStringV1",
+ "size": 736,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "rti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "onTypeVariable",
+ "type": "[null]",
+ "declaredType": "String Function(int)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "runtimeTypeToStringV1: function(rti, onTypeVariable) {\n var typedefInfo;\n if (rti == null)\n return \"dynamic\";\n if (typeof rti === \"object\" && rti !== null && rti.constructor === Array)\n return rti[0].builtin$cls + H.joinArgumentsV1(rti, 1, onTypeVariable);\n if (typeof rti == \"function\")\n return rti.builtin$cls;\n if (typeof rti === \"number\" && Math.floor(rti) === rti)\n return H.S(rti);\n if (typeof rti.func != \"undefined\") {\n typedefInfo = rti.typedef;\n if (typedefInfo != null)\n return H.runtimeTypeToStringV1(typedefInfo, onTypeVariable);\n return H._functionRtiToStringV1(rti, onTypeVariable);\n }\n return \"unknown-reified-type\";\n}\n",
+ "type": "String Function(dynamic,{String Function(int) onTypeVariable})",
+ "measurements": null
+ },
+ "231669663": {
+ "id": "function/231669663",
+ "kind": "function",
+ "name": "call",
+ "size": 470,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/30023746",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var e, s, t1, exception;\n try {\n t1 = this.listener;\n this._box_0.listenerValueOrError = t1.result._zone.runUnary$2(t1.callback, this.sourceResult);\n } catch (exception) {\n e = H.unwrapException(exception);\n s = H.getTraceFromException(exception);\n t1 = this._box_0;\n t1.listenerValueOrError = new P.AsyncError(e, s);\n t1.listenerHasError = true;\n }\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "243489700": {
+ "id": "function/243489700",
+ "kind": "function",
+ "name": "checkValidRange",
+ "size": 379,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSUInt32]",
+ "parameters": [
+ {
+ "name": "start",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "end",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "length",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "startName",
+ "type": "[null]",
+ "declaredType": "String"
+ },
+ {
+ "name": "endName",
+ "type": "[null]",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "RangeError_checkValidRange: function(start, end, $length, startName, endName, message) {\n if (start > $length)\n throw H.wrapException(P.RangeError$range(start, 0, $length, \"start\", message));\n if (start > end || end > $length)\n throw H.wrapException(P.RangeError$range(end, start, $length, \"end\", message));\n return end;\n}\n",
+ "type": "int Function(int,int,int,[String,String,String])",
+ "measurements": null
+ },
+ "245651187": {
+ "id": "function/245651187",
+ "kind": "function",
+ "name": "_isNumericKey",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "248499885": {
+ "id": "function/248499885",
+ "kind": "function",
+ "name": "call",
+ "size": 92,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/741043867",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.$this._completer.completeError$2(this.e, this.st);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "248883787": {
+ "id": "function/248883787",
+ "kind": "function",
+ "name": "call",
+ "size": 240,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/601101415",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "_",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(_) {\n var t1, t2;\n t1 = this.waitingForLoad;\n t2 = this.i;\n if (t2 >= t1.length)\n return H.ioore(t1, t2);\n t1[t2] = false;\n this.initializeSomeLoadedHunks.call$0();\n}\n",
+ "type": "Null Function(Object)",
+ "measurements": null
+ },
+ "249771766": {
+ "id": "function/249771766",
+ "kind": "function",
+ "name": "call",
+ "size": 138,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/637416128",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var t1 = this.$this;\n t1._handle = null;\n t1._tick = 1;\n this.callback.call$0();\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "253794122": {
+ "id": "function/253794122",
+ "kind": "function",
+ "name": "fromTearOff",
+ "size": 2845,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "functions",
+ "type": "[exact=JSFixedArray]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "reflectionInfo",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "isStatic",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ },
+ {
+ "name": "jsArguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "propertyName",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Closure_fromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, propertyName) {\n var $function, callName, functionType, $prototype, $constructor, t1, isIntercepted, trampoline, signatureFunction, getReceiver, i, stub, stubCallName, t2;\n $function = functions[0];\n callName = $function.$callName;\n if (!!J.getInterceptor(reflectionInfo).$isList) {\n $function.$reflectionInfo = reflectionInfo;\n functionType = H.ReflectionInfo_ReflectionInfo($function).functionType;\n } else\n functionType = reflectionInfo;\n $prototype = isStatic ? Object.create(new H.StaticClosure().constructor.prototype) : Object.create(new H.BoundClosure(null, null, null, null).constructor.prototype);\n $prototype.$initialize = $prototype.constructor;\n if (isStatic)\n $constructor = function() {\n this.$initialize();\n };\n else {\n t1 = $.Closure_functionCounter;\n $.Closure_functionCounter = J.$add$ans(t1, 1);\n $constructor = new Function(\"a,b,c,d\" + t1, \"this.$initialize(a,b,c,d\" + t1 + \")\");\n }\n $prototype.constructor = $constructor;\n $constructor.prototype = $prototype;\n if (!isStatic) {\n isIntercepted = jsArguments.length == 1 && true;\n trampoline = H.Closure_forwardCallTo(receiver, $function, isIntercepted);\n trampoline.$reflectionInfo = reflectionInfo;\n } else {\n $prototype.$static_name = propertyName;\n trampoline = $function;\n isIntercepted = false;\n }\n if (typeof functionType == \"number\")\n signatureFunction = function(getType, t) {\n return function() {\n return getType(t);\n };\n }(H.getType, functionType);\n else if (typeof functionType == \"function\")\n if (isStatic)\n signatureFunction = functionType;\n else {\n getReceiver = isIntercepted ? H.BoundClosure_receiverOf : H.BoundClosure_selfOf;\n signatureFunction = function(f, r) {\n return function() {\n return f.apply({$receiver: r(this)}, arguments);\n };\n }(functionType, getReceiver);\n }\n else\n throw H.wrapException(\"Error in reflectionInfo.\");\n $prototype.$signature = signatureFunction;\n $prototype[callName] = trampoline;\n for (t1 = functions.length, i = 1; i < t1; ++i) {\n stub = functions[i];\n stubCallName = stub.$callName;\n if (stubCallName != null) {\n t2 = isStatic ? stub : H.Closure_forwardCallTo(receiver, stub, isIntercepted);\n $prototype[stubCallName] = t2;\n }\n }\n $prototype[\"call*\"] = trampoline;\n $prototype.$requiredArgCount = $function.$requiredArgCount;\n $prototype.$defaultValues = $function.$defaultValues;\n return $constructor;\n}\n",
+ "type": "dynamic Function(dynamic,List<dynamic>,dynamic,bool,dynamic,String)",
+ "measurements": null
+ },
+ "257728434": {
+ "id": "function/257728434",
+ "kind": "function",
+ "name": "isDartFunctionTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "259223906": {
+ "id": "function/259223906",
+ "kind": "function",
+ "name": "ExceptionAndStackTrace",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/388380492",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ExceptionAndStackTrace]",
+ "parameters": [
+ {
+ "name": "dartException",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,StackTrace)",
+ "measurements": null
+ },
+ "262026503": {
+ "id": "function/262026503",
+ "kind": "function",
+ "name": "_rootRun",
+ "size": 307,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_rootRun.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "self",
+ "type": "[null]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "parent",
+ "type": "[null]",
+ "declaredType": "ZoneDelegate"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "_rootRun.R Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_rootRun: function($self, $parent, zone, f) {\n var old, t1;\n t1 = $.Zone__current;\n if (t1 === zone)\n return f.call$0();\n $.Zone__current = zone;\n old = t1;\n try {\n t1 = f.call$0();\n return t1;\n } finally {\n $.Zone__current = old;\n }\n}\n",
+ "type": "_rootRun.R Function(Zone,ZoneDelegate,Zone,_rootRun.R Function())",
+ "measurements": null
+ },
+ "263363184": {
+ "id": "function/263363184",
+ "kind": "function",
+ "name": "_asyncCompleteError",
+ "size": 420,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/411607690"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncCompleteError$2: function(error, stackTrace) {\n var t1;\n this._state = 1;\n t1 = this._zone;\n t1.toString;\n P._rootScheduleMicrotask(null, null, t1, new P._Future__asyncCompleteError_closure(this, error, stackTrace));\n}\n",
+ "type": "void Function(dynamic,StackTrace)",
+ "measurements": null
+ },
+ "263798810": {
+ "id": "function/263798810",
+ "kind": "function",
+ "name": "convertDartClosureToJS",
+ "size": 412,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "closure",
+ "type": "[subclass=Closure]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arity",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "convertDartClosureToJS: function(closure, arity) {\n var $function = closure.$identity;\n if (!!$function)\n return $function;\n $function = function(closure, arity, invoke) {\n return function(a1, a2, a3, a4) {\n return invoke(closure, arity, a1, a2, a3, a4);\n };\n }(closure, arity, H.invokeClosure);\n closure.$identity = $function;\n return $function;\n}\n",
+ "type": "dynamic Function(dynamic,int)",
+ "measurements": null
+ },
+ "264370095": {
+ "id": "function/264370095",
+ "kind": "function",
+ "name": "rawRtiToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "rti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "265638794": {
+ "id": "function/265638794",
+ "kind": "function",
+ "name": "unwrapException",
+ "size": 4652,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [
+ "closure/771507318"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "ex",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "unwrapException: function(ex) {\n var t1, message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, t2;\n t1 = new H.unwrapException_saveStackTrace(ex);\n if (ex == null)\n return;\n if (ex instanceof H.ExceptionAndStackTrace)\n return t1.call$1(ex.dartException);\n if (typeof ex !== \"object\")\n return ex;\n if (\"dartException\" in ex)\n return t1.call$1(ex.dartException);\n else 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 ((C.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)\n switch (ieErrorCode) {\n case 438:\n return t1.call$1(H.JsNoSuchMethodError$(H.S(message) + \" (Error \" + ieErrorCode + \")\", null));\n case 445:\n case 5007:\n return t1.call$1(H.NullError$(H.S(message) + \" (Error \" + ieErrorCode + \")\", null));\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 t1.call$1(H.JsNoSuchMethodError$(message, match));\n else {\n match = notClosure.matchTypeError$1(message);\n if (match != null) {\n match.method = \"call\";\n return t1.call$1(H.JsNoSuchMethodError$(message, match));\n } else {\n match = nullCall.matchTypeError$1(message);\n if (match == null) {\n match = nullLiteralCall.matchTypeError$1(message);\n if (match == null) {\n match = undefCall.matchTypeError$1(message);\n if (match == null) {\n match = undefLiteralCall.matchTypeError$1(message);\n if (match == null) {\n match = nullProperty.matchTypeError$1(message);\n if (match == null) {\n match = nullLiteralCall.matchTypeError$1(message);\n if (match == null) {\n match = undefProperty.matchTypeError$1(message);\n if (match == null) {\n match = undefLiteralProperty.matchTypeError$1(message);\n t2 = match != null;\n } else\n t2 = true;\n } else\n t2 = true;\n } else\n t2 = true;\n } else\n t2 = true;\n } else\n t2 = true;\n } else\n t2 = true;\n } else\n t2 = true;\n if (t2)\n return t1.call$1(H.NullError$(message, match));\n }\n }\n return t1.call$1(new H.UnknownJsTypeError(typeof message === \"string\" ? message : \"\"));\n }\n if (ex instanceof RangeError) {\n if (typeof message === \"string\" && message.indexOf(\"call stack\") !== -1)\n return new P.StackOverflowError();\n message = function(ex) {\n try {\n return String(ex);\n } catch (e) {\n }\n return null;\n }(ex);\n return t1.call$1(new P.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 P.StackOverflowError();\n return ex;\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "268773900": {
+ "id": "function/268773900",
+ "kind": "function",
+ "name": "getIndex",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "array",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "index",
+ "type": "[null|subclass=Object]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 14,
+ "code": null,
+ "type": "dynamic Function(dynamic,int)",
+ "measurements": null
+ },
+ "271556856": {
+ "id": "function/271556856",
+ "kind": "function",
+ "name": "StateError",
+ "size": 86,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/948502579",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=StateError]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "StateError$: function(message) {\n return new P.StateError(message);\n}\n",
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "271674536": {
+ "id": "function/271674536",
+ "kind": "function",
+ "name": "_propagateToListeners",
+ "size": 7272,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/30023746",
+ "closure/69029087",
+ "closure/830531955",
+ "closure/963665986"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "source",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ },
+ {
+ "name": "listeners",
+ "type": "[null|exact=_FutureListener]",
+ "declaredType": "_FutureListener<dynamic,dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_Future__propagateToListeners: function(source, listeners) {\n var _box_1, t1, _box_0, hasError, asyncError, t2, t3, listeners0, sourceResult, zone, t4, oldZone, current, result;\n _box_1 = {};\n _box_1.source = source;\n for (t1 = source; true;) {\n _box_0 = {};\n hasError = t1._state === 8;\n if (listeners == null) {\n if (hasError) {\n asyncError = t1._resultOrListeners;\n t1 = t1._zone;\n t2 = asyncError.get$error();\n t3 = asyncError.stackTrace;\n t1.toString;\n P._rootHandleUncaughtError(null, null, t1, t2, t3);\n }\n return;\n }\n for (; listeners0 = listeners._nextListener, listeners0 != null; listeners = listeners0) {\n listeners._nextListener = null;\n P._Future__propagateToListeners(_box_1.source, listeners);\n }\n t1 = _box_1.source;\n sourceResult = t1._resultOrListeners;\n _box_0.listenerHasError = hasError;\n _box_0.listenerValueOrError = sourceResult;\n t2 = !hasError;\n if (t2) {\n t3 = listeners.state;\n t3 = (t3 & 1) !== 0 || t3 === 8;\n } else\n t3 = true;\n if (t3) {\n t3 = listeners.result;\n zone = t3._zone;\n if (hasError) {\n t4 = t1._zone;\n t4.toString;\n t4 = t4 == null ? zone == null : t4 === zone;\n if (!t4)\n zone.toString;\n else\n t4 = true;\n t4 = !t4;\n } else\n t4 = false;\n if (t4) {\n t1 = t1._zone;\n t2 = sourceResult.get$error();\n t3 = sourceResult.stackTrace;\n t1.toString;\n P._rootHandleUncaughtError(null, null, t1, t2, t3);\n return;\n }\n oldZone = $.Zone__current;\n if (oldZone == null ? zone != null : oldZone !== zone)\n $.Zone__current = zone;\n else\n oldZone = null;\n t1 = listeners.state;\n if (t1 === 8)\n new P._Future__propagateToListeners_handleWhenCompleteCallback(_box_1, _box_0, listeners, hasError).call$0();\n else if (t2) {\n if ((t1 & 1) !== 0)\n new P._Future__propagateToListeners_handleValueCallback(_box_0, listeners, sourceResult).call$0();\n } else if ((t1 & 2) !== 0)\n new P._Future__propagateToListeners_handleError(_box_1, _box_0, listeners).call$0();\n if (oldZone != null)\n $.Zone__current = oldZone;\n t1 = _box_0.listenerValueOrError;\n if (!!J.getInterceptor(t1).$isFuture) {\n if (t1._state >= 4) {\n current = t3._resultOrListeners;\n t3._resultOrListeners = null;\n listeners = t3._reverseListeners$1(current);\n t3._state = t1._state;\n t3._resultOrListeners = t1._resultOrListeners;\n _box_1.source = t1;\n continue;\n } else\n P._Future__chainCoreFuture(t1, t3);\n return;\n }\n }\n result = listeners.result;\n current = result._resultOrListeners;\n result._resultOrListeners = null;\n listeners = result._reverseListeners$1(current);\n t1 = _box_0.listenerHasError;\n t2 = _box_0.listenerValueOrError;\n if (!t1) {\n result._state = 4;\n result._resultOrListeners = t2;\n } else {\n result._state = 8;\n result._resultOrListeners = t2;\n }\n _box_1.source = result;\n t1 = result;\n }\n}\n",
+ "type": "void Function(_Future<dynamic>,_FutureListener<dynamic,dynamic>)",
+ "measurements": null
+ },
+ "271854590": {
+ "id": "function/271854590",
+ "kind": "function",
+ "name": "_asyncReturn",
+ "size": 85,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "completer",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Completer<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncReturn: function(object, completer) {\n completer.complete$1(object);\n}\n",
+ "type": "dynamic Function(dynamic,Completer<dynamic>)",
+ "measurements": null
+ },
+ "272589495": {
+ "id": "function/272589495",
+ "kind": "function",
+ "name": "current",
+ "size": 381,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/347664883",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "StackTrace",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "StackTrace_current: function() {\n var stackTrace, exception;\n if ($.$get$_hasErrorStackProperty() === true)\n return H.getTraceFromException(new Error());\n try {\n throw H.wrapException(\"\");\n } catch (exception) {\n H.unwrapException(exception);\n stackTrace = H.getTraceFromException(exception);\n return stackTrace;\n }\n}\n",
+ "type": "StackTrace Function()",
+ "measurements": null
+ },
+ "272627576": {
+ "id": "function/272627576",
+ "kind": "function",
+ "name": "_StackTrace",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/518228506",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_StackTrace]",
+ "parameters": [
+ {
+ "name": "_exception",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "273024378": {
+ "id": "function/273024378",
+ "kind": "function",
+ "name": "forwardCallTo",
+ "size": 1632,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "isIntercepted",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Closure_forwardCallTo: function(receiver, $function, isIntercepted) {\n var stubName, arity, lookedUpFunction, t1, t2, selfName, $arguments;\n if (isIntercepted)\n return H.Closure_forwardInterceptedCallTo(receiver, $function);\n stubName = $function.$stubName;\n arity = $function.length;\n lookedUpFunction = receiver[stubName];\n t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;\n t2 = !t1 || arity >= 27;\n if (t2)\n return H.Closure_cspForwardCall(arity, !t1, stubName, $function);\n if (arity === 0) {\n t1 = $.Closure_functionCounter;\n $.Closure_functionCounter = J.$add$ans(t1, 1);\n selfName = \"self\" + H.S(t1);\n t1 = \"return function(){var \" + selfName + \" = this.\";\n t2 = $.BoundClosure_selfFieldNameCache;\n if (t2 == null) {\n t2 = H.BoundClosure_computeFieldNamed(\"self\");\n $.BoundClosure_selfFieldNameCache = t2;\n }\n return new Function(t1 + H.S(t2) + \";return \" + selfName + \".\" + H.S(stubName) + \"();}\")();\n }\n $arguments = \"abcdefghijklmnopqrstuvwxyz\".split(\"\").splice(0, arity).join(\",\");\n t1 = $.Closure_functionCounter;\n $.Closure_functionCounter = J.$add$ans(t1, 1);\n $arguments += H.S(t1);\n t1 = \"return function(\" + $arguments + \"){return this.\";\n t2 = $.BoundClosure_selfFieldNameCache;\n if (t2 == null) {\n t2 = H.BoundClosure_computeFieldNamed(\"self\");\n $.BoundClosure_selfFieldNameCache = t2;\n }\n return new Function(t1 + H.S(t2) + \".\" + H.S(stubName) + \"(\" + $arguments + \");}\")();\n}\n",
+ "type": "dynamic Function(dynamic,dynamic,bool)",
+ "measurements": null
+ },
+ "275271990": {
+ "id": "function/275271990",
+ "kind": "function",
+ "name": "_errorName",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/175705485",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"RangeError\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$_errorName: function() {\n return \"RangeError\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "275681184": {
+ "id": "function/275681184",
+ "kind": "function",
+ "name": "getType",
+ "size": 64,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "index",
+ "type": "[null|subclass=Object]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 1,
+ "code": "getType: function(index) {\n return init.types[index];\n}\n",
+ "type": "dynamic Function(int)",
+ "measurements": null
+ },
+ "275957193": {
+ "id": "function/275957193",
+ "kind": "function",
+ "name": "add",
+ "size": 724,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_LinkedHashSet.E"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "add$1: function(_, element) {\n var strings, nums;\n if (typeof element === \"string\" && element !== \"__proto__\") {\n strings = this._strings;\n if (strings == null) {\n strings = P._LinkedHashSet__newHashTable();\n this._strings = strings;\n }\n return this._addHashTableEntry$2(strings, element);\n } else if (typeof element === \"number\" && (element & 0x3ffffff) === element) {\n nums = this._nums;\n if (nums == null) {\n nums = P._LinkedHashSet__newHashTable();\n this._nums = nums;\n }\n return this._addHashTableEntry$2(nums, element);\n } else\n return this._add$1(element);\n}\n",
+ "type": "bool Function(_LinkedHashSet.E)",
+ "measurements": null
+ },
+ "282990063": {
+ "id": "function/282990063",
+ "kind": "function",
+ "name": "call",
+ "size": 191,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/771507318",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(error) {\n if (!!J.getInterceptor(error).$isError)\n if (error.$thrownJsError == null)\n error.$thrownJsError = this.ex;\n return error;\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "285148179": {
+ "id": "function/285148179",
+ "kind": "function",
+ "name": "toString",
+ "size": 194,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/466061502",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var $name = this.$static_name;\n if ($name == null)\n return \"Closure of unknown static method\";\n return \"Closure '\" + $name + \"'\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "292195356": {
+ "id": "function/292195356",
+ "kind": "function",
+ "name": "computeFieldNamed",
+ "size": 441,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|exact=JSString]",
+ "parameters": [
+ {
+ "name": "fieldName",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "BoundClosure_computeFieldNamed: function(fieldName) {\n var template, names, t1, i, $name;\n template = new H.BoundClosure(\"self\", \"target\", \"receiver\", \"name\");\n names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template));\n for (t1 = names.length, i = 0; i < t1; ++i) {\n $name = names[i];\n if (template[$name] === fieldName)\n return $name;\n }\n}\n",
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "292751514": {
+ "id": "function/292751514",
+ "kind": "function",
+ "name": "_prependListeners",
+ "size": 1333,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/827328529"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "listeners",
+ "type": "[null|exact=_FutureListener]",
+ "declaredType": "_FutureListener<dynamic,dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_prependListeners$1: function(listeners) {\n var _box_0, t1, existingListeners, cursor, cursor0, source;\n _box_0 = {};\n _box_0.listeners = listeners;\n if (listeners == null)\n return;\n t1 = this._state;\n if (t1 <= 1) {\n existingListeners = this._resultOrListeners;\n this._resultOrListeners = listeners;\n if (existingListeners != null) {\n for (cursor = listeners; cursor0 = cursor._nextListener, cursor0 != null; cursor = cursor0)\n ;\n cursor._nextListener = existingListeners;\n }\n } else {\n if (t1 === 2) {\n source = this._resultOrListeners;\n if (source.get$_state() < 4) {\n source._prependListeners$1(listeners);\n return;\n }\n this._state = source._state;\n this._resultOrListeners = source._resultOrListeners;\n }\n _box_0.listeners = this._reverseListeners$1(listeners);\n t1 = this._zone;\n t1.toString;\n P._rootScheduleMicrotask(null, null, t1, new P._Future__prependListeners_closure(_box_0, this));\n }\n}\n",
+ "type": "void Function(_FutureListener<dynamic,dynamic>)",
+ "measurements": null
+ },
+ "292889014": {
+ "id": "function/292889014",
+ "kind": "function",
+ "name": "extractFunctionTypeObjectFromInternal",
+ "size": 294,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "o",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "extractFunctionTypeObjectFromInternal: function(o) {\n var signature;\n if (\"$signature\" in o) {\n signature = o.$signature;\n if (typeof signature == \"number\")\n return init.types[signature];\n else\n return o.$signature();\n }\n return;\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "299781104": {
+ "id": "function/299781104",
+ "kind": "function",
+ "name": "isJsArray",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 8,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "301932486": {
+ "id": "function/301932486",
+ "kind": "function",
+ "name": "Exception",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/631051714",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "Exception",
+ "inferredReturnType": "[exact=_Exception]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "Value([exact=JSString], value: \"Unsupported number of arguments for wrapped closure\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Exception Function([dynamic])",
+ "measurements": null
+ },
+ "302617892": {
+ "id": "function/302617892",
+ "kind": "function",
+ "name": "_objectToString",
+ "size": 227,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/893386369",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Error__objectToString: function(object) {\n var t1 = J.getInterceptor(object);\n if (!!t1.$isClosure)\n return t1.toString$0(object);\n return \"Instance of '\" + H.Primitives_objectTypeName(object) + \"'\";\n}\n",
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "306374693": {
+ "id": "function/306374693",
+ "kind": "function",
+ "name": "isDartDynamicTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "308590446": {
+ "id": "function/308590446",
+ "kind": "function",
+ "name": "throwExpression",
+ "size": 70,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "ex",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "throwExpression: function(ex) {\n throw H.wrapException(ex);\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "309114439": {
+ "id": "function/309114439",
+ "kind": "function",
+ "name": "invokeClosure",
+ "size": 535,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "closure",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Function"
+ },
+ {
+ "name": "numberOfArguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "int"
+ },
+ {
+ "name": "arg1",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arg2",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arg3",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arg4",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "invokeClosure: function(closure, numberOfArguments, arg1, arg2, arg3, arg4) {\n switch (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 H.wrapException(new P._Exception(\"Unsupported number of arguments for wrapped closure\"));\n}\n",
+ "type": "dynamic Function(Function,int,dynamic,dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "310457557": {
+ "id": "function/310457557",
+ "kind": "function",
+ "name": "isAssignableV1",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 6,
+ "code": null,
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "311229745": {
+ "id": "function/311229745",
+ "kind": "function",
+ "name": "call",
+ "size": 1345,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/844800611",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var t1, i, t2, t3, t4, t5, t6, t7, t8, t9, uri, hash;\n for (t1 = this._box_0, i = t1.nextHunkToInitialize, t2 = this.total, t3 = this.initializer, t4 = this.isHunkLoaded, t5 = this.isHunkInitialized, t6 = this.uris, t7 = this.hashes, t8 = this.waitingForLoad, t9 = t8.length; i < t2; ++i) {\n if (i >= t9)\n return H.ioore(t8, i);\n if (t8[i])\n return;\n ++t1.nextHunkToInitialize;\n if (i >= t6.length)\n return H.ioore(t6, i);\n uri = t6[i];\n if (i >= t7.length)\n return H.ioore(t7, i);\n hash = t7[i];\n if (t5(hash)) {\n $.$get$_eventLog().push(\" - already initialized: \" + uri + \" (\" + hash + \")\");\n continue;\n }\n if (t4(hash)) {\n $.$get$_eventLog().push(\" - initialize: \" + uri + \" (\" + hash + \")\");\n t3(hash);\n } else {\n t1 = $.$get$_eventLog();\n t1.push(\" - missing hunk: \" + uri + \" (\" + hash + \")\");\n if (i >= t6.length)\n return H.ioore(t6, i);\n throw H.wrapException(P.DeferredLoadException$(\"Loading \" + t6[i] + \" failed: the code with hash '\" + hash + \"' was not loaded.\\nevent log:\\n\" + C.JSArray_methods.join$1(t1, \"\\n\") + \"\\n\"));\n }\n }\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "312768442": {
+ "id": "function/312768442",
+ "kind": "function",
+ "name": "substring",
+ "size": 531,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "startIndex",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ },
+ {
+ "name": "endIndex",
+ "type": "[null|subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "substring$2: function(receiver, startIndex, endIndex) {\n if (endIndex == null)\n endIndex = receiver.length;\n if (startIndex > endIndex)\n throw H.wrapException(P.RangeError$value(startIndex, null, null));\n if (endIndex > receiver.length)\n throw H.wrapException(P.RangeError$value(endIndex, null, null));\n return receiver.substring(startIndex, endIndex);\n}\nsubstring$1: function($receiver, startIndex) {\n return this.substring$2($receiver, startIndex, null);\n}\n",
+ "type": "String Function(int,[int])",
+ "measurements": null
+ },
+ "315128565": {
+ "id": "function/315128565",
+ "kind": "function",
+ "name": "_isStringKey",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "316732114": {
+ "id": "function/316732114",
+ "kind": "function",
+ "name": "isDartFunctionType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "320253842": {
+ "id": "function/320253842",
+ "kind": "function",
+ "name": "isCsp",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "325386239": {
+ "id": "function/325386239",
+ "kind": "function",
+ "name": "_chainFuture",
+ "size": 641,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/385965656"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[exact=_Future]",
+ "declaredType": "Future<_Future.T>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_chainFuture$1: function(value) {\n var t1 = H.checkSubtypeV1(value, \"$is_Future\", this.$ti, null);\n if (t1) {\n if (value._state === 8) {\n this._state = 1;\n t1 = this._zone;\n t1.toString;\n P._rootScheduleMicrotask(null, null, t1, new P._Future__chainFuture_closure(this, value));\n } else\n P._Future__chainCoreFuture(value, this);\n return;\n }\n P._Future__chainForeignFuture(value, this);\n}\n",
+ "type": "void Function(Future<_Future.T>)",
+ "measurements": null
+ },
+ "326542993": {
+ "id": "function/326542993",
+ "kind": "function",
+ "name": "_loadHunk",
+ "size": 4563,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [
+ "closure/21475",
+ "closure/566195572",
+ "closure/566195573",
+ "closure/566195574",
+ "closure/566195575",
+ "closure/566195576",
+ "closure/581471934"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<Null>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "hunkName",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_loadHunk: function(hunkName) {\n var t1, deferredLibraryLoader, failure, jsSuccess, jsFailure, error, stackTrace, t2, future, t3, uri, t4, completer, exception, index, xhr, script;\n t1 = {};\n t2 = $.$get$_loadingLibraries();\n future = t2.$index(0, hunkName);\n t3 = $.$get$_eventLog();\n t3.push(\" - _loadHunk: \" + hunkName);\n if (future != null) {\n t3.push(\"reuse: \" + hunkName);\n return future.then$1(new H._loadHunk_closure());\n }\n uri = $.$get$thisScript();\n t1.uri = uri;\n uri = C.JSString_methods.substring$2(uri, 0, J.lastIndexOf$1$as(uri, \"/\") + 1) + hunkName;\n t1.uri = uri;\n t3.push(\" - download: \" + hunkName + \" from \" + uri);\n deferredLibraryLoader = self.dartDeferredLibraryLoader;\n t3 = P.Null;\n t4 = new P._Future(0, $.Zone__current, null, [t3]);\n completer = new P._AsyncCompleter(t4, [t3]);\n t3 = new H._loadHunk_success(hunkName, completer);\n failure = new H._loadHunk_failure(t1, hunkName, completer);\n jsSuccess = H.convertDartClosureToJS(t3, 0);\n jsFailure = H.convertDartClosureToJS(new H._loadHunk_closure0(failure), 1);\n if (typeof deferredLibraryLoader === \"function\")\n try {\n deferredLibraryLoader(t1.uri, jsSuccess, jsFailure);\n } catch (exception) {\n error = H.unwrapException(exception);\n stackTrace = H.getTraceFromException(exception);\n failure.call$3(error, \"invoking dartDeferredLibraryLoader hook\", stackTrace);\n }\n else if ((!self.window && !!self.postMessage) === true) {\n index = J.lastIndexOf$1$as(t1.uri, \"/\");\n t1.uri = J.substring$2$s(t1.uri, 0, index + 1) + hunkName;\n xhr = new XMLHttpRequest();\n xhr.open(\"GET\", t1.uri);\n xhr.addEventListener(\"load\", H.convertDartClosureToJS(new H._loadHunk_closure1(xhr, failure, t3), 1), false);\n xhr.addEventListener(\"error\", new H._loadHunk_closure2(failure), false);\n xhr.addEventListener(\"abort\", new H._loadHunk_closure3(failure), false);\n xhr.send();\n } else {\n script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = t1.uri;\n t1 = $.$get$_cspNonce();\n if (t1 != null && t1 !== \"\")\n script.nonce = t1;\n script.addEventListener(\"load\", jsSuccess, false);\n script.addEventListener(\"error\", jsFailure, false);\n document.body.appendChild(script);\n }\n t2.$indexSet(0, hunkName, t4);\n return t4;\n}\n",
+ "type": "Future<Null> Function(String)",
+ "measurements": null
+ },
+ "330018012": {
+ "id": "function/330018012",
+ "kind": "function",
+ "name": "_asyncAwait",
+ "size": 97,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "bodyFunction",
+ "type": "[null|subclass=Object]",
+ "declaredType": "void Function(int,dynamic)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncAwait: function(object, bodyFunction) {\n P._awaitOnObject(object, bodyFunction);\n}\n",
+ "type": "dynamic Function(dynamic,void Function(int,dynamic))",
+ "measurements": null
+ },
+ "335045122": {
+ "id": "function/335045122",
+ "kind": "function",
+ "name": "_writeString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "str",
+ "type": "[exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 10,
+ "code": null,
+ "type": "void Function(dynamic)",
+ "measurements": null
+ },
+ "336168458": {
+ "id": "function/336168458",
+ "kind": "function",
+ "name": "scheduleMicrotask",
+ "size": 354,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "scheduleMicrotask: function(callback) {\n var currentZone = $.Zone__current;\n if (C.C__RootZone === currentZone) {\n P._rootScheduleMicrotask(null, null, C.C__RootZone, callback);\n return;\n }\n currentZone.toString;\n P._rootScheduleMicrotask(null, null, currentZone, currentZone.bindCallbackGuarded$1(callback));\n}\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "336352070": {
+ "id": "function/336352070",
+ "kind": "function",
+ "name": "JsNoSuchMethodError",
+ "size": 238,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/17649844",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JsNoSuchMethodError]",
+ "parameters": [
+ {
+ "name": "_message",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "match",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "JsNoSuchMethodError$: function(_message, match) {\n var t1, t2;\n t1 = match == null;\n t2 = t1 ? null : match.method;\n return new H.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);\n}\n",
+ "type": "dynamic Function(String,dynamic)",
+ "measurements": null
+ },
+ "336424489": {
+ "id": "function/336424489",
+ "kind": "function",
+ "name": "_computeHashCode",
+ "size": 100,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_computeHashCode$1: function(element) {\n return J.get$hashCode$(element) & 0x3ffffff;\n}\n",
+ "type": "int Function(dynamic)",
+ "measurements": null
+ },
+ "337937411": {
+ "id": "function/337937411",
+ "kind": "function",
+ "name": "_awaitOnObject",
+ "size": 1004,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [
+ "closure/745039293",
+ "closure/745039294"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "bodyFunction",
+ "type": "[null|subclass=Object]",
+ "declaredType": "void Function(int,dynamic)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_awaitOnObject: function(object, bodyFunction) {\n var thenCallback, errorCallback, t1, future;\n thenCallback = new P._awaitOnObject_closure(bodyFunction);\n errorCallback = new P._awaitOnObject_closure0(bodyFunction);\n t1 = J.getInterceptor(object);\n if (!!t1.$is_Future)\n object._thenNoZoneRegistration$2(thenCallback, errorCallback);\n else if (!!t1.$isFuture)\n object.then$2$onError(thenCallback, errorCallback);\n else {\n future = new P._Future(0, $.Zone__current, null, [null]);\n future._state = 4;\n future._resultOrListeners = object;\n future._thenNoZoneRegistration$2(thenCallback, null);\n }\n}\n",
+ "type": "void Function(dynamic,void Function(int,dynamic))",
+ "measurements": null
+ },
+ "338379080": {
+ "id": "function/338379080",
+ "kind": "function",
+ "name": "errorCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "AsyncError",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "AsyncError Function(Object,StackTrace)",
+ "measurements": null
+ },
+ "341046768": {
+ "id": "function/341046768",
+ "kind": "function",
+ "name": "call",
+ "size": 94,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/411607690",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.$this._completeError$2(this.error, this.stackTrace);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "343621437": {
+ "id": "function/343621437",
+ "kind": "function",
+ "name": "_enter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1059755229",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Zone",
+ "inferredReturnType": "[null|exact=_RootZone]",
+ "parameters": [
+ {
+ "name": "zone",
+ "type": "[null|exact=_RootZone]",
+ "declaredType": "Zone"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes static)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "Zone Function(Zone)",
+ "measurements": null
+ },
+ "347974666": {
+ "id": "function/347974666",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 440,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[exact=JSUInt31]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n var t1, hash, i;\n for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {\n hash = 536870911 & hash + receiver.charCodeAt(i);\n hash = 536870911 & hash + ((524287 & hash) << 10);\n hash ^= hash >> 6;\n }\n hash = 536870911 & hash + ((67108863 & hash) << 3);\n hash ^= hash >> 11;\n return 536870911 & hash + ((16383 & hash) << 15);\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "349997389": {
+ "id": "function/349997389",
+ "kind": "function",
+ "name": "RangeError.value",
+ "size": 150,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=RangeError]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[subclass=JSInt]",
+ "declaredType": "num"
+ },
+ {
+ "name": "name",
+ "type": "Value([null|exact=JSString], value: \"index\")",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "RangeError$value: function(value, $name, message) {\n return new P.RangeError(null, null, true, value, $name, \"Value not in range\");\n}\n",
+ "type": "dynamic Function(num,[String,String])",
+ "measurements": null
+ },
+ "350333970": {
+ "id": "function/350333970",
+ "kind": "function",
+ "name": "handleValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "sourceResult",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_FutureListener.S"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(_FutureListener.S)",
+ "measurements": null
+ },
+ "350634082": {
+ "id": "function/350634082",
+ "kind": "function",
+ "name": "Completer.sync",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/471305727",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "Completer<Completer.T>",
+ "inferredReturnType": "[exact=_SyncCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Completer<Completer.T> Function()",
+ "measurements": null
+ },
+ "351622741": {
+ "id": "function/351622741",
+ "kind": "function",
+ "name": "runGuarded",
+ "size": 424,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "runGuarded$1: function(f) {\n var e, s, exception;\n try {\n if (C.C__RootZone === $.Zone__current) {\n f.call$0();\n return;\n }\n P._rootRun(null, null, this, f);\n } catch (exception) {\n e = H.unwrapException(exception);\n s = H.getTraceFromException(exception);\n P._rootHandleUncaughtError(null, null, this, e, s);\n }\n}\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "352514166": {
+ "id": "function/352514166",
+ "kind": "function",
+ "name": "_chainCoreFuture",
+ "size": 655,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "source",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ },
+ {
+ "name": "target",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_Future__chainCoreFuture: function(source, target) {\n var listeners;\n for (; source.get$_state() === 2;)\n source = source._resultOrListeners;\n if (source._state >= 4) {\n listeners = target._removeListeners$0();\n target._state = source._state;\n target._resultOrListeners = source._resultOrListeners;\n P._Future__propagateToListeners(target, listeners);\n } else {\n listeners = target._resultOrListeners;\n target._state = 2;\n target._resultOrListeners = source;\n source._prependListeners$1(listeners);\n }\n}\n",
+ "type": "void Function(_Future<dynamic>,_Future<dynamic>)",
+ "measurements": null
+ },
+ "355012434": {
+ "id": "function/355012434",
+ "kind": "function",
+ "name": "safeToString",
+ "size": 292,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/893386369",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Error_safeToString: function(object) {\n if (typeof object === \"number\" || typeof object === \"boolean\" || null == object)\n return J.toString$0$(object);\n if (typeof object === \"string\")\n return JSON.stringify(object);\n return P.Error__objectToString(object);\n}\n",
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "357240896": {
+ "id": "function/357240896",
+ "kind": "function",
+ "name": "inMilliseconds",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "int Function()",
+ "measurements": null
+ },
+ "357627841": {
+ "id": "function/357627841",
+ "kind": "function",
+ "name": "StreamIterator",
+ "size": 122,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/240292734",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "StreamIterator<StreamIterator.T>",
+ "inferredReturnType": "[exact=_StreamIterator]",
+ "parameters": [
+ {
+ "name": "stream",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Stream<StreamIterator.T>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "StreamIterator_StreamIterator: function(stream, $T) {\n return new P._StreamIterator(null, stream, false, [$T]);\n}\n",
+ "type": "StreamIterator<StreamIterator.T> Function(Stream<StreamIterator.T>)",
+ "measurements": null
+ },
+ "358340511": {
+ "id": "function/358340511",
+ "kind": "function",
+ "name": "write",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "obj",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 10,
+ "code": null,
+ "type": "void Function(Object)",
+ "measurements": null
+ },
+ "364010339": {
+ "id": "function/364010339",
+ "kind": "function",
+ "name": "_rootHandleUncaughtError",
+ "size": 725,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [
+ "closure/35711406"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "self",
+ "type": "[null]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "parent",
+ "type": "[null]",
+ "declaredType": "ZoneDelegate"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {\n var t1 = {};\n t1.error = error;\n P._schedulePriorityAsyncCallback(new P._rootHandleUncaughtError_closure(t1, stackTrace));\n}\n",
+ "type": "void Function(Zone,ZoneDelegate,Zone,dynamic,StackTrace)",
+ "measurements": null
+ },
+ "367762222": {
+ "id": "function/367762222",
+ "kind": "function",
+ "name": "_createTimer",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1012203707",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Timer",
+ "inferredReturnType": "[exact=_TimerImpl]",
+ "parameters": [
+ {
+ "name": "duration",
+ "type": "[exact=Duration]",
+ "declaredType": "Duration"
+ },
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Timer Function(Duration,void Function())",
+ "measurements": null
+ },
+ "369614033": {
+ "id": "function/369614033",
+ "kind": "function",
+ "name": "toString",
+ "size": 112,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return P.IterableBase_iterableToFullString(receiver, \"[\", \"]\");\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "370120278": {
+ "id": "function/370120278",
+ "kind": "function",
+ "name": "hasErrorCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "370295194": {
+ "id": "function/370295194",
+ "kind": "function",
+ "name": "internalComputeHashCode",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "int Function(dynamic)",
+ "measurements": null
+ },
+ "372037963": {
+ "id": "function/372037963",
+ "kind": "function",
+ "name": "toString",
+ "size": 114,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 3,
+ "code": "toString$0: function(_) {\n var t1 = this._contents;\n return t1.charCodeAt(0) == 0 ? t1 : t1;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "372361659": {
+ "id": "function/372361659",
+ "kind": "function",
+ "name": "call",
+ "size": 89,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/629631311",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "errorCode",
+ "type": "[null|subclass=Object]",
+ "declaredType": "int"
+ },
+ {
+ "name": "result",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$2: function(errorCode, result) {\n this.$protected(errorCode, result);\n}\n",
+ "type": "Null Function(int,dynamic)",
+ "measurements": null
+ },
+ "373761717": {
+ "id": "function/373761717",
+ "kind": "function",
+ "name": "_zone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Zone",
+ "inferredReturnType": "[null|exact=_RootZone]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 6,
+ "code": null,
+ "type": "Zone Function()",
+ "measurements": null
+ },
+ "380325809": {
+ "id": "function/380325809",
+ "kind": "function",
+ "name": "toString",
+ "size": 73,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/851867060",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return String(receiver);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "380929608": {
+ "id": "function/380929608",
+ "kind": "function",
+ "name": "_deleteTableEntry",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "Value([exact=JSString], value: \"<non-identifier-key>\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "381680028": {
+ "id": "function/381680028",
+ "kind": "function",
+ "name": "call",
+ "size": 82,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/561897310",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.$this._completer.complete$1(this.value);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "385444888": {
+ "id": "function/385444888",
+ "kind": "function",
+ "name": "wait",
+ "size": 2927,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/438137149",
+ "children": [
+ "closure/590764751",
+ "closure/938184478"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<List<wait.T>>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "futures",
+ "type": "Container(Union([exact=JSExtendableArray], [exact=JSFixedArray]), element: [null|subclass=Object], length: null)",
+ "declaredType": "Iterable<Future<wait.T>>"
+ },
+ {
+ "name": "cleanUp",
+ "type": "[null]",
+ "declaredType": "void Function(wait.T)"
+ },
+ {
+ "name": "eagerError",
+ "type": "Value([exact=JSBool], value: false)",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Future_wait: function(futures, cleanUp, eagerError) {\n var _box_0, result, handleError, future, pos, e, st, t1, t2, _i, t3, values, exception, error;\n _box_0 = {};\n t1 = [P.List];\n result = new P._Future(0, $.Zone__current, null, t1);\n _box_0.values = null;\n _box_0.remaining = 0;\n _box_0.error = null;\n _box_0.stackTrace = null;\n handleError = new P.Future_wait_handleError(_box_0, cleanUp, false, result);\n try {\n for (t2 = futures.length, _i = 0, t3 = 0; _i < futures.length; futures.length === t2 || (0, H.throwConcurrentModificationError)(futures), ++_i) {\n future = futures[_i];\n pos = t3;\n future.then$2$onError(new P.Future_wait_closure(_box_0, pos, result, cleanUp, false), handleError);\n t3 = ++_box_0.remaining;\n }\n if (t3 === 0) {\n t2 = new P._Future(0, $.Zone__current, null, t1);\n t2._asyncComplete$1(C.List_empty);\n return t2;\n }\n values = new Array(t3);\n values.fixed$length = Array;\n _box_0.values = values;\n } catch (exception) {\n e = H.unwrapException(exception);\n st = H.getTraceFromException(exception);\n if (_box_0.remaining === 0 || false) {\n error = e;\n if (error == null)\n error = new P.NullThrownError();\n t2 = $.Zone__current;\n if (t2 !== C.C__RootZone)\n t2.toString;\n t1 = new P._Future(0, t2, null, t1);\n t1._asyncCompleteError$2(error, st);\n return t1;\n } else {\n _box_0.error = e;\n _box_0.stackTrace = st;\n }\n }\n return result;\n}\n",
+ "type": "Future<List<wait.T>> Function(Iterable<Future<wait.T>>,{void Function(wait.T) cleanUp,bool eagerError})",
+ "measurements": null
+ },
+ "388977016": {
+ "id": "function/388977016",
+ "kind": "function",
+ "name": "_writeOne",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "obj",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes anything)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "String Function(String,Object)",
+ "measurements": null
+ },
+ "390828239": {
+ "id": "function/390828239",
+ "kind": "function",
+ "name": "bindCallbackGuarded",
+ "size": 235,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [
+ "closure/558424951"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void Function()",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "bindCallbackGuarded$1: function(f) {\n return new P._RootZone_bindCallbackGuarded_closure(this, f);\n}\n",
+ "type": "void Function() Function(void Function())",
+ "measurements": null
+ },
+ "393060060": {
+ "id": "function/393060060",
+ "kind": "function",
+ "name": "BoundClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=BoundClosure]",
+ "parameters": [
+ {
+ "name": "_self",
+ "type": "Value([null|exact=JSString], value: \"self\")",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "_target",
+ "type": "Value([null|exact=JSString], value: \"target\")",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "_receiver",
+ "type": "Value([null|exact=JSString], value: \"receiver\")",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "_name",
+ "type": "Value([null|exact=JSString], value: \"name\")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic,dynamic,String)",
+ "measurements": null
+ },
+ "394885266": {
+ "id": "function/394885266",
+ "kind": "function",
+ "name": "call",
+ "size": 488,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/590764751",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "wait.T"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(value) {\n var t1, t2, t3;\n t1 = this._box_0;\n t2 = --t1.remaining;\n t3 = t1.values;\n if (t3 != null) {\n t1 = this.pos;\n if (t1 < 0 || t1 >= t3.length)\n return H.ioore(t3, t1);\n t3[t1] = value;\n if (t2 === 0)\n this.result._completeWithValue$1(t3);\n } else if (t1.remaining === 0 && !this.eagerError)\n this.result._completeError$2(t1.error, t1.stackTrace);\n}\n",
+ "type": "Null Function(wait.T)",
+ "measurements": null
+ },
+ "399195151": {
+ "id": "function/399195151",
+ "kind": "function",
+ "name": "print",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "Value([exact=JSString], value: \"Hello, World!\")",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(Object)",
+ "measurements": null
+ },
+ "400990606": {
+ "id": "function/400990606",
+ "kind": "function",
+ "name": "internalSet",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.K"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.V"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)",
+ "measurements": null
+ },
+ "405266426": {
+ "id": "function/405266426",
+ "kind": "function",
+ "name": "iterator",
+ "size": 114,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Iterator<JSArray.E>",
+ "inferredReturnType": "[exact=ArrayIterator]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$iterator: function(receiver) {\n return new J.ArrayIterator(receiver, receiver.length, 0, null);\n}\n",
+ "type": "Iterator<JSArray.E> Function()",
+ "measurements": null
+ },
+ "407139250": {
+ "id": "function/407139250",
+ "kind": "function",
+ "name": "setRange",
+ "size": 1400,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "start",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "end",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "iterable",
+ "type": "Union([exact=JSUInt31], [subclass=JSArray])",
+ "declaredType": "Iterable<JSArray.E>"
+ },
+ {
+ "name": "skipCount",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "setRange$4: function(receiver, start, end, iterable, skipCount) {\n var $length, t1, otherStart, otherList, i;\n if (!!receiver.immutable$list)\n H.throwExpression(P.UnsupportedError$(\"setRange\"));\n P.RangeError_checkValidRange(start, end, receiver.length, null, null, null);\n $length = end - start;\n if ($length === 0)\n return;\n t1 = J.getInterceptor(iterable);\n if (!!t1.$isList) {\n otherStart = skipCount;\n otherList = iterable;\n } else {\n otherList = t1.skip$1(iterable, skipCount).toList$1$growable(0, false);\n otherStart = 0;\n }\n if (otherStart + $length > otherList.length)\n throw H.wrapException(P.StateError$(\"Too few elements\"));\n if (otherStart < start)\n for (i = $length - 1; i >= 0; --i) {\n t1 = otherStart + i;\n if (t1 >= otherList.length)\n return H.ioore(otherList, t1);\n receiver[start + i] = otherList[t1];\n }\n else\n for (i = 0; i < $length; ++i) {\n t1 = otherStart + i;\n if (t1 >= otherList.length)\n return H.ioore(otherList, t1);\n receiver[start + i] = otherList[t1];\n }\n}\nsetRange$3: function($receiver, start, end, iterable) {\n return this.setRange$4($receiver, start, end, iterable, 0);\n}\n",
+ "type": "void Function(int,int,Iterable<JSArray.E>,[int])",
+ "measurements": null
+ },
+ "411231605": {
+ "id": "function/411231605",
+ "kind": "function",
+ "name": "_LinkedHashSetCell",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/868658259",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_LinkedHashSetCell]",
+ "parameters": [
+ {
+ "name": "_element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "412886703": {
+ "id": "function/412886703",
+ "kind": "function",
+ "name": "_rethrow",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(Object,StackTrace)",
+ "measurements": null
+ },
+ "415620823": {
+ "id": "function/415620823",
+ "kind": "function",
+ "name": "_nonNullError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Object",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "Object Function(Object)",
+ "measurements": null
+ },
+ "417406426": {
+ "id": "function/417406426",
+ "kind": "function",
+ "name": "errorZone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Zone",
+ "inferredReturnType": "[exact=_RootZone]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 6,
+ "code": null,
+ "type": "Zone Function()",
+ "measurements": null
+ },
+ "418915149": {
+ "id": "function/418915149",
+ "kind": "function",
+ "name": "ioore",
+ "size": 171,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[empty]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "index",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "ioore: function(receiver, index) {\n if (receiver == null)\n J.get$length$as(receiver);\n throw H.wrapException(H.diagnoseIndexError(receiver, index));\n}\n",
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "419713835": {
+ "id": "function/419713835",
+ "kind": "function",
+ "name": "extractFunctionTypeObjectFrom",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "o",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "425007214": {
+ "id": "function/425007214",
+ "kind": "function",
+ "name": "==",
+ "size": 75,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/86936801",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$eq: function(receiver, other) {\n return receiver === other;\n}\n",
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "426855684": {
+ "id": "function/426855684",
+ "kind": "function",
+ "name": "call",
+ "size": 159,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/607767883",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "_",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(_) {\n var t1, f;\n t1 = this._box_0;\n f = t1.storedCallback;\n t1.storedCallback = null;\n f.call$0();\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "427434111": {
+ "id": "function/427434111",
+ "kind": "function",
+ "name": "RangeError.range",
+ "size": 187,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=RangeError]",
+ "parameters": [
+ {
+ "name": "invalidValue",
+ "type": "[subclass=JSInt]",
+ "declaredType": "num"
+ },
+ {
+ "name": "minValue",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "maxValue",
+ "type": "[null|subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "name",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "RangeError$range: function(invalidValue, minValue, maxValue, $name, message) {\n return new P.RangeError(minValue, maxValue, true, invalidValue, $name, \"Invalid value\");\n}\n",
+ "type": "dynamic Function(num,int,int,[String,String])",
+ "measurements": null
+ },
+ "430193009": {
+ "id": "function/430193009",
+ "kind": "function",
+ "name": "UnknownJsTypeError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/27679401",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=UnknownJsTypeError]",
+ "parameters": [
+ {
+ "name": "_message",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "430236296": {
+ "id": "function/430236296",
+ "kind": "function",
+ "name": "length",
+ "size": 177,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/70813553",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n var it, count;\n it = this.get$iterator(this);\n for (count = 0; it.moveNext$0();)\n ++count;\n return count;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "430480673": {
+ "id": "function/430480673",
+ "kind": "function",
+ "name": "iterableToShortString",
+ "size": 689,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/812154630",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "iterable",
+ "type": "[subclass=Iterable]",
+ "declaredType": "Iterable<dynamic>"
+ },
+ {
+ "name": "leftDelimiter",
+ "type": "Value([exact=JSString], value: \"(\")",
+ "declaredType": "String"
+ },
+ {
+ "name": "rightDelimiter",
+ "type": "Value([exact=JSString], value: \")\")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "IterableBase_iterableToShortString: function(iterable, leftDelimiter, rightDelimiter) {\n var parts, t1;\n if (P._isToStringVisiting(iterable)) {\n if (leftDelimiter === \"(\" && rightDelimiter === \")\")\n return \"(...)\";\n return leftDelimiter + \"...\" + rightDelimiter;\n }\n parts = [];\n t1 = $.$get$_toStringVisiting();\n t1.push(iterable);\n try {\n P._iterablePartsToStrings(iterable, parts);\n } finally {\n if (0 >= t1.length)\n return H.ioore(t1, -1);\n t1.pop();\n }\n t1 = P.StringBuffer__writeAll(leftDelimiter, parts, \", \") + rightDelimiter;\n return t1.charCodeAt(0) == 0 ? t1 : t1;\n}\n",
+ "type": "String Function(Iterable<dynamic>,[String,String])",
+ "measurements": null
+ },
+ "430787578": {
+ "id": "function/430787578",
+ "kind": "function",
+ "name": "_whenCompleteAction",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic Function()",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function() Function()",
+ "measurements": null
+ },
+ "431897853": {
+ "id": "function/431897853",
+ "kind": "function",
+ "name": "toString",
+ "size": 78,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/217690375",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Exception: \" + this.message;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "435575019": {
+ "id": "function/435575019",
+ "kind": "function",
+ "name": "toStringWrapper",
+ "size": 83,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toStringWrapper: function() {\n return J.toString$0$(this.dartException);\n}\n",
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "436170439": {
+ "id": "function/436170439",
+ "kind": "function",
+ "name": "List.generate",
+ "size": 357,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/959990109",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "List<List.E>",
+ "inferredReturnType": "Container(Union([exact=JSExtendableArray], [exact=JSFixedArray]), element: [null|subclass=Object], length: null)",
+ "parameters": [
+ {
+ "name": "length",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ },
+ {
+ "name": "generator",
+ "type": "[subclass=Closure]",
+ "declaredType": "List.E Function(int)"
+ },
+ {
+ "name": "growable",
+ "type": "Value([exact=JSBool], value: true)",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "List_List$generate: function($length, generator, growable) {\n var result, i, t1;\n result = [];\n C.JSArray_methods.set$length(result, $length);\n for (i = 0; i < $length; ++i) {\n t1 = generator.call$1(i);\n if (i >= result.length)\n return H.ioore(result, i);\n result[i] = t1;\n }\n return result;\n}\n",
+ "type": "List<List.E> Function(int,List.E Function(int),{bool growable})",
+ "measurements": null
+ },
+ "436231120": {
+ "id": "function/436231120",
+ "kind": "function",
+ "name": "toString",
+ "size": 316,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/518228506",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes field)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1, 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 t1 = trace == null ? \"\" : trace;\n this._trace = t1;\n return t1;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "437395524": {
+ "id": "function/437395524",
+ "kind": "function",
+ "name": "JSArray.fixed",
+ "size": 264,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JSArray<JSArray.E>",
+ "inferredReturnType": "[exact=JSFixedArray]",
+ "parameters": [
+ {
+ "name": "length",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "JSArray_JSArray$fixed: function($length) {\n if ($length < 0 || $length > 4294967295)\n throw H.wrapException(P.RangeError$range($length, 0, 4294967295, \"length\", null));\n return J.JSArray_JSArray$markFixed(new Array($length));\n}\n",
+ "type": "JSArray<JSArray.E> Function(int)",
+ "measurements": null
+ },
+ "440018750": {
+ "id": "function/440018750",
+ "kind": "function",
+ "name": "toString",
+ "size": 158,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n if (receiver === 0 && 1 / receiver < 0)\n return \"-0.0\";\n else\n return \"\" + receiver;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "445547062": {
+ "id": "function/445547062",
+ "kind": "function",
+ "name": "S",
+ "size": 505,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "S: function(value) {\n var res;\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 res = J.toString$0$(value);\n if (typeof res !== \"string\")\n throw H.wrapException(H.argumentErrorValue(value));\n return res;\n}\n",
+ "type": "String Function(dynamic)",
+ "measurements": null
+ },
+ "448031436": {
+ "id": "function/448031436",
+ "kind": "function",
+ "name": "_newHashTable",
+ "size": 216,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_LinkedHashSet__newHashTable: function() {\n var table = Object.create(null);\n table[\"<non-identifier-key>\"] = table;\n delete table[\"<non-identifier-key>\"];\n return table;\n}\n",
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "448227795": {
+ "id": "function/448227795",
+ "kind": "function",
+ "name": "_errorName",
+ "size": 104,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$_errorName: function() {\n return \"Invalid argument\" + (!this._hasValue ? \"(s)\" : \"\");\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "453686242": {
+ "id": "function/453686242",
+ "kind": "function",
+ "name": "elementAt",
+ "size": 174,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "JSArray.E",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "index",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "elementAt$1: function(receiver, index) {\n if (index < 0 || index >= receiver.length)\n return H.ioore(receiver, index);\n return receiver[index];\n}\n",
+ "type": "JSArray.E Function(int)",
+ "measurements": null
+ },
+ "456567103": {
+ "id": "function/456567103",
+ "kind": "function",
+ "name": "JSArray.markFixed",
+ "size": 113,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JSArray<JSArray.E>",
+ "inferredReturnType": "[exact=JSFixedArray]",
+ "parameters": [
+ {
+ "name": "allocation",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "JSArray_JSArray$markFixed: function(allocation) {\n return J.JSArray_markFixedList(allocation);\n}\n",
+ "type": "JSArray<JSArray.E> Function(dynamic)",
+ "measurements": null
+ },
+ "458931695": {
+ "id": "function/458931695",
+ "kind": "function",
+ "name": "tooFew",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/737466373",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "StateError",
+ "inferredReturnType": "[exact=StateError]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "StateError Function()",
+ "measurements": null
+ },
+ "460512542": {
+ "id": "function/460512542",
+ "kind": "function",
+ "name": "current",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1059755229",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Zone",
+ "inferredReturnType": "[null|exact=_RootZone]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 18,
+ "code": null,
+ "type": "Zone Function()",
+ "measurements": null
+ },
+ "464959827": {
+ "id": "function/464959827",
+ "kind": "function",
+ "name": "toString",
+ "size": 550,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1, nameString, message, prefix, explanation, errorValue;\n t1 = this.name;\n nameString = t1 != null ? \" (\" + t1 + \")\" : \"\";\n t1 = this.message;\n message = t1 == null ? \"\" : \": \" + t1;\n prefix = this.get$_errorName() + nameString + message;\n if (!this._hasValue)\n return prefix;\n explanation = this.get$_errorExplanation();\n errorValue = P.Error_safeToString(this.invalidValue);\n return prefix + explanation + \": \" + H.S(errorValue);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "467155193": {
+ "id": "function/467155193",
+ "kind": "function",
+ "name": "isJsFunction",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "o",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "469962639": {
+ "id": "function/469962639",
+ "kind": "function",
+ "name": "call",
+ "size": 215,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/913475889",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(callback) {\n var t1, t2;\n this._box_0.storedCallback = callback;\n t1 = this.div;\n t2 = this.span;\n t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);\n}\n",
+ "type": "Null Function(void Function())",
+ "measurements": null
+ },
+ "473156332": {
+ "id": "function/473156332",
+ "kind": "function",
+ "name": "TypeErrorDecoder",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=TypeErrorDecoder]",
+ "parameters": [
+ {
+ "name": "_arguments",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_argumentsExpr",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_expr",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_method",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_receiver",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "_pattern",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(int,int,int,int,int,String)",
+ "measurements": null
+ },
+ "474133145": {
+ "id": "function/474133145",
+ "kind": "function",
+ "name": "toString",
+ "size": 90,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/991730135",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Unsupported operation: \" + this.message;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "476860251": {
+ "id": "function/476860251",
+ "kind": "function",
+ "name": "cspForwardCall",
+ "size": 1409,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "arity",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "isSuperCall",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ },
+ {
+ "name": "stubName",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Closure_cspForwardCall: function(arity, isSuperCall, stubName, $function) {\n var getSelf = H.BoundClosure_selfOf;\n switch (isSuperCall ? -1 : arity) {\n case 0:\n return function(n, S) {\n return function() {\n return S(this)[n]();\n };\n }(stubName, getSelf);\n case 1:\n return function(n, S) {\n return function(a) {\n return S(this)[n](a);\n };\n }(stubName, getSelf);\n case 2:\n return function(n, S) {\n return function(a, b) {\n return S(this)[n](a, b);\n };\n }(stubName, getSelf);\n case 3:\n return function(n, S) {\n return function(a, b, c) {\n return S(this)[n](a, b, c);\n };\n }(stubName, getSelf);\n case 4:\n return function(n, S) {\n return function(a, b, c, d) {\n return S(this)[n](a, b, c, d);\n };\n }(stubName, getSelf);\n case 5:\n return function(n, S) {\n return function(a, b, c, d, e) {\n return S(this)[n](a, b, c, d, e);\n };\n }(stubName, getSelf);\n default:\n return function(f, s) {\n return function() {\n return f.apply(s(this), arguments);\n };\n }($function, getSelf);\n }\n}\n",
+ "type": "dynamic Function(int,bool,String,dynamic)",
+ "measurements": null
+ },
+ "477609809": {
+ "id": "function/477609809",
+ "kind": "function",
+ "name": "_completeError",
+ "size": 112,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/952584796",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_completeError$2: function(error, stackTrace) {\n this.future._completeError$2(error, stackTrace);\n}\n",
+ "type": "void Function(Object,StackTrace)",
+ "measurements": null
+ },
+ "478486472": {
+ "id": "function/478486472",
+ "kind": "function",
+ "name": "markFixedList",
+ "size": 109,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<dynamic>",
+ "inferredReturnType": "[exact=JSFixedArray]",
+ "parameters": [
+ {
+ "name": "list",
+ "type": "[null|subclass=Object]",
+ "declaredType": "List<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "JSArray_markFixedList: function(list) {\n list.fixed$length = Array;\n return list;\n}\n",
+ "type": "List<dynamic> Function(List<dynamic>)",
+ "measurements": null
+ },
+ "481547973": {
+ "id": "function/481547973",
+ "kind": "function",
+ "name": "LinkedHashMapCell",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/500662026",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=LinkedHashMapCell]",
+ "parameters": [
+ {
+ "name": "hashMapCellKey",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "hashMapCellValue",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "482441661": {
+ "id": "function/482441661",
+ "kind": "function",
+ "name": "skip",
+ "size": 93,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Iterable<JSArray.E>",
+ "inferredReturnType": "[exact=SubListIterable]",
+ "parameters": [
+ {
+ "name": "n",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "skip$1: function(receiver, n) {\n return H.SubListIterable$(receiver, n, null);\n}\n",
+ "type": "Iterable<JSArray.E> Function(int)",
+ "measurements": null
+ },
+ "483766990": {
+ "id": "function/483766990",
+ "kind": "function",
+ "name": "invoke",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "486797615": {
+ "id": "function/486797615",
+ "kind": "function",
+ "name": "_computeCspNonce",
+ "size": 173,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_computeCspNonce: function() {\n var currentScript = init.currentScript;\n if (currentScript == null)\n return;\n return String(currentScript.nonce);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "487598887": {
+ "id": "function/487598887",
+ "kind": "function",
+ "name": "runtimeTypeToString",
+ "size": 136,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "rti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "onTypeVariable",
+ "type": "[null]",
+ "declaredType": "String Function(int)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "runtimeTypeToString: function(rti, onTypeVariable) {\n var t1 = H.runtimeTypeToStringV1(rti, onTypeVariable);\n return t1;\n}\n",
+ "type": "String Function(dynamic,{String Function(int) onTypeVariable})",
+ "measurements": null
+ },
+ "491418529": {
+ "id": "function/491418529",
+ "kind": "function",
+ "name": "iae",
+ "size": 92,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[empty]",
+ "parameters": [
+ {
+ "name": "argument",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "iae: function(argument) {\n throw H.wrapException(H.argumentErrorValue(argument));\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "492708773": {
+ "id": "function/492708773",
+ "kind": "function",
+ "name": "_Future.immediate",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "result",
+ "type": "Union([exact=_Future], [null|exact=JSUnmodifiableArray])",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "494094492": {
+ "id": "function/494094492",
+ "kind": "function",
+ "name": "_endIndex",
+ "size": 125,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[null|subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$_endIndex: function() {\n var $length = J.get$length$as(this.__internal$_iterable);\n return $length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "494583530": {
+ "id": "function/494583530",
+ "kind": "function",
+ "name": "Es6LinkedHashMap",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/692496355",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=Es6LinkedHashMap]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "499330809": {
+ "id": "function/499330809",
+ "kind": "function",
+ "name": "_computeThisScriptFromTrace",
+ "size": 749,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_computeThisScriptFromTrace: function() {\n var stack, matches;\n stack = new Error().stack;\n if (stack == null) {\n stack = function() {\n try {\n throw new Error();\n } catch (e) {\n return e.stack;\n }\n }();\n if (stack == null)\n throw H.wrapException(P.UnsupportedError$(\"No stack trace\"));\n }\n matches = stack.match(new RegExp(\"^ *at [^(]*\\\\((.*):[0-9]*:[0-9]*\\\\)$\", \"m\"));\n if (matches != null)\n return matches[1];\n matches = stack.match(new RegExp(\"^[^@]*@(.*):[0-9]*$\", \"m\"));\n if (matches != null)\n return matches[1];\n throw H.wrapException(P.UnsupportedError$('Cannot extract URI from \"' + stack + '\"'));\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "499807915": {
+ "id": "function/499807915",
+ "kind": "function",
+ "name": "<",
+ "size": 174,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=JSInt]",
+ "declaredType": "num"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$lt: function(receiver, other) {\n if (typeof other !== \"number\")\n throw H.wrapException(H.argumentErrorValue(other));\n return receiver < other;\n}\n",
+ "type": "bool Function(num)",
+ "measurements": null
+ },
+ "501712645": {
+ "id": "function/501712645",
+ "kind": "function",
+ "name": "joinArgumentsV1",
+ "size": 694,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "types",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "startIndex",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ },
+ {
+ "name": "onTypeVariable",
+ "type": "[null]",
+ "declaredType": "String Function(int)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "joinArgumentsV1: function(types, startIndex, onTypeVariable) {\n var buffer, index, firstArgument, allDynamic, t1, argument;\n if (types == null)\n return \"\";\n buffer = new P.StringBuffer(\"\");\n for (index = startIndex, firstArgument = true, allDynamic = true, t1 = \"\"; index < types.length; ++index) {\n if (firstArgument)\n firstArgument = false;\n else\n buffer._contents = t1 + \", \";\n argument = types[index];\n if (argument != null)\n allDynamic = false;\n t1 = buffer._contents += H.runtimeTypeToStringV1(argument, onTypeVariable);\n }\n return allDynamic ? \"\" : \"<\" + buffer.toString$0(0) + \">\";\n}\n",
+ "type": "String Function(dynamic,int,{String Function(int) onTypeVariable})",
+ "measurements": null
+ },
+ "507333070": {
+ "id": "function/507333070",
+ "kind": "function",
+ "name": "stringConcatUnchecked",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string1",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "string2",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 14,
+ "code": null,
+ "type": "String Function(String,String)",
+ "measurements": null
+ },
+ "508874693": {
+ "id": "function/508874693",
+ "kind": "function",
+ "name": "unmangleAllIdentifiersIfPreservedAnyways",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/527944179",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "str",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "513053773": {
+ "id": "function/513053773",
+ "kind": "function",
+ "name": "Future.value",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/438137149",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "Future<Future.T>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "Container([null|exact=JSUnmodifiableArray], element: [empty], length: 0)",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "Future<Future.T> Function([dynamic])",
+ "measurements": null
+ },
+ "519629171": {
+ "id": "function/519629171",
+ "kind": "function",
+ "name": "_removeListeners",
+ "size": 177,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_FutureListener<dynamic,dynamic>",
+ "inferredReturnType": "[null|exact=_FutureListener]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 2,
+ "code": "_removeListeners$0: function() {\n var current = this._resultOrListeners;\n this._resultOrListeners = null;\n return this._reverseListeners$1(current);\n}\n",
+ "type": "_FutureListener<dynamic,dynamic> Function()",
+ "measurements": null
+ },
+ "519947595": {
+ "id": "function/519947595",
+ "kind": "function",
+ "name": "==",
+ "size": 70,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/418854932",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$eq: function(receiver, other) {\n return null == other;\n}\n",
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "521874428": {
+ "id": "function/521874428",
+ "kind": "function",
+ "name": "length",
+ "size": 71,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n return this._contents.length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "528985088": {
+ "id": "function/528985088",
+ "kind": "function",
+ "name": "getTraceFromException",
+ "size": 400,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "StackTrace",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "exception",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "getTraceFromException: function(exception) {\n var trace;\n if (exception instanceof H.ExceptionAndStackTrace)\n return exception.stackTrace;\n if (exception == null)\n return new H._StackTrace(exception, null);\n trace = exception.$cachedTrace;\n if (trace != null)\n return trace;\n return exception.$cachedTrace = new H._StackTrace(exception, null);\n}\n",
+ "type": "StackTrace Function(dynamic)",
+ "measurements": null
+ },
+ "533906117": {
+ "id": "function/533906117",
+ "kind": "function",
+ "name": "_setPendingComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "void Function()",
+ "measurements": null
+ },
+ "539017937": {
+ "id": "function/539017937",
+ "kind": "function",
+ "name": "_errorName",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"RangeError\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$_errorName: function() {\n return \"RangeError\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "540949546": {
+ "id": "function/540949546",
+ "kind": "function",
+ "name": "flattenString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "str",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "542135743": {
+ "id": "function/542135743",
+ "kind": "function",
+ "name": "_deleteTableEntry",
+ "size": 78,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "Value([exact=JSString], value: \"<non-identifier-key>\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_deleteTableEntry$2: function(table, key) {\n delete table[key];\n}\n",
+ "type": "void Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "544746737": {
+ "id": "function/544746737",
+ "kind": "function",
+ "name": "throwConcurrentModificationError",
+ "size": 135,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[empty]",
+ "parameters": [
+ {
+ "name": "collection",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "throwConcurrentModificationError: function(collection) {\n throw H.wrapException(P.ConcurrentModificationError$(collection));\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "546320785": {
+ "id": "function/546320785",
+ "kind": "function",
+ "name": "_scheduleImmediate",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "549577701": {
+ "id": "function/549577701",
+ "kind": "function",
+ "name": "_objectRawTypeName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "550544609": {
+ "id": "function/550544609",
+ "kind": "function",
+ "name": "toString",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return receiver;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "551570860": {
+ "id": "function/551570860",
+ "kind": "function",
+ "name": "invokeOn",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Object",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "Object Function(dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "552271305": {
+ "id": "function/552271305",
+ "kind": "function",
+ "name": "_FutureListener.then",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_FutureListener]",
+ "parameters": [
+ {
+ "name": "result",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<_FutureListener.T>"
+ },
+ {
+ "name": "onValue",
+ "type": "[subclass=Closure]",
+ "declaredType": "dynamic Function(_FutureListener.S)"
+ },
+ {
+ "name": "errorCallback",
+ "type": "[null|subclass=Closure]",
+ "declaredType": "Function"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(_Future<_FutureListener.T>,dynamic Function(_FutureListener.S),Function)",
+ "measurements": null
+ },
+ "553149607": {
+ "id": "function/553149607",
+ "kind": "function",
+ "name": "_chainForeignFuture",
+ "size": 1035,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/953553118",
+ "closure/953553119",
+ "closure/953553120"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "source",
+ "type": "[null|exact=_Future]",
+ "declaredType": "Future<dynamic>"
+ },
+ {
+ "name": "target",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_Future__chainForeignFuture: function(source, target) {\n var e, s, exception;\n target._state = 1;\n try {\n source.then$2$onError(new P._Future__chainForeignFuture_closure(target), new P._Future__chainForeignFuture_closure0(target));\n } catch (exception) {\n e = H.unwrapException(exception);\n s = H.getTraceFromException(exception);\n P.scheduleMicrotask(new P._Future__chainForeignFuture_closure1(target, e, s));\n }\n}\n",
+ "type": "void Function(Future<dynamic>,_Future<dynamic>)",
+ "measurements": null
+ },
+ "553278458": {
+ "id": "function/553278458",
+ "kind": "function",
+ "name": "provokeCallErrorOnUndefined",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "553851206": {
+ "id": "function/553851206",
+ "kind": "function",
+ "name": "functionTypeTest",
+ "size": 439,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "functionTypeRti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "functionTypeTest: function(value, functionTypeRti) {\n var functionTypeObject, t1;\n if (value == null)\n return false;\n if (typeof value == \"function\")\n return true;\n functionTypeObject = H.extractFunctionTypeObjectFromInternal(J.getInterceptor(value));\n if (functionTypeObject == null)\n return false;\n t1 = H.isFunctionSubtypeV1(functionTypeObject, functionTypeRti);\n return t1;\n}\n",
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "555987509": {
+ "id": "function/555987509",
+ "kind": "function",
+ "name": "getRuntimeTypeInfo",
+ "size": 111,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "target",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "getRuntimeTypeInfo: function(target) {\n if (target == null)\n return;\n return target.$ti;\n}\n",
+ "type": "dynamic Function(Object)",
+ "measurements": null
+ },
+ "556268777": {
+ "id": "function/556268777",
+ "kind": "function",
+ "name": "_isComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 5,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "560797298": {
+ "id": "function/560797298",
+ "kind": "function",
+ "name": "checkSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "isField",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ },
+ {
+ "name": "checks",
+ "type": "[null|subclass=Object]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "asField",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 5,
+ "code": null,
+ "type": "bool Function(Object,String,List<dynamic>,String)",
+ "measurements": null
+ },
+ "564404904": {
+ "id": "function/564404904",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 399,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSUInt32]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(_) {\n var t1, receiverHashCode;\n t1 = this._receiver;\n if (t1 == null)\n receiverHashCode = H.Primitives_objectHashCode(this._self);\n else\n receiverHashCode = typeof t1 !== \"object\" ? J.get$hashCode$(t1) : H.Primitives_objectHashCode(t1);\n return (receiverHashCode ^ H.Primitives_objectHashCode(this._target)) >>> 0;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "565013754": {
+ "id": "function/565013754",
+ "kind": "function",
+ "name": "toString",
+ "size": 56,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/351911148",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"null\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"null\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "569040700": {
+ "id": "function/569040700",
+ "kind": "function",
+ "name": "call",
+ "size": 45,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/566195572",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "_",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "call$1: function(_) {\n return;\n}\n",
+ "type": "Null Function(Object)",
+ "measurements": null
+ },
+ "569040701": {
+ "id": "function/569040701",
+ "kind": "function",
+ "name": "call",
+ "size": 142,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/566195573",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(error) {\n this.failure.call$3(H.unwrapException(error), \"js-failure-wrapper\", H.getTraceFromException(error));\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "569040702": {
+ "id": "function/569040702",
+ "kind": "function",
+ "name": "call",
+ "size": 602,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/566195574",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "event",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function($event) {\n var code, error, stackTrace, t1, $status, exception;\n t1 = this.xhr;\n $status = t1.status;\n if ($status !== 200)\n this.failure.call$3(\"Request status: \" + $status, \"worker xhr\", null);\n code = t1.responseText;\n try {\n new Function(code)();\n this.success.call$0();\n } catch (exception) {\n error = H.unwrapException(exception);\n stackTrace = H.getTraceFromException(exception);\n this.failure.call$3(error, \"evaluating the code in worker xhr\", stackTrace);\n }\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "569040703": {
+ "id": "function/569040703",
+ "kind": "function",
+ "name": "call",
+ "size": 88,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/566195575",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "e",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(e) {\n this.failure.call$3(e, \"xhr error handler\", null);\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "569040704": {
+ "id": "function/569040704",
+ "kind": "function",
+ "name": "call",
+ "size": 88,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/566195576",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "e",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(e) {\n this.failure.call$3(e, \"xhr abort handler\", null);\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "573775196": {
+ "id": "function/573775196",
+ "kind": "function",
+ "name": "JsLinkedHashMap.es6",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JsLinkedHashMap<JsLinkedHashMap.K,JsLinkedHashMap.V>",
+ "inferredReturnType": "[subclass=JsLinkedHashMap]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "JsLinkedHashMap<JsLinkedHashMap.K,JsLinkedHashMap.V> Function()",
+ "measurements": null
+ },
+ "574550003": {
+ "id": "function/574550003",
+ "kind": "function",
+ "name": "_completeError",
+ "size": 260,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_completeError$2: function(error, stackTrace) {\n var listeners = this._removeListeners$0();\n this._state = 8;\n this._resultOrListeners = new P.AsyncError(error, stackTrace);\n P._Future__propagateToListeners(this, listeners);\n}\n",
+ "type": "void Function(Object,[StackTrace])",
+ "measurements": null
+ },
+ "580865640": {
+ "id": "function/580865640",
+ "kind": "function",
+ "name": "iterableToFullString",
+ "size": 712,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/812154630",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "iterable",
+ "type": "Union([subclass=JSArray], [subclass=_LinkedHashSet])",
+ "declaredType": "Iterable<dynamic>"
+ },
+ {
+ "name": "leftDelimiter",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "rightDelimiter",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "IterableBase_iterableToFullString: function(iterable, leftDelimiter, rightDelimiter) {\n var buffer, t1, t2;\n if (P._isToStringVisiting(iterable))\n return leftDelimiter + \"...\" + rightDelimiter;\n buffer = new P.StringBuffer(leftDelimiter);\n t1 = $.$get$_toStringVisiting();\n t1.push(iterable);\n try {\n t2 = buffer;\n t2._contents = P.StringBuffer__writeAll(t2.get$_contents(), iterable, \", \");\n } finally {\n if (0 >= t1.length)\n return H.ioore(t1, -1);\n t1.pop();\n }\n t1 = buffer;\n t1._contents = t1.get$_contents() + rightDelimiter;\n t1 = buffer.get$_contents();\n return t1.charCodeAt(0) == 0 ? t1 : t1;\n}\n",
+ "type": "String Function(Iterable<dynamic>,[String,String])",
+ "measurements": null
+ },
+ "581270226": {
+ "id": "function/581270226",
+ "kind": "function",
+ "name": "ListIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ListIterator]",
+ "parameters": [
+ {
+ "name": "iterable",
+ "type": "[exact=SubListIterable]",
+ "declaredType": "Iterable<ListIterator.E>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(Iterable<ListIterator.E>)",
+ "measurements": null
+ },
+ "585544091": {
+ "id": "function/585544091",
+ "kind": "function",
+ "name": "_newLinkedCell",
+ "size": 620,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "LinkedHashMapCell",
+ "inferredReturnType": "[exact=LinkedHashMapCell]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.K"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.V"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "__js_helper$_newLinkedCell$2: function(key, value) {\n var cell, last;\n cell = new H.LinkedHashMapCell(key, value, null, null);\n if (this.__js_helper$_first == null) {\n this.__js_helper$_last = cell;\n this.__js_helper$_first = cell;\n } else {\n last = this.__js_helper$_last;\n cell.__js_helper$_previous = last;\n last.__js_helper$_next = cell;\n this.__js_helper$_last = cell;\n }\n ++this.__js_helper$_length;\n this.__js_helper$_modifications = this.__js_helper$_modifications + 1 & 67108863;\n return cell;\n}\n",
+ "type": "LinkedHashMapCell Function(JsLinkedHashMap.K,JsLinkedHashMap.V)",
+ "measurements": null
+ },
+ "586712659": {
+ "id": "function/586712659",
+ "kind": "function",
+ "name": "call",
+ "size": 929,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/830531955",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var asyncError, e, s, t1, t2, exception, t3, t4;\n try {\n asyncError = this._box_1.source._resultOrListeners;\n t1 = this.listener;\n if (t1.matchesErrorTest$1(asyncError) === true && t1.errorCallback != null) {\n t2 = this._box_0;\n t2.listenerValueOrError = t1.handleError$1(asyncError);\n t2.listenerHasError = false;\n }\n } catch (exception) {\n e = H.unwrapException(exception);\n s = H.getTraceFromException(exception);\n t1 = this._box_1;\n t2 = t1.source._resultOrListeners.get$error();\n t3 = e;\n t4 = this._box_0;\n if (t2 == null ? t3 == null : t2 === t3)\n t4.listenerValueOrError = t1.source._resultOrListeners;\n else\n t4.listenerValueOrError = new P.AsyncError(e, s);\n t4.listenerHasError = true;\n }\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "599927967": {
+ "id": "function/599927967",
+ "kind": "function",
+ "name": "_clearPendingComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function()",
+ "measurements": null
+ },
+ "601638462": {
+ "id": "function/601638462",
+ "kind": "function",
+ "name": "call",
+ "size": 557,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/21475",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "context",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$3: function(error, context, stackTrace) {\n var t1, t2;\n t1 = $.$get$_eventLog();\n t2 = this.hunkName;\n t1.push(\" - download failed: \" + t2 + \" (context: \" + context + \")\");\n $.$get$_loadingLibraries().$indexSet(0, t2, null);\n if (stackTrace == null)\n stackTrace = P.StackTrace_current();\n this.completer.completeError$2(new P.DeferredLoadException(\"Loading \" + H.S(this._box_0.uri) + \" failed: \" + H.S(error) + \"\\nevent log:\\n\" + C.JSArray_methods.join$1(t1, \"\\n\") + \"\\n\"), stackTrace);\n}\n",
+ "type": "void Function(dynamic,String,StackTrace)",
+ "measurements": null
+ },
+ "603355140": {
+ "id": "function/603355140",
+ "kind": "function",
+ "name": "call",
+ "size": 60,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/817717319",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.callback.call$0();\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "606513838": {
+ "id": "function/606513838",
+ "kind": "function",
+ "name": "printToConsole",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "line",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(String)",
+ "measurements": null
+ },
+ "606572177": {
+ "id": "function/606572177",
+ "kind": "function",
+ "name": "ArgumentError.value",
+ "size": 131,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ArgumentError]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null|exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": "ArgumentError$value: function(value, $name, message) {\n return new P.ArgumentError(true, value, $name, message);\n}\n",
+ "type": "dynamic Function(dynamic,[String,dynamic])",
+ "measurements": null
+ },
+ "607704865": {
+ "id": "function/607704865",
+ "kind": "function",
+ "name": "substitute",
+ "size": 479,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "substitution",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "substitute: function(substitution, $arguments) {\n if (substitution == null)\n return $arguments;\n substitution = substitution.apply(null, $arguments);\n if (substitution == null)\n return;\n if (typeof substitution === \"object\" && substitution !== null && substitution.constructor === Array)\n return substitution;\n if (typeof substitution == \"function\")\n return substitution.apply(null, $arguments);\n return $arguments;\n}\n",
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "608925525": {
+ "id": "function/608925525",
+ "kind": "function",
+ "name": "_scheduleImmediateWithTimer",
+ "size": 175,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_AsyncRun__scheduleImmediateWithTimer: [function(callback) {\n P._TimerImpl$(0, callback);\n}, \"call$1\", \"async__AsyncRun__scheduleImmediateWithTimer$closure\", 4, 0, 3]\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "611761598": {
+ "id": "function/611761598",
+ "kind": "function",
+ "name": "extractPattern",
+ "size": 1056,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=TypeErrorDecoder]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "TypeErrorDecoder_extractPattern: function(message) {\n var match, $arguments, argumentsExpr, expr, method, receiver;\n message = message.replace(String({}), '$receiver$').replace(/[[\\]{}()*+?.\\\\^$|]/g, \"\\\\$&\");\n match = message.match(/\\\\\\$[a-zA-Z]+\\\\\\$/g);\n if (match == null)\n match = [];\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 H.TypeErrorDecoder(message.replace(new RegExp('\\\\\\\\\\\\$arguments\\\\\\\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\\\\\\\$argumentsExpr\\\\\\\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\\\\\\\$expr\\\\\\\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\\\\\\\$method\\\\\\\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\\\\\\\$receiver\\\\\\\\\\\\$', 'g'), '((?:x|[^x])*)'), $arguments, argumentsExpr, expr, method, receiver);\n}\n",
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "613119304": {
+ "id": "function/613119304",
+ "kind": "function",
+ "name": "toString",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/577121337",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return H.S(this.error);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "613322203": {
+ "id": "function/613322203",
+ "kind": "function",
+ "name": "handleUncaughtError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "void Function(dynamic,StackTrace)",
+ "measurements": null
+ },
+ "616072379": {
+ "id": "function/616072379",
+ "kind": "function",
+ "name": "_modified",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function()",
+ "measurements": null
+ },
+ "618126497": {
+ "id": "function/618126497",
+ "kind": "function",
+ "name": "complete",
+ "size": 595,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [
+ "closure/561897310"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "complete$1: function(value) {\n var t1;\n if (this.isSync)\n this._completer.complete$1(value);\n else {\n t1 = H.checkSubtypeV1(value, \"$isFuture\", this.$ti, \"$asFuture\");\n if (t1) {\n t1 = this._completer;\n value.then$2$onError(t1.get$complete(), t1.get$completeError());\n } else\n P.scheduleMicrotask(new P._AsyncAwaitCompleter_complete_closure(this, value));\n }\n}\n",
+ "type": "void Function([dynamic])",
+ "measurements": null
+ },
+ "620005669": {
+ "id": "function/620005669",
+ "kind": "function",
+ "name": "_errorExplanation",
+ "size": 282,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/175705485",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$_errorExplanation: function() {\n if (J.$lt$n(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",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "632290992": {
+ "id": "function/632290992",
+ "kind": "function",
+ "name": "StackOverflowError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/542248491",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": true,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=StackOverflowError]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "633677177": {
+ "id": "function/633677177",
+ "kind": "function",
+ "name": "bindCallback",
+ "size": 278,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [
+ "closure/310226650"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bindCallback.R Function()",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "bindCallback.R Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "bindCallback$1: function(f) {\n return new P._RootZone_bindCallback_closure(this, f);\n}\n",
+ "type": "bindCallback.R Function() Function(bindCallback.R Function())",
+ "measurements": null
+ },
+ "635153575": {
+ "id": "function/635153575",
+ "kind": "function",
+ "name": "_asyncStartSync",
+ "size": 170,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "bodyFunction",
+ "type": "[null|subclass=Object]",
+ "declaredType": "void Function(int,dynamic)"
+ },
+ {
+ "name": "completer",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_AsyncAwaitCompleter<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncStartSync: function(bodyFunction, completer) {\n bodyFunction.call$2(0, null);\n completer.set$isSync(true);\n return completer._completer.future;\n}\n",
+ "type": "dynamic Function(void Function(int,dynamic),_AsyncAwaitCompleter<dynamic>)",
+ "measurements": null
+ },
+ "636061569": {
+ "id": "function/636061569",
+ "kind": "function",
+ "name": "toString",
+ "size": 430,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/17649844",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1, t2;\n t1 = this._method;\n if (t1 == null)\n return \"NoSuchMethodError: \" + H.S(this._message);\n t2 = this._receiver;\n if (t2 == null)\n return \"NoSuchMethodError: method not found: '\" + t1 + \"' (\" + H.S(this._message) + \")\";\n return \"NoSuchMethodError: method not found: '\" + t1 + \"' on '\" + t2 + \"' (\" + H.S(this._message) + \")\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "636443477": {
+ "id": "function/636443477",
+ "kind": "function",
+ "name": "_getBucket",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<LinkedHashMapCell>",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "List<LinkedHashMapCell> Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "638664464": {
+ "id": "function/638664464",
+ "kind": "function",
+ "name": "stringLastIndexOfUnchecked",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[exact=JSString]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "element",
+ "type": "Value([exact=JSString], value: \"/\")",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "start",
+ "type": "[subclass=JSInt]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "638807044": {
+ "id": "function/638807044",
+ "kind": "function",
+ "name": "_setChained",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "source",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function(_Future<dynamic>)",
+ "measurements": null
+ },
+ "639806883": {
+ "id": "function/639806883",
+ "kind": "function",
+ "name": "getArguments",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "640815092": {
+ "id": "function/640815092",
+ "kind": "function",
+ "name": "provokePropertyErrorOnNull",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "642221110": {
+ "id": "function/642221110",
+ "kind": "function",
+ "name": "buildJavaScriptObject",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "642229693": {
+ "id": "function/642229693",
+ "kind": "function",
+ "name": "call",
+ "size": 143,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/581471934",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n $.$get$_eventLog().push(\" - download success: \" + this.hunkName);\n this.completer.complete$1(null);\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "644221207": {
+ "id": "function/644221207",
+ "kind": "function",
+ "name": "scheduleMicrotask",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 6,
+ "code": null,
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "649401243": {
+ "id": "function/649401243",
+ "kind": "function",
+ "name": "_newLinkedCell",
+ "size": 495,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_LinkedHashSetCell",
+ "inferredReturnType": "[exact=_LinkedHashSetCell]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_LinkedHashSet.E"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_newLinkedCell$1: function(element) {\n var cell, last;\n cell = new P._LinkedHashSetCell(element, null, null);\n if (this._first == null) {\n this._last = cell;\n this._first = cell;\n } else {\n last = this._last;\n cell._previous = last;\n last._next = cell;\n this._last = cell;\n }\n ++this._collection$_length;\n this._modifications = this._modifications + 1 & 67108863;\n return cell;\n}\n",
+ "type": "_LinkedHashSetCell Function(_LinkedHashSet.E)",
+ "measurements": null
+ },
+ "650942169": {
+ "id": "function/650942169",
+ "kind": "function",
+ "name": "_rootRunBinary",
+ "size": 345,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_rootRunBinary.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "self",
+ "type": "[null]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "parent",
+ "type": "[null]",
+ "declaredType": "ZoneDelegate"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "_rootRunBinary.R Function(_rootRunBinary.T1,_rootRunBinary.T2)"
+ },
+ {
+ "name": "arg1",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_rootRunBinary.T1"
+ },
+ {
+ "name": "arg2",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_rootRunBinary.T2"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_rootRunBinary: function($self, $parent, zone, f, arg1, arg2) {\n var old, t1;\n t1 = $.Zone__current;\n if (t1 === zone)\n return f.call$2(arg1, arg2);\n $.Zone__current = zone;\n old = t1;\n try {\n t1 = f.call$2(arg1, arg2);\n return t1;\n } finally {\n $.Zone__current = old;\n }\n}\n",
+ "type": "_rootRunBinary.R Function(Zone,ZoneDelegate,Zone,_rootRunBinary.R Function(_rootRunBinary.T1,_rootRunBinary.T2),_rootRunBinary.T1,_rootRunBinary.T2)",
+ "measurements": null
+ },
+ "653699436": {
+ "id": "function/653699436",
+ "kind": "function",
+ "name": "JSArray.markGrowable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JSArray<JSArray.E>",
+ "inferredReturnType": "[exact=JSExtendableArray]",
+ "parameters": [
+ {
+ "name": "allocation",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "JSArray<JSArray.E> Function(dynamic)",
+ "measurements": null
+ },
+ "658082982": {
+ "id": "function/658082982",
+ "kind": "function",
+ "name": "isFunctionSubtypeV1",
+ "size": 2387,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "isFunctionSubtypeV1: function(s, t) {\n var sReturnType, tReturnType, sParameterTypes, tParameterTypes, sOptionalParameterTypes, tOptionalParameterTypes, sParametersLen, tParametersLen, sOptionalParametersLen, tOptionalParametersLen, pos, t1, t2, tPos, sPos;\n if (!('func' in s))\n return false;\n if (\"v\" in s) {\n if (!(\"v\" in t) && \"ret\" in t)\n return false;\n } else if (!(\"v\" in t)) {\n sReturnType = s.ret;\n tReturnType = t.ret;\n if (!(H.isSubtypeV1(sReturnType, tReturnType) || H.isSubtypeV1(tReturnType, sReturnType)))\n return false;\n }\n sParameterTypes = s.args;\n tParameterTypes = t.args;\n sOptionalParameterTypes = s.opt;\n tOptionalParameterTypes = t.opt;\n sParametersLen = sParameterTypes != null ? sParameterTypes.length : 0;\n tParametersLen = tParameterTypes != null ? tParameterTypes.length : 0;\n sOptionalParametersLen = sOptionalParameterTypes != null ? sOptionalParameterTypes.length : 0;\n tOptionalParametersLen = tOptionalParameterTypes != null ? tOptionalParameterTypes.length : 0;\n if (sParametersLen > tParametersLen)\n return false;\n if (sParametersLen + sOptionalParametersLen < tParametersLen + tOptionalParametersLen)\n return false;\n if (sParametersLen === tParametersLen) {\n if (!H.areAssignableV1(sParameterTypes, tParameterTypes, false))\n return false;\n if (!H.areAssignableV1(sOptionalParameterTypes, tOptionalParameterTypes, true))\n return false;\n } else {\n for (pos = 0; pos < sParametersLen; ++pos) {\n t1 = sParameterTypes[pos];\n t2 = tParameterTypes[pos];\n if (!(H.isSubtypeV1(t1, t2) || H.isSubtypeV1(t2, t1)))\n return false;\n }\n for (tPos = pos, sPos = 0; tPos < tParametersLen; ++sPos, ++tPos) {\n t1 = sOptionalParameterTypes[sPos];\n t2 = tParameterTypes[tPos];\n if (!(H.isSubtypeV1(t1, t2) || H.isSubtypeV1(t2, t1)))\n return false;\n }\n for (tPos = 0; tPos < tOptionalParametersLen; ++sPos, ++tPos) {\n t1 = sOptionalParameterTypes[sPos];\n t2 = tOptionalParameterTypes[tPos];\n if (!(H.isSubtypeV1(t1, t2) || H.isSubtypeV1(t2, t1)))\n return false;\n }\n }\n return H.areAssignableMapsV1(s.named, t.named);\n}\n",
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "658921946": {
+ "id": "function/658921946",
+ "kind": "function",
+ "name": "_rootScheduleMicrotask",
+ "size": 239,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "self",
+ "type": "[null]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "parent",
+ "type": "[null]",
+ "declaredType": "ZoneDelegate"
+ },
+ {
+ "name": "zone",
+ "type": "[exact=_RootZone]",
+ "declaredType": "Zone"
+ },
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_rootScheduleMicrotask: function($self, $parent, zone, f) {\n var t1 = C.C__RootZone !== zone;\n if (t1)\n f = !(!t1 || false) ? zone.bindCallbackGuarded$1(f) : zone.bindCallback$1(f);\n P._scheduleAsyncCallback(f);\n}\n",
+ "type": "void Function(Zone,ZoneDelegate,Zone,void Function())",
+ "measurements": null
+ },
+ "663282901": {
+ "id": "function/663282901",
+ "kind": "function",
+ "name": "_wrapJsFunctionForAsync",
+ "size": 627,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [
+ "closure/629631311"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void Function(int,dynamic)",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_wrapJsFunctionForAsync: function($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 }($function, 1);\n return $.Zone__current.registerBinaryCallback$1(new P._wrapJsFunctionForAsync_closure($protected));\n}\n",
+ "type": "void Function(int,dynamic) Function(dynamic)",
+ "measurements": null
+ },
+ "664449932": {
+ "id": "function/664449932",
+ "kind": "function",
+ "name": "_asyncComplete",
+ "size": 508,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [
+ "closure/379635163"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_asyncComplete$1: function(value) {\n var t1 = H.checkSubtypeV1(value, \"$isFuture\", this.$ti, \"$asFuture\");\n if (t1) {\n this._chainFuture$1(value);\n return;\n }\n this._state = 1;\n t1 = this._zone;\n t1.toString;\n P._rootScheduleMicrotask(null, null, t1, new P._Future__asyncComplete_closure(this, value));\n}\n",
+ "type": "void Function(dynamic)",
+ "measurements": null
+ },
+ "665416673": {
+ "id": "function/665416673",
+ "kind": "function",
+ "name": "[]",
+ "size": 706,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "JsLinkedHashMap.V",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "$index: function(_, key) {\n var strings, cell, t1, nums;\n if (typeof key === \"string\") {\n strings = this.__js_helper$_strings;\n if (strings == null)\n return;\n cell = this._getTableCell$2(strings, key);\n t1 = cell == null ? null : cell.get$hashMapCellValue();\n return t1;\n } else if (typeof key === \"number\" && (key & 0x3ffffff) === key) {\n nums = this.__js_helper$_nums;\n if (nums == null)\n return;\n cell = this._getTableCell$2(nums, key);\n t1 = cell == null ? null : cell.get$hashMapCellValue();\n return t1;\n } else\n return this.internalGet$1(key);\n}\n",
+ "type": "JsLinkedHashMap.V Function(Object)",
+ "measurements": null
+ },
+ "665676035": {
+ "id": "function/665676035",
+ "kind": "function",
+ "name": "isGenericFunctionTypeParameter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "667149426": {
+ "id": "function/667149426",
+ "kind": "function",
+ "name": "call",
+ "size": 81,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/379635163",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.$this._completeWithValue$1(this.value);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "668300184": {
+ "id": "function/668300184",
+ "kind": "function",
+ "name": "closureFromTearOff",
+ "size": 368,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "functions",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "reflectionInfo",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "isStatic",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "jsArguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "closureFromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, $name) {\n var t1, t2;\n t1 = J.JSArray_markFixedList(functions);\n t2 = !!J.getInterceptor(reflectionInfo).$isList ? J.JSArray_markFixedList(reflectionInfo) : reflectionInfo;\n return H.Closure_fromTearOff(receiver, t1, t2, !!isStatic, jsArguments, $name);\n}\n",
+ "type": "dynamic Function(dynamic,dynamic,dynamic,dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "669694580": {
+ "id": "function/669694580",
+ "kind": "function",
+ "name": "internalFindBucketIndex",
+ "size": 296,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "bucket",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "internalFindBucketIndex$2: function(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",
+ "type": "int Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "676035370": {
+ "id": "function/676035370",
+ "kind": "function",
+ "name": "_LinkedHashSetIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_LinkedHashSetIterator]",
+ "parameters": [
+ {
+ "name": "_set",
+ "type": "[subclass=_LinkedHashSet]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "_modifications",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,int)",
+ "measurements": null
+ },
+ "679532174": {
+ "id": "function/679532174",
+ "kind": "function",
+ "name": "argumentErrorValue",
+ "size": 104,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "ArgumentError",
+ "inferredReturnType": "[exact=ArgumentError]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "argumentErrorValue: function(object) {\n return new P.ArgumentError(true, object, null, null);\n}\n",
+ "type": "ArgumentError Function(dynamic)",
+ "measurements": null
+ },
+ "681643547": {
+ "id": "function/681643547",
+ "kind": "function",
+ "name": "CyclicInitializationError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/93352366",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=CyclicInitializationError]",
+ "parameters": [
+ {
+ "name": "variableName",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function([String])",
+ "measurements": null
+ },
+ "684612786": {
+ "id": "function/684612786",
+ "kind": "function",
+ "name": "ReflectionInfo",
+ "size": 562,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "ReflectionInfo",
+ "inferredReturnType": "[null|exact=ReflectionInfo]",
+ "parameters": [
+ {
+ "name": "jsFunction",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "ReflectionInfo_ReflectionInfo: function(jsFunction) {\n var data, requiredParametersInfo, optionalParametersInfo;\n data = jsFunction.$reflectionInfo;\n if (data == null)\n return;\n data = J.JSArray_markFixedList(data);\n requiredParametersInfo = data[0];\n optionalParametersInfo = data[1];\n return new H.ReflectionInfo(jsFunction, data, (requiredParametersInfo & 2) === 2, requiredParametersInfo >> 2, optionalParametersInfo >> 1, (optionalParametersInfo & 1) === 1, data[2], null);\n}\n",
+ "type": "ReflectionInfo Function(dynamic)",
+ "measurements": null
+ },
+ "687991937": {
+ "id": "function/687991937",
+ "kind": "function",
+ "name": "_supportsEs6Maps",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "689069465": {
+ "id": "function/689069465",
+ "kind": "function",
+ "name": "isSubtypeV1",
+ "size": 1215,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "isSubtypeV1: function(s, t) {\n var t1, typeOfS, t2, typeOfT, typeOfTString, substitution;\n if (s === t)\n return true;\n if (s == null || t == null)\n return true;\n if (typeof s === \"number\")\n return false;\n if (typeof t === \"number\")\n return false;\n if (s.builtin$cls === \"Null\")\n return true;\n if ('func' in t)\n return H.isFunctionSubtypeV1(s, t);\n if ('func' in s)\n return t.builtin$cls === \"Function\" || t.builtin$cls === \"Object\";\n t1 = typeof s === \"object\" && s !== null && s.constructor === Array;\n typeOfS = t1 ? s[0] : s;\n t2 = typeof t === \"object\" && t !== null && t.constructor === Array;\n typeOfT = t2 ? t[0] : t;\n if (typeOfT !== typeOfS) {\n typeOfTString = H.runtimeTypeToString(typeOfT, null);\n if (!('$is' + typeOfTString in typeOfS.prototype))\n return false;\n substitution = typeOfS.prototype[\"$as\" + typeOfTString];\n } else\n substitution = null;\n if (!t1 && substitution == null || !t2)\n return true;\n t1 = t1 ? s.slice(1) : null;\n t2 = t.slice(1);\n return H.areSubtypesV1(H.substitute(substitution, t1), t2);\n}\n",
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "689271731": {
+ "id": "function/689271731",
+ "kind": "function",
+ "name": "forEach",
+ "size": 460,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "action",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "forEach$1: function(_, action) {\n var cell, modifications;\n cell = this.__js_helper$_first;\n modifications = this.__js_helper$_modifications;\n for (; cell != null;) {\n action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);\n if (modifications !== this.__js_helper$_modifications)\n throw H.wrapException(P.ConcurrentModificationError$(this));\n cell = cell.__js_helper$_next;\n }\n}\n",
+ "type": "void Function(void Function(JsLinkedHashMap.K,JsLinkedHashMap.V))",
+ "measurements": null
+ },
+ "692185405": {
+ "id": "function/692185405",
+ "kind": "function",
+ "name": "_onValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic Function(_FutureListener.S)",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(_FutureListener.S) Function()",
+ "measurements": null
+ },
+ "693686431": {
+ "id": "function/693686431",
+ "kind": "function",
+ "name": "_AsyncAwaitCompleter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_AsyncAwaitCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "698206676": {
+ "id": "function/698206676",
+ "kind": "function",
+ "name": "buildJavaScriptObjectWithNonClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "701409225": {
+ "id": "function/701409225",
+ "kind": "function",
+ "name": "ConcurrentModificationError",
+ "size": 134,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/36312556",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ConcurrentModificationError]",
+ "parameters": [
+ {
+ "name": "modifiedObject",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "ConcurrentModificationError$: function(modifiedObject) {\n return new P.ConcurrentModificationError(modifiedObject);\n}\n",
+ "type": "dynamic Function([Object])",
+ "measurements": null
+ },
+ "702114504": {
+ "id": "function/702114504",
+ "kind": "function",
+ "name": "_addHashTableEntry",
+ "size": 299,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.K"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.V"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "__js_helper$_addHashTableEntry$3: function(table, key, value) {\n var cell = this._getTableCell$2(table, key);\n if (cell == null)\n this._setTableEntry$3(table, key, this.__js_helper$_newLinkedCell$2(key, value));\n else\n cell.set$hashMapCellValue(value);\n}\n",
+ "type": "void Function(dynamic,JsLinkedHashMap.K,JsLinkedHashMap.V)",
+ "measurements": null
+ },
+ "705889064": {
+ "id": "function/705889064",
+ "kind": "function",
+ "name": "==",
+ "size": 322,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$eq: function(_, other) {\n if (other == null)\n return false;\n if (this === other)\n return true;\n if (!(other instanceof H.BoundClosure))\n return false;\n return this._self === other._self && this._target === other._target && this._receiver === other._receiver;\n}\n",
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "708419578": {
+ "id": "function/708419578",
+ "kind": "function",
+ "name": "checkArgumentsV1",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "substitution",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "arguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "checks",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic,dynamic,dynamic)",
+ "measurements": null
+ },
+ "710092165": {
+ "id": "function/710092165",
+ "kind": "function",
+ "name": "isNotIdentical",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "710611585": {
+ "id": "function/710611585",
+ "kind": "function",
+ "name": "_makeAsyncAwaitCompleter",
+ "size": 179,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Completer<_makeAsyncAwaitCompleter.T>",
+ "inferredReturnType": "[exact=_AsyncAwaitCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "_makeAsyncAwaitCompleter: function() {\n return new P._AsyncAwaitCompleter(new P._SyncCompleter(new P._Future(0, $.Zone__current, null, [null]), [null]), false, [null]);\n}\n",
+ "type": "Completer<_makeAsyncAwaitCompleter.T> Function()",
+ "measurements": null
+ },
+ "712365042": {
+ "id": "function/712365042",
+ "kind": "function",
+ "name": "objectHashCode",
+ "size": 227,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Primitives_objectHashCode: function(object) {\n var hash = object.$identityHash;\n if (hash == null) {\n hash = Math.random() * 0x3fffffff | 0;\n object.$identityHash = hash;\n }\n return hash;\n}\n",
+ "type": "int Function(dynamic)",
+ "measurements": null
+ },
+ "714600619": {
+ "id": "function/714600619",
+ "kind": "function",
+ "name": "diagnoseIndexError",
+ "size": 417,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Error",
+ "inferredReturnType": "[subclass=ArgumentError]",
+ "parameters": [
+ {
+ "name": "indexable",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "index",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "diagnoseIndexError: function(indexable, index) {\n var $length;\n if (typeof index !== \"number\" || Math.floor(index) !== index)\n return new P.ArgumentError(true, index, \"index\", null);\n $length = J.get$length$as(indexable);\n if (index < 0 || index >= $length)\n return P.IndexError$(index, indexable, \"index\", null, $length);\n return P.RangeError$value(index, \"index\", null);\n}\n",
+ "type": "Error Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "717417998": {
+ "id": "function/717417998",
+ "kind": "function",
+ "name": "_Future.immediateError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic,[StackTrace])",
+ "measurements": null
+ },
+ "717561594": {
+ "id": "function/717561594",
+ "kind": "function",
+ "name": "requiresPreamble",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "717852932": {
+ "id": "function/717852932",
+ "kind": "function",
+ "name": "_errorExplanation",
+ "size": 62,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$_errorExplanation: function() {\n return \"\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "722405802": {
+ "id": "function/722405802",
+ "kind": "function",
+ "name": "_isChained",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "722993348": {
+ "id": "function/722993348",
+ "kind": "function",
+ "name": "hasField",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "724475372": {
+ "id": "function/724475372",
+ "kind": "function",
+ "name": "selfFieldName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes static)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "725505159": {
+ "id": "function/725505159",
+ "kind": "function",
+ "name": "matchTypeError",
+ "size": 714,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "matchTypeError$1: function(message) {\n var match, result, t1;\n match = new RegExp(this._pattern).exec(message);\n if (match == null)\n return;\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",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "726344781": {
+ "id": "function/726344781",
+ "kind": "function",
+ "name": "call",
+ "size": 76,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/558424951",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n return this.$this.runGuarded$1(this.f);\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "726979110": {
+ "id": "function/726979110",
+ "kind": "function",
+ "name": "+",
+ "size": 188,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$add: function(receiver, other) {\n if (typeof other !== \"string\")\n throw H.wrapException(P.ArgumentError$value(other, null, null));\n return receiver + other;\n}\n",
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "730595126": {
+ "id": "function/730595126",
+ "kind": "function",
+ "name": "toString",
+ "size": 66,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/595024907",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"Throw of null.\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Throw of null.\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "731794670": {
+ "id": "function/731794670",
+ "kind": "function",
+ "name": "keys",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Iterable<JsLinkedHashMap.K>",
+ "inferredReturnType": "[exact=LinkedHashMapKeyIterable]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Iterable<JsLinkedHashMap.K> Function()",
+ "measurements": null
+ },
+ "734834560": {
+ "id": "function/734834560",
+ "kind": "function",
+ "name": "builtinIsSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(dynamic,String)",
+ "measurements": null
+ },
+ "736875717": {
+ "id": "function/736875717",
+ "kind": "function",
+ "name": "getLength",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "array",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 8,
+ "code": null,
+ "type": "int Function(dynamic)",
+ "measurements": null
+ },
+ "737782244": {
+ "id": "function/737782244",
+ "kind": "function",
+ "name": "_functionRtiToStringV1",
+ "size": 1501,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "rti",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "onTypeVariable",
+ "type": "[null]",
+ "declaredType": "String Function(int)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_functionRtiToStringV1: function(rti, onTypeVariable) {\n var returnTypeText, $arguments, t1, argumentsText, sep, _i, argument, optionalArguments, namedArguments, t2, t3;\n returnTypeText = !!rti.v ? \"void\" : H.runtimeTypeToStringV1(rti.ret, onTypeVariable);\n if (\"args\" in rti) {\n $arguments = rti.args;\n for (t1 = $arguments.length, argumentsText = \"\", sep = \"\", _i = 0; _i < t1; ++_i, sep = \", \") {\n argument = $arguments[_i];\n argumentsText = argumentsText + sep + H.runtimeTypeToStringV1(argument, onTypeVariable);\n }\n } else {\n argumentsText = \"\";\n sep = \"\";\n }\n if (\"opt\" in rti) {\n optionalArguments = rti.opt;\n argumentsText += sep + \"[\";\n for (t1 = optionalArguments.length, sep = \"\", _i = 0; _i < t1; ++_i, sep = \", \") {\n argument = optionalArguments[_i];\n argumentsText = argumentsText + sep + H.runtimeTypeToStringV1(argument, onTypeVariable);\n }\n argumentsText += \"]\";\n }\n if (\"named\" in rti) {\n namedArguments = rti.named;\n argumentsText += sep + \"{\";\n for (t1 = H.extractKeys(namedArguments), t2 = t1.length, sep = \"\", _i = 0; _i < t2; ++_i, sep = \", \") {\n t3 = t1[_i];\n argumentsText = argumentsText + sep + H.runtimeTypeToStringV1(namedArguments[t3], onTypeVariable) + (\" \" + H.S(t3));\n }\n argumentsText += \"}\";\n }\n return \"(\" + argumentsText + \") => \" + returnTypeText;\n}\n",
+ "type": "String Function(dynamic,String Function(int))",
+ "measurements": null
+ },
+ "738104072": {
+ "id": "function/738104072",
+ "kind": "function",
+ "name": "+",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "JSNumber",
+ "inferredReturnType": "[subclass=JSNumber]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[subclass=JSInt]",
+ "declaredType": "num"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$add: function(receiver, other) {\n return receiver + other;\n}\n",
+ "type": "JSNumber Function(num)",
+ "measurements": null
+ },
+ "739160294": {
+ "id": "function/739160294",
+ "kind": "function",
+ "name": "LinkedHashMapKeyIterable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/373504153",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=LinkedHashMapKeyIterable]",
+ "parameters": [
+ {
+ "name": "_map",
+ "type": "[subclass=JsLinkedHashMap]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "741666293": {
+ "id": "function/741666293",
+ "kind": "function",
+ "name": "call",
+ "size": 654,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/965562379",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<dynamic>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "i",
+ "type": "[subclass=JSPositiveInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(i) {\n var t1 = this.hashes;\n if (i >= t1.length)\n return H.ioore(t1, i);\n if (this.isHunkLoaded(t1[i])) {\n t1 = this.waitingForLoad;\n if (i >= t1.length)\n return H.ioore(t1, i);\n t1[i] = false;\n t1 = new P._Future(0, $.Zone__current, null, [null]);\n t1._asyncComplete$1(null);\n return t1;\n }\n t1 = this.uris;\n if (i >= t1.length)\n return H.ioore(t1, i);\n return H._loadHunk(t1[i]).then$1(new H.loadDeferredLibrary_loadAndInitialize_closure(this.waitingForLoad, i, this.initializeSomeLoadedHunks));\n}\n",
+ "type": "Future<dynamic> Function(int)",
+ "measurements": null
+ },
+ "745741399": {
+ "id": "function/745741399",
+ "kind": "function",
+ "name": "toString",
+ "size": 256,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/36312556",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1 = this.modifiedObject;\n if (t1 == null)\n return \"Concurrent modification during iteration.\";\n return \"Concurrent modification during iteration: \" + H.S(P.Error_safeToString(t1)) + \".\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "748173162": {
+ "id": "function/748173162",
+ "kind": "function",
+ "name": "handlesComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "749970393": {
+ "id": "function/749970393",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 85,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/627219877",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(_) {\n return H.Primitives_objectHashCode(this);\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "751200407": {
+ "id": "function/751200407",
+ "kind": "function",
+ "name": "joinArguments",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "types",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "startIndex",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(dynamic,int)",
+ "measurements": null
+ },
+ "752981084": {
+ "id": "function/752981084",
+ "kind": "function",
+ "name": "_shrOtherPositive",
+ "size": 276,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "num",
+ "inferredReturnType": "[subclass=JSUInt32]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "num"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "_shrOtherPositive$1: function(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",
+ "type": "num Function(num)",
+ "measurements": null
+ },
+ "754498726": {
+ "id": "function/754498726",
+ "kind": "function",
+ "name": "Future.error",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/438137149",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "Future<Future.T>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Future<Future.T> Function(Object,[StackTrace])",
+ "measurements": null
+ },
+ "754771250": {
+ "id": "function/754771250",
+ "kind": "function",
+ "name": "DeferredLoadException",
+ "size": 98,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/410333734",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=DeferredLoadException]",
+ "parameters": [
+ {
+ "name": "_s",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": "DeferredLoadException$: function(_s) {\n return new P.DeferredLoadException(_s);\n}\n",
+ "type": "dynamic Function(String)",
+ "measurements": null
+ },
+ "756575134": {
+ "id": "function/756575134",
+ "kind": "function",
+ "name": "contains",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "userAgent",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "name",
+ "type": "Value([exact=JSString], value: \"call stack\")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(String,String)",
+ "measurements": null
+ },
+ "756812986": {
+ "id": "function/756812986",
+ "kind": "function",
+ "name": "length",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n return this.__js_helper$_length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "762030080": {
+ "id": "function/762030080",
+ "kind": "function",
+ "name": "receiverFieldName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads static; writes static)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "764768055": {
+ "id": "function/764768055",
+ "kind": "function",
+ "name": "areAssignableMapsV1",
+ "size": 574,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "areAssignableMapsV1: function(s, t) {\n var names, t1, i, $name, tType, sType;\n if (t == null)\n return true;\n if (s == null)\n return false;\n names = J.JSArray_markFixedList(Object.getOwnPropertyNames(t));\n for (t1 = names.length, i = 0; i < t1; ++i) {\n $name = names[i];\n if (!Object.hasOwnProperty.call(s, $name))\n return false;\n tType = t[$name];\n sType = s[$name];\n if (!(H.isSubtypeV1(tType, sType) || H.isSubtypeV1(sType, tType)))\n return false;\n }\n return true;\n}\n",
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "766396929": {
+ "id": "function/766396929",
+ "kind": "function",
+ "name": "completeError",
+ "size": 471,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/770824752",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "completeError$2: [function(error, stackTrace) {\n if (error == null)\n error = new P.NullThrownError();\n if (this.future._state !== 0)\n throw H.wrapException(P.StateError$(\"Future already completed\"));\n $.Zone__current.toString;\n this._completeError$2(error, stackTrace);\n}, function(error) {\n return this.completeError$2(error, null);\n}, \"completeError$1\", \"call$2\", \"call$1\", \"get$completeError\", 4, 2, 14]\n",
+ "type": "void Function(Object,[StackTrace])",
+ "measurements": null
+ },
+ "772250195": {
+ "id": "function/772250195",
+ "kind": "function",
+ "name": "checkDeferredIsLoaded",
+ "size": 178,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "loadId",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ },
+ {
+ "name": "uri",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "checkDeferredIsLoaded: function(loadId, uri) {\n if (!$.$get$_loadedLibraries().contains$1(0, loadId))\n throw H.wrapException(new H.DeferredNotLoadedError(uri));\n}\n",
+ "type": "void Function(String,String)",
+ "measurements": null
+ },
+ "772606842": {
+ "id": "function/772606842",
+ "kind": "function",
+ "name": "_chainSource",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_Future<dynamic>",
+ "inferredReturnType": "[null|exact=_Future]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "_Future<dynamic> Function()",
+ "measurements": null
+ },
+ "773230206": {
+ "id": "function/773230206",
+ "kind": "function",
+ "name": "_TimerImpl",
+ "size": 372,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/32494041",
+ "children": [
+ "closure/637416128"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_TimerImpl]",
+ "parameters": [
+ {
+ "name": "milliseconds",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_TimerImpl$: function(milliseconds, callback) {\n var t1 = new P._TimerImpl(true, null, 0);\n t1._TimerImpl$2(milliseconds, callback);\n return t1;\n}\n",
+ "type": "dynamic Function(int,void Function())",
+ "measurements": null
+ },
+ "773528822": {
+ "id": "function/773528822",
+ "kind": "function",
+ "name": "isEmpty",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "778541068": {
+ "id": "function/778541068",
+ "kind": "function",
+ "name": "_isToStringVisiting",
+ "size": 196,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "o",
+ "type": "Union([subclass=JsLinkedHashMap], [subtype=Iterable])",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_isToStringVisiting: function(o) {\n var i, t1;\n for (i = 0; t1 = $.$get$_toStringVisiting(), i < t1.length; ++i)\n if (o === t1[i])\n return true;\n return false;\n}\n",
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "779765691": {
+ "id": "function/779765691",
+ "kind": "function",
+ "name": "_AsyncCompleter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/714718140",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_AsyncCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "784650927": {
+ "id": "function/784650927",
+ "kind": "function",
+ "name": "length",
+ "size": 222,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n var $length, t1;\n $length = J.get$length$as(this.__internal$_iterable);\n t1 = this._start;\n if (t1 >= $length)\n return 0;\n return $length - t1;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "788412943": {
+ "id": "function/788412943",
+ "kind": "function",
+ "name": "throwCyclicInit",
+ "size": 119,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[empty]",
+ "parameters": [
+ {
+ "name": "staticName",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "throwCyclicInit: function(staticName) {\n throw H.wrapException(new P.CyclicInitializationError(staticName));\n}\n",
+ "type": "void Function(String)",
+ "measurements": null
+ },
+ "789545114": {
+ "id": "function/789545114",
+ "kind": "function",
+ "name": "_writeAll",
+ "size": 563,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "objects",
+ "type": "Union([subclass=JSArray], [subclass=_LinkedHashSet])",
+ "declaredType": "Iterable<dynamic>"
+ },
+ {
+ "name": "separator",
+ "type": "Value([exact=JSString], value: \", \")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "StringBuffer__writeAll: function(string, objects, separator) {\n var iterator = J.get$iterator$a(objects);\n if (!iterator.moveNext$0())\n return string;\n if (separator.length === 0) {\n do\n string += H.S(iterator.get$current());\n while (iterator.moveNext$0());\n } else {\n string += H.S(iterator.get$current());\n for (; iterator.moveNext$0();)\n string = string + separator + H.S(iterator.get$current());\n }\n return string;\n}\n",
+ "type": "String Function(String,Iterable<dynamic>,String)",
+ "measurements": null
+ },
+ "791079680": {
+ "id": "function/791079680",
+ "kind": "function",
+ "name": "selfOf",
+ "size": 82,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "closure",
+ "type": "[exact=BoundClosure]",
+ "declaredType": "BoundClosure"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "BoundClosure_selfOf: function(closure) {\n return closure._self;\n}\n",
+ "type": "dynamic Function(BoundClosure)",
+ "measurements": null
+ },
+ "793410068": {
+ "id": "function/793410068",
+ "kind": "function",
+ "name": "toString",
+ "size": 124,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/27679401",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n var t1 = this._message;\n return t1.length === 0 ? \"Error\" : \"Error: \" + t1;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "795411795": {
+ "id": "function/795411795",
+ "kind": "function",
+ "name": "matchesErrorTest",
+ "size": 181,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "asyncError",
+ "type": "[null|exact=AsyncError]",
+ "declaredType": "AsyncError"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "matchesErrorTest$1: function(asyncError) {\n if (this.state !== 6)\n return true;\n return this.result._zone.runUnary$2(this.callback, asyncError.error);\n}\n",
+ "type": "bool Function(AsyncError)",
+ "measurements": null
+ },
+ "796179660": {
+ "id": "function/796179660",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 96,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/86936801",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return H.Primitives_objectHashCode(receiver);\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "797212862": {
+ "id": "function/797212862",
+ "kind": "function",
+ "name": "call",
+ "size": 117,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/953553118",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(value) {\n var t1 = this.target;\n t1._state = 0;\n t1._complete$1(value);\n}\n",
+ "type": "Null Function(dynamic)",
+ "measurements": null
+ },
+ "797212863": {
+ "id": "function/797212863",
+ "kind": "function",
+ "name": "call",
+ "size": 176,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/953553119",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$2: function(error, stackTrace) {\n this.target._completeError$2(error, stackTrace);\n}\ncall$1: function(error) {\n return this.call$2(error, null);\n}\n",
+ "type": "Null Function(dynamic,[dynamic])",
+ "measurements": null
+ },
+ "797212864": {
+ "id": "function/797212864",
+ "kind": "function",
+ "name": "call",
+ "size": 82,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/953553120",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.target._completeError$2(this.e, this.s);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "798288240": {
+ "id": "function/798288240",
+ "kind": "function",
+ "name": "isNullType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(Object)",
+ "measurements": null
+ },
+ "806420362": {
+ "id": "function/806420362",
+ "kind": "function",
+ "name": "_Exception",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/217690375",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_Exception]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "Value([exact=JSString], value: \"Unsupported number of arguments for wrapped closure\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function([dynamic])",
+ "measurements": null
+ },
+ "808159833": {
+ "id": "function/808159833",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/481500691",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": null,
+ "type": "int Function()",
+ "measurements": null
+ },
+ "811310425": {
+ "id": "function/811310425",
+ "kind": "function",
+ "name": "call",
+ "size": 447,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/35711406",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n var t1, t2, error;\n t1 = this._box_0;\n t2 = t1.error;\n if (t2 == null) {\n error = new P.NullThrownError();\n t1.error = error;\n t1 = error;\n } else\n t1 = t2;\n t2 = this.stackTrace;\n if (t2 == null)\n throw H.wrapException(t1);\n error = H.wrapException(t1);\n error.stack = J.toString$0$(t2);\n throw error;\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "813370328": {
+ "id": "function/813370328",
+ "kind": "function",
+ "name": "isDartObjectTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "type",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "813862273": {
+ "id": "function/813862273",
+ "kind": "function",
+ "name": "internalGet",
+ "size": 384,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "JsLinkedHashMap.V",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "internalGet$1: function(key) {\n var rest, bucket, index;\n rest = this.__js_helper$_rest;\n if (rest == null)\n return;\n bucket = this._getTableBucket$2(rest, J.get$hashCode$(key) & 0x3ffffff);\n index = this.internalFindBucketIndex$2(bucket, key);\n if (index < 0)\n return;\n return bucket[index].hashMapCellValue;\n}\n",
+ "type": "JsLinkedHashMap.V Function(Object)",
+ "measurements": null
+ },
+ "814002251": {
+ "id": "function/814002251",
+ "kind": "function",
+ "name": "provokePropertyErrorOnUndefined",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function()",
+ "measurements": null
+ },
+ "820195095": {
+ "id": "function/820195095",
+ "kind": "function",
+ "name": "[]=",
+ "size": 1400,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.K"
+ },
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "JsLinkedHashMap.V"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "$indexSet: function(_, key, value) {\n var strings, nums, rest, hash, bucket, index;\n if (typeof key === \"string\") {\n strings = this.__js_helper$_strings;\n if (strings == null) {\n strings = this._newHashTable$0();\n this.__js_helper$_strings = strings;\n }\n this.__js_helper$_addHashTableEntry$3(strings, key, value);\n } else if (typeof key === \"number\" && (key & 0x3ffffff) === key) {\n nums = this.__js_helper$_nums;\n if (nums == null) {\n nums = this._newHashTable$0();\n this.__js_helper$_nums = nums;\n }\n this.__js_helper$_addHashTableEntry$3(nums, key, value);\n } else {\n rest = this.__js_helper$_rest;\n if (rest == null) {\n rest = this._newHashTable$0();\n this.__js_helper$_rest = rest;\n }\n hash = J.get$hashCode$(key) & 0x3ffffff;\n bucket = this._getTableBucket$2(rest, hash);\n if (bucket == null)\n this._setTableEntry$3(rest, hash, [this.__js_helper$_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.__js_helper$_newLinkedCell$2(key, value));\n }\n }\n}\n",
+ "type": "void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)",
+ "measurements": null
+ },
+ "821285776": {
+ "id": "function/821285776",
+ "kind": "function",
+ "name": "getInterceptor",
+ "size": 61,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "getInterceptor: function(object) {\n return void 0;\n}\n",
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "823929753": {
+ "id": "function/823929753",
+ "kind": "function",
+ "name": "_mayComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "827571674": {
+ "id": "function/827571674",
+ "kind": "function",
+ "name": "checkInt",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[subclass=JSInt]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "830798781": {
+ "id": "function/830798781",
+ "kind": "function",
+ "name": "_shrBothPositive",
+ "size": 107,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "num",
+ "inferredReturnType": "[subclass=JSUInt32]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[exact=JSUInt31]",
+ "declaredType": "num"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "_shrBothPositive$1: function(receiver, other) {\n return other > 31 ? 0 : receiver >>> other;\n}\n",
+ "type": "num Function(num)",
+ "measurements": null
+ },
+ "831655802": {
+ "id": "function/831655802",
+ "kind": "function",
+ "name": "_microtaskLoop",
+ "size": 290,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_microtaskLoop: function() {\n var t1, t2;\n for (; t1 = $._nextCallback, t1 != null;) {\n $._lastPriorityCallback = null;\n t2 = t1.next;\n $._nextCallback = t2;\n if (t2 == null)\n $._lastCallback = null;\n t1.callback.call$0();\n }\n}\n",
+ "type": "void Function()",
+ "measurements": null
+ },
+ "834909172": {
+ "id": "function/834909172",
+ "kind": "function",
+ "name": "current",
+ "size": 75,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_LinkedHashSetIterator.E",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$current: function() {\n return this._collection$_current;\n}\n",
+ "type": "_LinkedHashSetIterator.E Function()",
+ "measurements": null
+ },
+ "835692712": {
+ "id": "function/835692712",
+ "kind": "function",
+ "name": "_scheduleAsyncCallback",
+ "size": 460,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_scheduleAsyncCallback: function(callback) {\n var newEntry = new P._AsyncCallbackEntry(callback, null);\n if ($._nextCallback == null) {\n $._lastCallback = newEntry;\n $._nextCallback = newEntry;\n if (!$._isInCallbackLoop)\n $.$get$_AsyncRun__scheduleImmediateClosure().call$1(P.async___startMicrotaskLoop$closure());\n } else {\n $._lastCallback.next = newEntry;\n $._lastCallback = newEntry;\n }\n}\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "837956997": {
+ "id": "function/837956997",
+ "kind": "function",
+ "name": "==",
+ "size": 64,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/627219877",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "other",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "$eq: function(_, other) {\n return this === other;\n}\n",
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "841192189": {
+ "id": "function/841192189",
+ "kind": "function",
+ "name": "RuntimeError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/866150578",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=RuntimeError]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "Value([exact=JSString], value: \"Intercepted function with no arguments.\")",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "843997665": {
+ "id": "function/843997665",
+ "kind": "function",
+ "name": "writeAll",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "objects",
+ "type": "Union([subclass=JSArray], [subclass=_LinkedHashSet])",
+ "declaredType": "Iterable<dynamic>"
+ },
+ {
+ "name": "separator",
+ "type": "Value([exact=JSString], value: \", \")",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "void Function(Iterable<dynamic>,[String])",
+ "measurements": null
+ },
+ "848267879": {
+ "id": "function/848267879",
+ "kind": "function",
+ "name": "toString",
+ "size": 81,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/866150578",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"RuntimeError: \" + this.message;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "852141617": {
+ "id": "function/852141617",
+ "kind": "function",
+ "name": "completeError",
+ "size": 365,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [
+ "closure/741043867"
+ ],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "e",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "st",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "completeError$2: function(e, st) {\n if (this.isSync)\n this._completer.completeError$2(e, st);\n else\n P.scheduleMicrotask(new P._AsyncAwaitCompleter_completeError_closure(this, e, st));\n}\n",
+ "type": "void Function(Object,[StackTrace])",
+ "measurements": null
+ },
+ "852972506": {
+ "id": "function/852972506",
+ "kind": "function",
+ "name": "iterator",
+ "size": 108,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/540398347",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Iterator<ListIterable.E>",
+ "inferredReturnType": "[exact=ListIterator]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$iterator: function(_) {\n return new H.ListIterator(this, this.get$length(this), 0, null);\n}\n",
+ "type": "Iterator<ListIterable.E> Function()",
+ "measurements": null
+ },
+ "853169304": {
+ "id": "function/853169304",
+ "kind": "function",
+ "name": "call",
+ "size": 96,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/181809904",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n P._Future__propagateToListeners(this.$this, this.listener);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "853973218": {
+ "id": "function/853973218",
+ "kind": "function",
+ "name": "_reverseListeners",
+ "size": 292,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_FutureListener<dynamic,dynamic>",
+ "inferredReturnType": "[null|exact=_FutureListener]",
+ "parameters": [
+ {
+ "name": "listeners",
+ "type": "[null|exact=_FutureListener]",
+ "declaredType": "_FutureListener<dynamic,dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 0,
+ "code": "_reverseListeners$1: function(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",
+ "type": "_FutureListener<dynamic,dynamic> Function(_FutureListener<dynamic,dynamic>)",
+ "measurements": null
+ },
+ "854200700": {
+ "id": "function/854200700",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 80,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return receiver & 0x1FFFFFFF;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "860159722": {
+ "id": "function/860159722",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 100,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/351911148",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(_) {\n return P.Object.prototype.get$hashCode.call(this, this);\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "864228238": {
+ "id": "function/864228238",
+ "kind": "function",
+ "name": "printString",
+ "size": 460,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/238986171",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "printString: function(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 window == \"object\")\n return;\n if (typeof print == \"function\") {\n print(string);\n return;\n }\n throw \"Unable to print message: \" + String(string);\n}\n",
+ "type": "void Function(String)",
+ "measurements": null
+ },
+ "869814859": {
+ "id": "function/869814859",
+ "kind": "function",
+ "name": "call",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/69029087",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_Future<dynamic>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "_",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "call$1: function(_) {\n return this.originalSource;\n}\n",
+ "type": "_Future<dynamic> Function(dynamic)",
+ "measurements": null
+ },
+ "870367819": {
+ "id": "function/870367819",
+ "kind": "function",
+ "name": "_isNumericElement",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "873863767": {
+ "id": "function/873863767",
+ "kind": "function",
+ "name": "objectTypeName",
+ "size": 1680,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Primitives_objectTypeName: function(object) {\n var interceptor, interceptorConstructor, interceptorConstructorName, $name, dispatchName, objectConstructor, match, decompiledName, t1;\n interceptor = J.getInterceptor(object);\n interceptorConstructor = interceptor.constructor;\n if (typeof interceptorConstructor == \"function\") {\n interceptorConstructorName = interceptorConstructor.name;\n $name = typeof interceptorConstructorName === \"string\" ? interceptorConstructorName : null;\n } else\n $name = null;\n if ($name == null || interceptor === C.Interceptor_methods || !!J.getInterceptor(object).$isUnknownJavaScriptObject) {\n dispatchName = C.JS_CONST_u2C(object);\n if (dispatchName === \"Object\") {\n objectConstructor = object.constructor;\n if (typeof objectConstructor == \"function\") {\n match = String(objectConstructor).match(/^\\s*function\\s*([\\w$]*)\\s*\\(/);\n decompiledName = match == null ? null : match[1];\n if (typeof decompiledName === \"string\" && /^\\w+$/.test(decompiledName))\n $name = decompiledName;\n }\n if ($name == null)\n $name = dispatchName;\n } else\n $name = dispatchName;\n }\n $name = $name;\n if ($name.length > 1 && C.JSString_methods._codeUnitAt$1($name, 0) === 36)\n $name = C.JSString_methods.substring$1($name, 1);\n t1 = H.joinArgumentsV1(H.getRuntimeTypeInfo(object), 0, null);\n return function(str, names) {\n return str.replace(/[^<,> ]+/g, function(m) {\n return names[m] || m;\n });\n }($name + t1, init.mangledGlobalNames);\n}\n",
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "878987098": {
+ "id": "function/878987098",
+ "kind": "function",
+ "name": "hashCode",
+ "size": 60,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/418854932",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[exact=JSUInt31]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$hashCode: function(receiver) {\n return 0;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "885768717": {
+ "id": "function/885768717",
+ "kind": "function",
+ "name": "ArgumentError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ArgumentError]",
+ "parameters": [
+ {
+ "name": "message",
+ "type": "[null|exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function([dynamic])",
+ "measurements": null
+ },
+ "887884267": {
+ "id": "function/887884267",
+ "kind": "function",
+ "name": "_schedulePriorityAsyncCallback",
+ "size": 656,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_schedulePriorityAsyncCallback: function(callback) {\n var t1, entry, t2;\n t1 = $._nextCallback;\n if (t1 == null) {\n P._scheduleAsyncCallback(callback);\n $._lastPriorityCallback = $._lastCallback;\n return;\n }\n entry = new P._AsyncCallbackEntry(callback, null);\n t2 = $._lastPriorityCallback;\n if (t2 == null) {\n entry.next = t1;\n $._lastPriorityCallback = entry;\n $._nextCallback = entry;\n } else {\n entry.next = t2.next;\n t2.next = entry;\n $._lastPriorityCallback = entry;\n if (entry.next == null)\n $._lastCallback = entry;\n }\n}\n",
+ "type": "void Function(void Function())",
+ "measurements": null
+ },
+ "888466063": {
+ "id": "function/888466063",
+ "kind": "function",
+ "name": "registerBinaryCallback",
+ "size": 65,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "registerBinaryCallback.R Function(registerBinaryCallback.T1,registerBinaryCallback.T2)",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "registerBinaryCallback.R Function(registerBinaryCallback.T1,registerBinaryCallback.T2)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "registerBinaryCallback$1: function(f) {\n return f;\n}\n",
+ "type": "registerBinaryCallback.R Function(registerBinaryCallback.T1,registerBinaryCallback.T2) Function(registerBinaryCallback.R Function(registerBinaryCallback.T1,registerBinaryCallback.T2))",
+ "measurements": null
+ },
+ "889342435": {
+ "id": "function/889342435",
+ "kind": "function",
+ "name": "_getTableBucket",
+ "size": 76,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<LinkedHashMapCell>",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[subclass=JSInt]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "_getTableBucket$2: function(table, key) {\n return table[key];\n}\n",
+ "type": "List<LinkedHashMapCell> Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "890739228": {
+ "id": "function/890739228",
+ "kind": "function",
+ "name": "formatType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "className",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "typeArguments",
+ "type": "[null|subclass=Object]",
+ "declaredType": "List<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(String,List<dynamic>)",
+ "measurements": null
+ },
+ "891910474": {
+ "id": "function/891910474",
+ "kind": "function",
+ "name": "toString",
+ "size": 77,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/476286669",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return P.MapBase_mapToString(this);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "895978326": {
+ "id": "function/895978326",
+ "kind": "function",
+ "name": "_AsyncCallbackEntry",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/733467750",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_AsyncCallbackEntry]",
+ "parameters": [
+ {
+ "name": "callback",
+ "type": "[subclass=Closure]",
+ "declaredType": "void Function()"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "dynamic Function(void Function())",
+ "measurements": null
+ },
+ "897413385": {
+ "id": "function/897413385",
+ "kind": "function",
+ "name": "_getTableCell",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "LinkedHashMapCell",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "key",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 0,
+ "code": "_getTableCell$2: function(table, key) {\n return table[key];\n}\n",
+ "type": "LinkedHashMapCell Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "899124813": {
+ "id": "function/899124813",
+ "kind": "function",
+ "name": "cspForwardInterceptedCall",
+ "size": 1830,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "arity",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "isSuperCall",
+ "type": "[exact=JSBool]",
+ "declaredType": "bool"
+ },
+ {
+ "name": "name",
+ "type": "[null|exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {\n var getSelf, getReceiver;\n getSelf = H.BoundClosure_selfOf;\n getReceiver = H.BoundClosure_receiverOf;\n switch (isSuperCall ? -1 : arity) {\n case 0:\n throw H.wrapException(new H.RuntimeError(\"Intercepted function with no arguments.\"));\n case 1:\n return function(n, s, r) {\n return function() {\n return s(this)[n](r(this));\n };\n }($name, getSelf, getReceiver);\n case 2:\n return function(n, s, r) {\n return function(a) {\n return s(this)[n](r(this), a);\n };\n }($name, getSelf, getReceiver);\n case 3:\n return function(n, s, r) {\n return function(a, b) {\n return s(this)[n](r(this), a, b);\n };\n }($name, getSelf, getReceiver);\n case 4:\n return function(n, s, r) {\n return function(a, b, c) {\n return s(this)[n](r(this), a, b, c);\n };\n }($name, getSelf, getReceiver);\n case 5:\n return function(n, s, r) {\n return function(a, b, c, d) {\n return s(this)[n](r(this), a, b, c, d);\n };\n }($name, getSelf, getReceiver);\n case 6:\n return function(n, s, r) {\n return function(a, b, c, d, e) {\n return s(this)[n](r(this), a, b, c, d, e);\n };\n }($name, getSelf, getReceiver);\n default:\n return function(f, s, r, a) {\n return function() {\n a = [r(this)];\n Array.prototype.push.apply(a, arguments);\n return f.apply(s(this), a);\n };\n }($function, getSelf, getReceiver);\n }\n}\n",
+ "type": "dynamic Function(int,bool,String,dynamic)",
+ "measurements": null
+ },
+ "899674954": {
+ "id": "function/899674954",
+ "kind": "function",
+ "name": "call",
+ "size": 88,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/385965656",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n P._Future__chainCoreFuture(this.value, this.$this);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "901078366": {
+ "id": "function/901078366",
+ "kind": "function",
+ "name": "_setValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_Future.T"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "void Function(_Future.T)",
+ "measurements": null
+ },
+ "904115316": {
+ "id": "function/904115316",
+ "kind": "function",
+ "name": "registerUnaryCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "registerUnaryCallback.R Function(registerUnaryCallback.T)",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "registerUnaryCallback.R Function(registerUnaryCallback.T)"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "registerUnaryCallback.R Function(registerUnaryCallback.T) Function(registerUnaryCallback.R Function(registerUnaryCallback.T))",
+ "measurements": null
+ },
+ "906797235": {
+ "id": "function/906797235",
+ "kind": "function",
+ "name": "receiverOf",
+ "size": 90,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "closure",
+ "type": "[exact=BoundClosure]",
+ "declaredType": "BoundClosure"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "BoundClosure_receiverOf: function(closure) {\n return closure._receiver;\n}\n",
+ "type": "dynamic Function(BoundClosure)",
+ "measurements": null
+ },
+ "906921796": {
+ "id": "function/906921796",
+ "kind": "function",
+ "name": "quoteStringForRegExp",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "907920633": {
+ "id": "function/907920633",
+ "kind": "function",
+ "name": "call",
+ "size": 86,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/745039293",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "result",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(result) {\n return this.bodyFunction.call$2(0, result);\n}\n",
+ "type": "void Function(dynamic)",
+ "measurements": null
+ },
+ "907920634": {
+ "id": "function/907920634",
+ "kind": "function",
+ "name": "call",
+ "size": 131,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/745039294",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$2: function(error, stackTrace) {\n this.bodyFunction.call$2(1, new H.ExceptionAndStackTrace(error, stackTrace));\n}\n",
+ "type": "Null Function(dynamic,StackTrace)",
+ "measurements": null
+ },
+ "919469907": {
+ "id": "function/919469907",
+ "kind": "function",
+ "name": "handlesError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "920500080": {
+ "id": "function/920500080",
+ "kind": "function",
+ "name": "_findBucketIndex",
+ "size": 291,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "bucket",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_findBucketIndex$2: function(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, element))\n return i;\n return -1;\n}\n",
+ "type": "int Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "921486255": {
+ "id": "function/921486255",
+ "kind": "function",
+ "name": "main",
+ "size": 973,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/934372066",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<void>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "main: function() {\n var $async$goto = 0, $async$completer = P._makeAsyncAwaitCompleter(null);\n var $async$main = P._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {\n if ($async$errorCode === 1)\n return P._asyncRethrow($async$result, $async$completer);\n while (true)\n switch ($async$goto) {\n case 0:\n // Function start\n $async$goto = 2;\n return P._asyncAwait(H.loadDeferredLibrary(\"deferred_import\"), $async$main);\n case 2:\n // returning from await.\n H.checkDeferredIsLoaded(\"deferred_import\", \"file:///usr/local/google/home/lorenvs/git/dart2js_info/test/hello_world_deferred/deferred_import.dart\");\n H.printString(C.C_Deferred);\n // implicit return\n return P._asyncReturn(null, $async$completer);\n }\n });\n return P._asyncStartSync($async$main, $async$completer);\n}\n",
+ "type": "Future<void> Function()",
+ "measurements": null
+ },
+ "921677904": {
+ "id": "function/921677904",
+ "kind": "function",
+ "name": "_iterablePartsToStrings",
+ "size": 2548,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "iterable",
+ "type": "[subclass=Iterable]",
+ "declaredType": "Iterable<dynamic>"
+ },
+ {
+ "name": "parts",
+ "type": "Container([exact=JSExtendableArray], element: [exact=JSString], length: null)",
+ "declaredType": "List<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_iterablePartsToStrings: function(iterable, parts) {\n var it, $length, count, next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision;\n it = iterable.get$iterator(iterable);\n $length = 0;\n count = 0;\n while (true) {\n if (!($length < 80 || count < 3))\n break;\n if (!it.moveNext$0())\n return;\n next = H.S(it.get$current());\n parts.push(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 H.ioore(parts, -1);\n ultimateString = parts.pop();\n if (0 >= parts.length)\n return H.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 parts.push(H.S(penultimate));\n return;\n }\n ultimateString = H.S(penultimate);\n if (0 >= parts.length)\n return H.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 while (true) {\n if (!($length > 75 && count > 3))\n break;\n if (0 >= parts.length)\n return H.ioore(parts, -1);\n $length -= parts.pop().length + 2;\n --count;\n }\n parts.push(\"...\");\n return;\n }\n }\n penultimateString = H.S(penultimate);\n ultimateString = H.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 while (true) {\n if (!($length > 80 && parts.length > 3))\n break;\n if (0 >= parts.length)\n return H.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 parts.push(elision);\n parts.push(penultimateString);\n parts.push(ultimateString);\n}\n",
+ "type": "void Function(Iterable<dynamic>,List<dynamic>)",
+ "measurements": null
+ },
+ "922840913": {
+ "id": "function/922840913",
+ "kind": "function",
+ "name": "forwardInterceptedCallTo",
+ "size": 1512,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "receiver",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "function",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "Closure_forwardInterceptedCallTo: function(receiver, $function) {\n var t1, t2, stubName, arity, lookedUpFunction, t3, t4, $arguments;\n t1 = $.BoundClosure_selfFieldNameCache;\n if (t1 == null) {\n t1 = H.BoundClosure_computeFieldNamed(\"self\");\n $.BoundClosure_selfFieldNameCache = t1;\n }\n t2 = $.BoundClosure_receiverFieldNameCache;\n if (t2 == null) {\n t2 = H.BoundClosure_computeFieldNamed(\"receiver\");\n $.BoundClosure_receiverFieldNameCache = t2;\n }\n stubName = $function.$stubName;\n arity = $function.length;\n lookedUpFunction = receiver[stubName];\n t3 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;\n t4 = !t3 || arity >= 28;\n if (t4)\n return H.Closure_cspForwardInterceptedCall(arity, !t3, stubName, $function);\n if (arity === 1) {\n t1 = \"return function(){return this.\" + H.S(t1) + \".\" + H.S(stubName) + \"(this.\" + H.S(t2) + \");\";\n t2 = $.Closure_functionCounter;\n $.Closure_functionCounter = J.$add$ans(t2, 1);\n return new Function(t1 + H.S(t2) + \"}\")();\n }\n $arguments = \"abcdefghijklmnopqrstuvwxyz\".split(\"\").splice(0, arity - 1).join(\",\");\n t1 = \"return function(\" + $arguments + \"){return this.\" + H.S(t1) + \".\" + H.S(stubName) + \"(this.\" + H.S(t2) + \", \" + $arguments + \");\";\n t2 = $.Closure_functionCounter;\n $.Closure_functionCounter = J.$add$ans(t2, 1);\n return new Function(t1 + H.S(t2) + \"}\")();\n}\n",
+ "type": "dynamic Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "932567378": {
+ "id": "function/932567378",
+ "kind": "function",
+ "name": "provokeCallErrorOn",
+ "size": 317,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "expression",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "TypeErrorDecoder_provokeCallErrorOn: function(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",
+ "type": "String Function(dynamic)",
+ "measurements": null
+ },
+ "941710296": {
+ "id": "function/941710296",
+ "kind": "function",
+ "name": "_mayAddListener",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "942227822": {
+ "id": "function/942227822",
+ "kind": "function",
+ "name": "lastIndexOf",
+ "size": 359,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/793539876",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSInt]",
+ "parameters": [
+ {
+ "name": "pattern",
+ "type": "Value([exact=JSString], value: \"/\")",
+ "declaredType": "Pattern"
+ },
+ {
+ "name": "start",
+ "type": "[null]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "lastIndexOf$2: function(receiver, pattern, start) {\n var t1;\n start = receiver.length;\n t1 = pattern.length;\n if (start + t1 > start)\n start -= t1;\n return receiver.lastIndexOf(pattern, start);\n}\nlastIndexOf$1: function($receiver, pattern) {\n return this.lastIndexOf$2($receiver, pattern, null);\n}\n",
+ "type": "int Function(Pattern,[int])",
+ "measurements": null
+ },
+ "944731702": {
+ "id": "function/944731702",
+ "kind": "function",
+ "name": "toString",
+ "size": 118,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/86936801",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return \"Instance of '\" + H.Primitives_objectTypeName(receiver) + \"'\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "947198569": {
+ "id": "function/947198569",
+ "kind": "function",
+ "name": "call",
+ "size": 104,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/827328529",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n P._Future__propagateToListeners(this.$this, this._box_0.listeners);\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "950708086": {
+ "id": "function/950708086",
+ "kind": "function",
+ "name": "current",
+ "size": 63,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "ArrayIterator.E",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 0,
+ "code": "get$current: function() {\n return this._current;\n}\n",
+ "type": "ArrayIterator.E Function()",
+ "measurements": null
+ },
+ "950782810": {
+ "id": "function/950782810",
+ "kind": "function",
+ "name": "length",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/373504153",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "int Function()",
+ "measurements": null
+ },
+ "952130975": {
+ "id": "function/952130975",
+ "kind": "function",
+ "name": "checkGrowable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "reason",
+ "type": "[exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "962973203": {
+ "id": "function/962973203",
+ "kind": "function",
+ "name": "toString",
+ "size": 63,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/418854932",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "Value([exact=JSString], value: \"null\")",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return \"null\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "965257927": {
+ "id": "function/965257927",
+ "kind": "function",
+ "name": "checkNotNegative",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "value",
+ "type": "[null|exact=JSUInt31]",
+ "declaredType": "int"
+ },
+ {
+ "name": "name",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "void Function(int,[String,String])",
+ "measurements": null
+ },
+ "967508646": {
+ "id": "function/967508646",
+ "kind": "function",
+ "name": "checkSubtypeV1",
+ "size": 392,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "isField",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ },
+ {
+ "name": "checks",
+ "type": "[null|subclass=Object]",
+ "declaredType": "List<dynamic>"
+ },
+ {
+ "name": "asField",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "checkSubtypeV1: function(object, isField, checks, asField) {\n var $arguments, interceptor;\n if (object == null)\n return false;\n $arguments = H.getRuntimeTypeInfo(object);\n interceptor = J.getInterceptor(object);\n if (interceptor[isField] == null)\n return false;\n return H.areSubtypesV1(H.substitute(interceptor[asField], $arguments), checks);\n}\n",
+ "type": "bool Function(Object,String,List<dynamic>,String)",
+ "measurements": null
+ },
+ "968241519": {
+ "id": "function/968241519",
+ "kind": "function",
+ "name": "runUnary",
+ "size": 175,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "runUnary.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[null|subclass=Closure]",
+ "declaredType": "runUnary.R Function(runUnary.T)"
+ },
+ {
+ "name": "arg",
+ "type": "[null|subclass=Object]",
+ "declaredType": "runUnary.T"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "runUnary$2: function(f, arg) {\n if ($.Zone__current === C.C__RootZone)\n return f.call$1(arg);\n return P._rootRunUnary(null, null, this, f, arg);\n}\n",
+ "type": "runUnary.R Function(runUnary.R Function(runUnary.T),runUnary.T)",
+ "measurements": null
+ },
+ "968358412": {
+ "id": "function/968358412",
+ "kind": "function",
+ "name": "NullThrownError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/595024907",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=NullThrownError]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 6,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "969026469": {
+ "id": "function/969026469",
+ "kind": "function",
+ "name": "_LinkedHashSet",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=_LinkedHashSet]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function()",
+ "measurements": null
+ },
+ "971160936": {
+ "id": "function/971160936",
+ "kind": "function",
+ "name": "_setErrorObject",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|exact=AsyncError]",
+ "declaredType": "AsyncError"
+ }
+ ],
+ "sideEffects": "SideEffects(reads static; writes field)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "void Function(AsyncError)",
+ "measurements": null
+ },
+ "975105635": {
+ "id": "function/975105635",
+ "kind": "function",
+ "name": "_leave",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1059755229",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "previous",
+ "type": "[null|exact=_RootZone]",
+ "declaredType": "Zone"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes static)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "void Function(Zone)",
+ "measurements": null
+ },
+ "977867690": {
+ "id": "function/977867690",
+ "kind": "function",
+ "name": "ArrayIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=ArrayIterator]",
+ "parameters": [
+ {
+ "name": "iterable",
+ "type": "[subclass=JSArray]",
+ "declaredType": "JSArray<ArrayIterator.E>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(JSArray<ArrayIterator.E>)",
+ "measurements": null
+ },
+ "979933658": {
+ "id": "function/979933658",
+ "kind": "function",
+ "name": "checkMutable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "reason",
+ "type": "[exact=JSString]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "dynamic Function(dynamic)",
+ "measurements": null
+ },
+ "983564685": {
+ "id": "function/983564685",
+ "kind": "function",
+ "name": "_hasError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 3,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "984452543": {
+ "id": "function/984452543",
+ "kind": "function",
+ "name": "areSubtypesV1",
+ "size": 247,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "areSubtypesV1: function(s, t) {\n var len, i;\n if (s == null || t == null)\n return true;\n len = s.length;\n for (i = 0; i < len; ++i)\n if (!H.isSubtypeV1(s[i], t[i]))\n return false;\n return true;\n}\n",
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "985926244": {
+ "id": "function/985926244",
+ "kind": "function",
+ "name": "IndexError",
+ "size": 257,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/175705485",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[exact=IndexError]",
+ "parameters": [
+ {
+ "name": "invalidValue",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ },
+ {
+ "name": "indexable",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "Value([exact=JSString], value: \"index\")",
+ "declaredType": "String"
+ },
+ {
+ "name": "message",
+ "type": "[null]",
+ "declaredType": "String"
+ },
+ {
+ "name": "length",
+ "type": "[null|subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "IndexError$: function(invalidValue, indexable, $name, message, $length) {\n var t1 = $length != null ? $length : J.get$length$as(indexable);\n return new P.IndexError(indexable, t1, true, invalidValue, $name, \"Index out of range\");\n}\n",
+ "type": "dynamic Function(int,dynamic,[String,String,int])",
+ "measurements": null
+ },
+ "987295701": {
+ "id": "function/987295701",
+ "kind": "function",
+ "name": "call",
+ "size": 60,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/231160067",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$0: function() {\n this.callback.call$0();\n}\n",
+ "type": "Null Function()",
+ "measurements": null
+ },
+ "987508329": {
+ "id": "function/987508329",
+ "kind": "function",
+ "name": "mapToString",
+ "size": 1049,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/748502014",
+ "children": [
+ "closure/637664934"
+ ],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "m",
+ "type": "[subclass=JsLinkedHashMap]",
+ "declaredType": "Map<dynamic,dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "MapBase_mapToString: function(m) {\n var t1, result, t2;\n t1 = {};\n if (P._isToStringVisiting(m))\n return \"{...}\";\n result = new P.StringBuffer(\"\");\n try {\n $.$get$_toStringVisiting().push(m);\n t2 = result;\n t2._contents = t2.get$_contents() + \"{\";\n t1.first = true;\n m.forEach$1(0, new P.MapBase_mapToString_closure(t1, result));\n t1 = result;\n t1._contents = t1.get$_contents() + \"}\";\n } finally {\n t1 = $.$get$_toStringVisiting();\n if (0 >= t1.length)\n return H.ioore(t1, -1);\n t1.pop();\n }\n t1 = result.get$_contents();\n return t1.charCodeAt(0) == 0 ? t1 : t1;\n}\n",
+ "type": "String Function(Map<dynamic,dynamic>)",
+ "measurements": null
+ },
+ "990521259": {
+ "id": "function/990521259",
+ "kind": "function",
+ "name": "elementAt",
+ "size": 487,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "SubListIterable.E",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "index",
+ "type": "[subclass=JSInt]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "elementAt$1: function(_, index) {\n var realIndex, t1;\n realIndex = this.get$_startIndex() + index;\n if (index >= 0) {\n t1 = this.get$_endIndex();\n if (typeof t1 !== \"number\")\n return H.iae(t1);\n t1 = realIndex >= t1;\n } else\n t1 = true;\n if (t1)\n throw H.wrapException(P.IndexError$(index, this, \"index\", null, null));\n return J.elementAt$1$a(this.__internal$_iterable, realIndex);\n}\n",
+ "type": "SubListIterable.E Function(int)",
+ "measurements": null
+ },
+ "991909617": {
+ "id": "function/991909617",
+ "kind": "function",
+ "name": "toString",
+ "size": 73,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/245082925",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(receiver) {\n return String(receiver);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "992393187": {
+ "id": "function/992393187",
+ "kind": "function",
+ "name": "_scheduleMicrotask",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "_ZoneFunction<void Function(Zone,ZoneDelegate,Zone,void Function())>",
+ "inferredReturnType": "[exact=_ZoneFunction]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "_ZoneFunction<void Function(Zone,ZoneDelegate,Zone,void Function())> Function()",
+ "measurements": null
+ },
+ "992679489": {
+ "id": "function/992679489",
+ "kind": "function",
+ "name": "constructorNameFallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(dynamic)",
+ "measurements": null
+ },
+ "993180100": {
+ "id": "function/993180100",
+ "kind": "function",
+ "name": "objectToHumanReadableString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "String Function(Object)",
+ "measurements": null
+ },
+ "997099929": {
+ "id": "function/997099929",
+ "kind": "function",
+ "name": "JSArray.growable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JSArray<JSArray.E>",
+ "inferredReturnType": "[exact=JSExtendableArray]",
+ "parameters": [
+ {
+ "name": "length",
+ "type": "[subclass=JSUInt32]",
+ "declaredType": "int"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "JSArray<JSArray.E> Function(int)",
+ "measurements": null
+ },
+ "998984172": {
+ "id": "function/998984172",
+ "kind": "function",
+ "name": "_isStringElement",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "bool Function(dynamic)",
+ "measurements": null
+ },
+ "1002752870": {
+ "id": "function/1002752870",
+ "kind": "function",
+ "name": "_addHashTableEntry",
+ "size": 194,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "table",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "element",
+ "type": "[null|subclass=Object]",
+ "declaredType": "_LinkedHashSet.E"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_addHashTableEntry$2: function(table, element) {\n if (table[element] != null)\n return false;\n table[element] = this._newLinkedCell$1(element);\n return true;\n}\n",
+ "type": "bool Function(dynamic,_LinkedHashSet.E)",
+ "measurements": null
+ },
+ "1008544093": {
+ "id": "function/1008544093",
+ "kind": "function",
+ "name": "length",
+ "size": 74,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/476286669",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "int",
+ "inferredReturnType": "[subclass=JSPositiveInt]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$length: function(_) {\n return this.__js_helper$_length;\n}\n",
+ "type": "int Function()",
+ "measurements": null
+ },
+ "1012615396": {
+ "id": "function/1012615396",
+ "kind": "function",
+ "name": "isIdentical",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [
+ {
+ "name": "s",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "t",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(dynamic,dynamic)",
+ "measurements": null
+ },
+ "1014074245": {
+ "id": "function/1014074245",
+ "kind": "function",
+ "name": "future",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<_AsyncAwaitCompleter.T>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Future<_AsyncAwaitCompleter.T> Function()",
+ "measurements": null
+ },
+ "1014821943": {
+ "id": "function/1014821943",
+ "kind": "function",
+ "name": "Completer",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/471305727",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "Completer<Completer.T>",
+ "inferredReturnType": "[exact=_AsyncCompleter]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "Completer<Completer.T> Function()",
+ "measurements": null
+ },
+ "1015140651": {
+ "id": "function/1015140651",
+ "kind": "function",
+ "name": "_modified",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "void Function()",
+ "measurements": null
+ },
+ "1016194181": {
+ "id": "function/1016194181",
+ "kind": "function",
+ "name": "toList",
+ "size": 723,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "List<SubListIterable.E>",
+ "inferredReturnType": "Container(Union([exact=JSExtendableArray], [exact=JSFixedArray]), element: [null|subclass=Object], length: null)",
+ "parameters": [
+ {
+ "name": "growable",
+ "type": "Value([exact=JSBool], value: false)",
+ "declaredType": "bool"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toList$1$growable: function(_, growable) {\n var start, t1, t2, end, $length, result, i, t3;\n start = this._start;\n t1 = this.__internal$_iterable;\n t2 = J.getInterceptor$as(t1);\n end = t2.get$length(t1);\n $length = end - start;\n if ($length < 0)\n $length = 0;\n result = new Array($length);\n result.fixed$length = Array;\n for (i = 0; i < $length; ++i) {\n t3 = t2.elementAt$1(t1, start + i);\n if (i >= $length)\n return H.ioore(result, i);\n result[i] = t3;\n if (t2.get$length(t1) < end)\n throw H.wrapException(P.ConcurrentModificationError$(this));\n }\n return result;\n}\n",
+ "type": "List<SubListIterable.E> Function({bool growable})",
+ "measurements": null
+ },
+ "1024143730": {
+ "id": "function/1024143730",
+ "kind": "function",
+ "name": "JSArray.typed",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/523978038",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": true,
+ "external": false
+ },
+ "returnType": "JSArray<JSArray.E>",
+ "inferredReturnType": "[subclass=JSArray]",
+ "parameters": [
+ {
+ "name": "allocation",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ }
+ ],
+ "sideEffects": "SideEffects(reads nothing; writes nothing)",
+ "inlinedCount": 2,
+ "code": null,
+ "type": "JSArray<JSArray.E> Function(dynamic)",
+ "measurements": null
+ },
+ "1024465827": {
+ "id": "function/1024465827",
+ "kind": "function",
+ "name": "_errorExplanation",
+ "size": 649,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes anything)",
+ "inlinedCount": 0,
+ "code": "get$_errorExplanation: function() {\n var t1, explanation, t2;\n t1 = this.start;\n if (t1 == null) {\n t1 = this.end;\n explanation = t1 != null ? \": Not less than or equal to \" + H.S(t1) : \"\";\n } else {\n t2 = this.end;\n if (t2 == null)\n explanation = \": Not greater than or equal to \" + H.S(t1);\n else if (t2 > t1)\n explanation = \": Not in range \" + H.S(t1) + \"..\" + H.S(t2) + \", inclusive\";\n else\n explanation = t2 < t1 ? \": Valid value range is empty\" : \": Only valid value is \" + H.S(t1);\n }\n return explanation;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "1027535878": {
+ "id": "function/1027535878",
+ "kind": "function",
+ "name": "moveNext",
+ "size": 434,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "moveNext$0: function() {\n var t1, $length, t2;\n t1 = this._iterable;\n $length = t1.length;\n if (this._length !== $length)\n throw H.wrapException(H.throwConcurrentModificationError(t1));\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",
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "1030881401": {
+ "id": "function/1030881401",
+ "kind": "function",
+ "name": "hasErrorTest",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field, static; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "1031131035": {
+ "id": "function/1031131035",
+ "kind": "function",
+ "name": "_cloneResult",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "source",
+ "type": "[exact=_Future]",
+ "declaredType": "_Future<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads field; writes field)",
+ "inlinedCount": 4,
+ "code": null,
+ "type": "void Function(_Future<dynamic>)",
+ "measurements": null
+ },
+ "1031826457": {
+ "id": "function/1031826457",
+ "kind": "function",
+ "name": "call",
+ "size": 135,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "closure/624687097",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Null",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "_",
+ "type": "[null|subclass=Object]",
+ "declaredType": "List<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "call$1: function(_) {\n this.initializeSomeLoadedHunks.call$0();\n $.$get$_loadedLibraries().add$1(0, this.loadId);\n}\n",
+ "type": "Null Function(List<dynamic>)",
+ "measurements": null
+ },
+ "1033661873": {
+ "id": "function/1033661873",
+ "kind": "function",
+ "name": "toString",
+ "size": 77,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return P.MapBase_mapToString(this);\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "1036675160": {
+ "id": "function/1036675160",
+ "kind": "function",
+ "name": "runBinary",
+ "size": 198,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/566341130",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "runBinary.R",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "runBinary.R Function(runBinary.T1,runBinary.T2)"
+ },
+ {
+ "name": "arg1",
+ "type": "[null|subclass=Object]",
+ "declaredType": "runBinary.T1"
+ },
+ {
+ "name": "arg2",
+ "type": "[null|subclass=Object]",
+ "declaredType": "runBinary.T2"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "runBinary$3: function(f, arg1, arg2) {\n if ($.Zone__current === C.C__RootZone)\n return f.call$2(arg1, arg2);\n return P._rootRunBinary(null, null, this, f, arg1, arg2);\n}\n",
+ "type": "runBinary.R Function(runBinary.R Function(runBinary.T1,runBinary.T2),runBinary.T1,runBinary.T2)",
+ "measurements": null
+ },
+ "1042482096": {
+ "id": "function/1042482096",
+ "kind": "function",
+ "name": "_stringToSafeString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/893386369",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(String)",
+ "measurements": null
+ },
+ "1047605700": {
+ "id": "function/1047605700",
+ "kind": "function",
+ "name": "moveNext",
+ "size": 512,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool",
+ "inferredReturnType": "[exact=JSBool]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "moveNext$0: function() {\n var t1, $length, t2;\n t1 = this.__internal$_iterable;\n $length = t1.get$length(t1);\n if (this.__internal$_length !== $length)\n throw H.wrapException(P.ConcurrentModificationError$(t1));\n t2 = this.__internal$_index;\n if (t2 >= $length) {\n this.__internal$_current = null;\n return false;\n }\n this.__internal$_current = t1.elementAt$1(0, t2);\n ++this.__internal$_index;\n return true;\n}\n",
+ "type": "bool Function()",
+ "measurements": null
+ },
+ "1049802380": {
+ "id": "function/1049802380",
+ "kind": "function",
+ "name": "getField",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "dynamic",
+ "inferredReturnType": "[null|subclass=Object]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "[null|subclass=Object]",
+ "declaredType": "dynamic"
+ },
+ {
+ "name": "name",
+ "type": "[null|subclass=Object]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes nothing)",
+ "inlinedCount": 11,
+ "code": null,
+ "type": "dynamic Function(dynamic,String)",
+ "measurements": null
+ },
+ "1051093947": {
+ "id": "function/1051093947",
+ "kind": "function",
+ "name": "toString",
+ "size": 110,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "toString$0: function(_) {\n return \"Closure '\" + H.Primitives_objectTypeName(this).trim() + \"'\";\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "1055095230": {
+ "id": "function/1055095230",
+ "kind": "function",
+ "name": "_errorTest",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "bool Function(Object)",
+ "inferredReturnType": "[subclass=Closure]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads field; writes nothing)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "bool Function(Object) Function()",
+ "measurements": null
+ },
+ "1058735230": {
+ "id": "function/1058735230",
+ "kind": "function",
+ "name": "then",
+ "size": 409,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "Future<then.R>",
+ "inferredReturnType": "[exact=_Future]",
+ "parameters": [
+ {
+ "name": "f",
+ "type": "[subclass=Closure]",
+ "declaredType": "dynamic Function(_Future.T)"
+ },
+ {
+ "name": "onError",
+ "type": "[null|subclass=Closure]",
+ "declaredType": "Function"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "then$2$onError: function(f, onError) {\n var currentZone = $.Zone__current;\n if (currentZone !== C.C__RootZone) {\n currentZone.toString;\n if (onError != null)\n onError = P._registerErrorHandler(onError, currentZone);\n }\n return this._thenNoZoneRegistration$2(f, onError);\n}\nthen$1: function(f) {\n return this.then$2$onError(f, null);\n}\n",
+ "type": "Future<then.R> Function(dynamic Function(_Future.T),{Function onError})",
+ "measurements": null
+ },
+ "1060110710": {
+ "id": "function/1060110710",
+ "kind": "function",
+ "name": "listToString",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/607623563",
+ "children": [],
+ "modifiers": {
+ "static": true,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[exact=JSString]",
+ "parameters": [
+ {
+ "name": "list",
+ "type": "[subclass=JSArray]",
+ "declaredType": "List<dynamic>"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "String Function(List<dynamic>)",
+ "measurements": null
+ },
+ "1060205580": {
+ "id": "function/1060205580",
+ "kind": "function",
+ "name": "_computeThisScript",
+ "size": 278,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "String",
+ "inferredReturnType": "[null|exact=JSString]",
+ "parameters": [],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_computeThisScript: function() {\n var currentScript = init.currentScript;\n if (currentScript != null)\n return String(currentScript.src);\n if ((!self.window && !!self.postMessage) === true)\n return H._computeThisScriptFromTrace();\n return;\n}\n",
+ "type": "String Function()",
+ "measurements": null
+ },
+ "1065856678": {
+ "id": "function/1065856678",
+ "kind": "function",
+ "name": "_completeError",
+ "size": 117,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/714718140",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": "void",
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "error",
+ "type": "[null|subclass=Object]",
+ "declaredType": "Object"
+ },
+ {
+ "name": "stackTrace",
+ "type": "[null|subclass=Object]",
+ "declaredType": "StackTrace"
+ }
+ ],
+ "sideEffects": "SideEffects(reads anything; writes anything)",
+ "inlinedCount": 0,
+ "code": "_completeError$2: function(error, stackTrace) {\n this.future._asyncCompleteError$2(error, stackTrace);\n}\n",
+ "type": "void Function(Object,StackTrace)",
+ "measurements": null
+ }
+ },
+ "typedef": {},
+ "field": {
+ "607252": {
+ "id": "field/607252",
+ "kind": "field",
+ "name": "callback",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/733467750",
+ "children": [],
+ "inferredType": "[subclass=Closure]",
+ "code": "callback\n",
+ "type": "void Function()"
+ },
+ "4524053": {
+ "id": "field/4524053",
+ "kind": "field",
+ "name": "_hasValue",
+ "size": 30,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": "_hasValue\n_hasValue\n_hasValue\n",
+ "type": "bool"
+ },
+ "8965675": {
+ "id": "field/8965675",
+ "kind": "field",
+ "name": "thisScript",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "9743357": {
+ "id": "field/9743357",
+ "kind": "field",
+ "name": "_handle",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/32494041",
+ "children": [],
+ "inferredType": "[null|subclass=JSInt]",
+ "code": "_handle\n",
+ "type": "int"
+ },
+ "16888485": {
+ "id": "field/16888485",
+ "kind": "field",
+ "name": "_index",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/958488954",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "17152193": {
+ "id": "field/17152193",
+ "kind": "field",
+ "name": "getType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "23408725": {
+ "id": "field/23408725",
+ "kind": "field",
+ "name": "_message",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/790616034",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "_message\n",
+ "type": "String"
+ },
+ "24026359": {
+ "id": "field/24026359",
+ "kind": "field",
+ "name": "error",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/577121337",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "error<\n",
+ "type": "Object"
+ },
+ "29748263": {
+ "id": "field/29748263",
+ "kind": "field",
+ "name": "_lastPriorityCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "inferredType": "[null|exact=_AsyncCallbackEntry]",
+ "code": null,
+ "type": "_AsyncCallbackEntry"
+ },
+ "42778158": {
+ "id": "field/42778158",
+ "kind": "field",
+ "name": "_current",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1059755229",
+ "children": [],
+ "inferredType": "[null|exact=_RootZone]",
+ "code": null,
+ "type": "Zone"
+ },
+ "43092689": {
+ "id": "field/43092689",
+ "kind": "field",
+ "name": "IS_HUNK_LOADED",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"isHunkLoaded\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "51249772": {
+ "id": "field/51249772",
+ "kind": "field",
+ "name": "_isPaused",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1040168844",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": "_isPaused\n",
+ "type": "bool"
+ },
+ "51929026": {
+ "id": "field/51929026",
+ "kind": "field",
+ "name": "_iterator",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/680257415",
+ "children": [],
+ "inferredType": "[subtype=Iterator]",
+ "code": null,
+ "type": "Iterator<SkipIterator.E>"
+ },
+ "52345936": {
+ "id": "field/52345936",
+ "kind": "field",
+ "name": "_endOrLength",
+ "size": 13,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "inferredType": "[null]",
+ "code": "_endOrLength\n",
+ "type": "int"
+ },
+ "55197673": {
+ "id": "field/55197673",
+ "kind": "field",
+ "name": "_method",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "_method\n",
+ "type": "int"
+ },
+ "55541185": {
+ "id": "field/55541185",
+ "kind": "field",
+ "name": "MANGLED_GLOBAL_NAMES",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"mangledGlobalNames\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "60719081": {
+ "id": "field/60719081",
+ "kind": "field",
+ "name": "_current",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/742137989",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "LinkedHashMapKeyIterator.E"
+ },
+ "60920969": {
+ "id": "field/60920969",
+ "kind": "field",
+ "name": "_first",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[null|exact=_LinkedHashSetCell]",
+ "code": "_first\n",
+ "type": "_LinkedHashSetCell"
+ },
+ "65712884": {
+ "id": "field/65712884",
+ "kind": "field",
+ "name": "_modifications",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "_modifications\n",
+ "type": "int"
+ },
+ "70141207": {
+ "id": "field/70141207",
+ "kind": "field",
+ "name": "_typeName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/269073412",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "79374407": {
+ "id": "field/79374407",
+ "kind": "field",
+ "name": "maskWhencomplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "79943715": {
+ "id": "field/79943715",
+ "kind": "field",
+ "name": "nullPropertyPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "83424460": {
+ "id": "field/83424460",
+ "kind": "field",
+ "name": "helloWorld",
+ "size": 0,
+ "outputUnit": "outputUnit/7045321",
+ "parent": "library/239009133",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"Hello, World!\")",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "110087164": {
+ "id": "field/110087164",
+ "kind": "field",
+ "name": "IS_HUNK_INITIALIZED",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"isHunkInitialized\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "111931226": {
+ "id": "field/111931226",
+ "kind": "field",
+ "name": "start",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "inferredType": "[null|subclass=JSUInt32]",
+ "code": "start\n",
+ "type": "num"
+ },
+ "112618843": {
+ "id": "field/112618843",
+ "kind": "field",
+ "name": "_length",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSUInt32]",
+ "code": "_length\n",
+ "type": "int"
+ },
+ "116849538": {
+ "id": "field/116849538",
+ "kind": "field",
+ "name": "areOptionalParametersNamed",
+ "size": 27,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": "areOptionalParametersNamed\n",
+ "type": "bool"
+ },
+ "118657756": {
+ "id": "field/118657756",
+ "kind": "field",
+ "name": "DOLLAR_CHAR_VALUE",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/354160010",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "123513767": {
+ "id": "field/123513767",
+ "kind": "field",
+ "name": "_expr",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "_expr\n",
+ "type": "int"
+ },
+ "125761045": {
+ "id": "field/125761045",
+ "kind": "field",
+ "name": "DEFERRED_PART_URIS",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"deferredPartUris\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "125830184": {
+ "id": "field/125830184",
+ "kind": "field",
+ "name": "_self",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_self\n",
+ "type": "dynamic"
+ },
+ "126292751": {
+ "id": "field/126292751",
+ "kind": "field",
+ "name": "_cspNonce",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "127038922": {
+ "id": "field/127038922",
+ "kind": "field",
+ "name": "_trace",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/518228506",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_trace\n",
+ "type": "String"
+ },
+ "130159427": {
+ "id": "field/130159427",
+ "kind": "field",
+ "name": "OPTIONAL_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "130629664": {
+ "id": "field/130629664",
+ "kind": "field",
+ "name": "_map",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/742137989",
+ "children": [],
+ "inferredType": "[subclass=JsLinkedHashMap]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "140571055": {
+ "id": "field/140571055",
+ "kind": "field",
+ "name": "message",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/991730135",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "message\n",
+ "type": "String"
+ },
+ "146902950": {
+ "id": "field/146902950",
+ "kind": "field",
+ "name": "noSuchMethodPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "153611669": {
+ "id": "field/153611669",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "153843292": {
+ "id": "field/153843292",
+ "kind": "field",
+ "name": "_index",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": "__internal$_index\n",
+ "type": "int"
+ },
+ "154746101": {
+ "id": "field/154746101",
+ "kind": "field",
+ "name": "_current",
+ "size": 20,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "__internal$_current\n",
+ "type": "ListIterator.E"
+ },
+ "159930244": {
+ "id": "field/159930244",
+ "kind": "field",
+ "name": "CALL_CATCH_ALL",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "162036481": {
+ "id": "field/162036481",
+ "kind": "field",
+ "name": "ERROR",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/237882207",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "169031325": {
+ "id": "field/169031325",
+ "kind": "field",
+ "name": "undefinedCallPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "172148876": {
+ "id": "field/172148876",
+ "kind": "field",
+ "name": "_stateData",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1040168844",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_stateData\n",
+ "type": "Object"
+ },
+ "180845508": {
+ "id": "field/180845508",
+ "kind": "field",
+ "name": "_target",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_target\n",
+ "type": "dynamic"
+ },
+ "185234473": {
+ "id": "field/185234473",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/644348892",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "186466978": {
+ "id": "field/186466978",
+ "kind": "field",
+ "name": "microsecondsPerSecond",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "187449514": {
+ "id": "field/187449514",
+ "kind": "field",
+ "name": "state",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "state\n",
+ "type": "int"
+ },
+ "189240247": {
+ "id": "field/189240247",
+ "kind": "field",
+ "name": "undefinedPropertyPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "190358771": {
+ "id": "field/190358771",
+ "kind": "field",
+ "name": "message",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/948502579",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "message\n",
+ "type": "String"
+ },
+ "190934046": {
+ "id": "field/190934046",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "192950192": {
+ "id": "field/192950192",
+ "kind": "field",
+ "name": "hashMapCellValue",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/500662026",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "hashMapCellValue@\n",
+ "type": "dynamic"
+ },
+ "202409972": {
+ "id": "field/202409972",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETER_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "202484522": {
+ "id": "field/202484522",
+ "kind": "field",
+ "name": "_rest",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "__js_helper$_rest\n",
+ "type": "dynamic"
+ },
+ "206386055": {
+ "id": "field/206386055",
+ "kind": "field",
+ "name": "jsFunction",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "jsFunction\n",
+ "type": "dynamic"
+ },
+ "214758996": {
+ "id": "field/214758996",
+ "kind": "field",
+ "name": "DEFERRED_LIBRARY_PARTS",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"deferredLibraryParts\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "221593932": {
+ "id": "field/221593932",
+ "kind": "field",
+ "name": "isFunctionType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "221913650": {
+ "id": "field/221913650",
+ "kind": "field",
+ "name": "next",
+ "size": 5,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/733467750",
+ "children": [],
+ "inferredType": "[null|exact=_AsyncCallbackEntry]",
+ "code": "next\n",
+ "type": "_AsyncCallbackEntry"
+ },
+ "229586442": {
+ "id": "field/229586442",
+ "kind": "field",
+ "name": "_rest",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_rest\n",
+ "type": "dynamic"
+ },
+ "231027572": {
+ "id": "field/231027572",
+ "kind": "field",
+ "name": "pattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/216047131",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "232791153": {
+ "id": "field/232791153",
+ "kind": "field",
+ "name": "_strings",
+ "size": 21,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "__js_helper$_strings\n",
+ "type": "dynamic"
+ },
+ "237146195": {
+ "id": "field/237146195",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSArray]",
+ "code": "_iterable\n",
+ "type": "JSArray<ArrayIterator.E>"
+ },
+ "240049228": {
+ "id": "field/240049228",
+ "kind": "field",
+ "name": "_stateIncomplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "241563122": {
+ "id": "field/241563122",
+ "kind": "field",
+ "name": "SUCCESS",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/237882207",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "244162491": {
+ "id": "field/244162491",
+ "kind": "field",
+ "name": "_loadedLibraries",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[null|subclass=_LinkedHashSet]",
+ "code": null,
+ "type": "Set<String>"
+ },
+ "249142929": {
+ "id": "field/249142929",
+ "kind": "field",
+ "name": "code",
+ "size": 5,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/949988971",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n}\")",
+ "code": "code\n",
+ "type": "String"
+ },
+ "259683855": {
+ "id": "field/259683855",
+ "kind": "field",
+ "name": "functionType",
+ "size": 13,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "functionType\n",
+ "type": "dynamic"
+ },
+ "261042870": {
+ "id": "field/261042870",
+ "kind": "field",
+ "name": "_hasErrorStackProperty",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/631335891",
+ "children": [],
+ "inferredType": "[null|exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "269363605": {
+ "id": "field/269363605",
+ "kind": "field",
+ "name": "_first",
+ "size": 19,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": "__js_helper$_first\n",
+ "type": "LinkedHashMapCell"
+ },
+ "275000790": {
+ "id": "field/275000790",
+ "kind": "field",
+ "name": "_pattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/958488954",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "285504086": {
+ "id": "field/285504086",
+ "kind": "field",
+ "name": "_stateError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "295541341": {
+ "id": "field/295541341",
+ "kind": "field",
+ "name": "_previous",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/868658259",
+ "children": [],
+ "inferredType": "[null|exact=_LinkedHashSetCell]",
+ "code": "_previous\n",
+ "type": "_LinkedHashSetCell"
+ },
+ "299693352": {
+ "id": "field/299693352",
+ "kind": "field",
+ "name": "microsecondsPerDay",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "302220255": {
+ "id": "field/302220255",
+ "kind": "field",
+ "name": "_receiver",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_receiver\n",
+ "type": "dynamic"
+ },
+ "303835005": {
+ "id": "field/303835005",
+ "kind": "field",
+ "name": "zone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/934351233",
+ "children": [],
+ "inferredType": "[exact=_RootZone]",
+ "code": null,
+ "type": "_Zone"
+ },
+ "304825305": {
+ "id": "field/304825305",
+ "kind": "field",
+ "name": "result",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=_Future]",
+ "code": "result\n",
+ "type": "_Future<_FutureListener.T>"
+ },
+ "305114389": {
+ "id": "field/305114389",
+ "kind": "field",
+ "name": "_subscription",
+ "size": 14,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1040168844",
+ "children": [],
+ "inferredType": "[null]",
+ "code": "_subscription\n",
+ "type": "StreamSubscription<dynamic>"
+ },
+ "319720392": {
+ "id": "field/319720392",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/324980341",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "334228980": {
+ "id": "field/334228980",
+ "kind": "field",
+ "name": "_completer",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [],
+ "inferredType": "[exact=_SyncCompleter]",
+ "code": "_completer\n",
+ "type": "Completer<_AsyncAwaitCompleter.T>"
+ },
+ "337959975": {
+ "id": "field/337959975",
+ "kind": "field",
+ "name": "undefinedLiteralPropertyPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "338588500": {
+ "id": "field/338588500",
+ "kind": "field",
+ "name": "requiredParameterCount",
+ "size": 23,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "requiredParameterCount\n",
+ "type": "int"
+ },
+ "343514633": {
+ "id": "field/343514633",
+ "kind": "field",
+ "name": "callback",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[subclass=Closure]",
+ "code": "callback\n",
+ "type": "Function"
+ },
+ "345425066": {
+ "id": "field/345425066",
+ "kind": "field",
+ "name": "_receiver",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/17649844",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "_receiver\n",
+ "type": "String"
+ },
+ "346735010": {
+ "id": "field/346735010",
+ "kind": "field",
+ "name": "_message",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/27679401",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "_message\n",
+ "type": "String"
+ },
+ "347443343": {
+ "id": "field/347443343",
+ "kind": "field",
+ "name": "_method",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/17649844",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "_method\n",
+ "type": "String"
+ },
+ "347672432": {
+ "id": "field/347672432",
+ "kind": "field",
+ "name": "_nums",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_nums\n",
+ "type": "dynamic"
+ },
+ "359397062": {
+ "id": "field/359397062",
+ "kind": "field",
+ "name": "_pattern",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "_pattern\n",
+ "type": "String"
+ },
+ "366629653": {
+ "id": "field/366629653",
+ "kind": "field",
+ "name": "nullLiteralPropertyPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "368460625": {
+ "id": "field/368460625",
+ "kind": "field",
+ "name": "isSync",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/850763763",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": "isSync?\n",
+ "type": "bool"
+ },
+ "368849633": {
+ "id": "field/368849633",
+ "kind": "field",
+ "name": "nullLiteralCallPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "370348518": {
+ "id": "field/370348518",
+ "kind": "field",
+ "name": "_stateChained",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "370436126": {
+ "id": "field/370436126",
+ "kind": "field",
+ "name": "_rootZone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "inferredType": "[exact=_RootZone]",
+ "code": null,
+ "type": "_RootZone",
+ "const": true,
+ "initializer": "constant/924662595"
+ },
+ "373519716": {
+ "id": "field/373519716",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 21,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "inferredType": "Union([exact=SubListIterable], [subclass=JSArray])",
+ "code": "__internal$_iterable\n",
+ "type": "Iterable<SubListIterable.E>"
+ },
+ "376257386": {
+ "id": "field/376257386",
+ "kind": "field",
+ "name": "modifiedObject",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/36312556",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "modifiedObject\n",
+ "type": "Object"
+ },
+ "378321689": {
+ "id": "field/378321689",
+ "kind": "field",
+ "name": "maskError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "381082880": {
+ "id": "field/381082880",
+ "kind": "field",
+ "name": "nullCallPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "386221903": {
+ "id": "field/386221903",
+ "kind": "field",
+ "name": "functionCounter",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/317291728",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "391942199": {
+ "id": "field/391942199",
+ "kind": "field",
+ "name": "OPERATOR_AS_PREFIX",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "398469089": {
+ "id": "field/398469089",
+ "kind": "field",
+ "name": "_equality",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1070558590",
+ "children": [],
+ "inferredType": "[subclass=Closure]",
+ "code": null,
+ "type": "bool Function(_LinkedCustomHashSet.E,_LinkedCustomHashSet.E)"
+ },
+ "402795939": {
+ "id": "field/402795939",
+ "kind": "field",
+ "name": "start",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/216047131",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "404664193": {
+ "id": "field/404664193",
+ "kind": "field",
+ "name": "input",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/216047131",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "406601007": {
+ "id": "field/406601007",
+ "kind": "field",
+ "name": "_ListConstructorSentinel",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/325218131",
+ "children": [],
+ "inferredType": "[exact=_Growable]",
+ "code": null,
+ "type": "_Growable",
+ "const": true
+ },
+ "410301694": {
+ "id": "field/410301694",
+ "kind": "field",
+ "name": "_length",
+ "size": 20,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": "_collection$_length\n",
+ "type": "int"
+ },
+ "412345286": {
+ "id": "field/412345286",
+ "kind": "field",
+ "name": "_unmangledName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/269073412",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "413692838": {
+ "id": "field/413692838",
+ "kind": "field",
+ "name": "rawRuntimeType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "414662379": {
+ "id": "field/414662379",
+ "kind": "field",
+ "name": "_method",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/790616034",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_method\n",
+ "type": "String"
+ },
+ "417944821": {
+ "id": "field/417944821",
+ "kind": "field",
+ "name": "_inTypeAssertion",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "420557924": {
+ "id": "field/420557924",
+ "kind": "field",
+ "name": "isAccessor",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": "isAccessor\n",
+ "type": "bool"
+ },
+ "421412262": {
+ "id": "field/421412262",
+ "kind": "field",
+ "name": "stateThenOnerror",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "422530140": {
+ "id": "field/422530140",
+ "kind": "field",
+ "name": "TYPEDEF_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "431266734": {
+ "id": "field/431266734",
+ "kind": "field",
+ "name": "_previous",
+ "size": 22,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/500662026",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": "__js_helper$_previous\n",
+ "type": "LinkedHashMapCell"
+ },
+ "434352794": {
+ "id": "field/434352794",
+ "kind": "field",
+ "name": "isFutureOrType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "435101137": {
+ "id": "field/435101137",
+ "kind": "field",
+ "name": "selfFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "435679137": {
+ "id": "field/435679137",
+ "kind": "field",
+ "name": "_modifications",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "_modifications\n",
+ "type": "int"
+ },
+ "443749531": {
+ "id": "field/443749531",
+ "kind": "field",
+ "name": "_s",
+ "size": 3,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/410333734",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "_s\n",
+ "type": "String"
+ },
+ "446360348": {
+ "id": "field/446360348",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "447707988": {
+ "id": "field/447707988",
+ "kind": "field",
+ "name": "RTI_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "449691021": {
+ "id": "field/449691021",
+ "kind": "field",
+ "name": "maskValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "459351028": {
+ "id": "field/459351028",
+ "kind": "field",
+ "name": "_last",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[null|exact=_LinkedHashSetCell]",
+ "code": "_last\n",
+ "type": "_LinkedHashSetCell"
+ },
+ "460958077": {
+ "id": "field/460958077",
+ "kind": "field",
+ "name": "_exception",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/518228506",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_exception\n",
+ "type": "dynamic"
+ },
+ "478876039": {
+ "id": "field/478876039",
+ "kind": "field",
+ "name": "hoursPerDay",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "483247773": {
+ "id": "field/483247773",
+ "kind": "field",
+ "name": "rawRtiToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "485816538": {
+ "id": "field/485816538",
+ "kind": "field",
+ "name": "_zone",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[null|exact=_RootZone]",
+ "code": "_zone\n",
+ "type": "Zone"
+ },
+ "496083304": {
+ "id": "field/496083304",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_GENERIC_BOUNDS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "496557243": {
+ "id": "field/496557243",
+ "kind": "field",
+ "name": "_eventLog",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "Container([exact=JSExtendableArray], element: [exact=JSString], length: null)",
+ "code": null,
+ "type": "List<String>"
+ },
+ "499560688": {
+ "id": "field/499560688",
+ "kind": "field",
+ "name": "_map",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/373504153",
+ "children": [],
+ "inferredType": "[subclass=JsLinkedHashMap]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "504170901": {
+ "id": "field/504170901",
+ "kind": "field",
+ "name": "_current",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_current\n",
+ "type": "ArrayIterator.E"
+ },
+ "505549528": {
+ "id": "field/505549528",
+ "kind": "field",
+ "name": "indexable",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/175705485",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "indexable\n",
+ "type": "dynamic"
+ },
+ "509005655": {
+ "id": "field/509005655",
+ "kind": "field",
+ "name": "name",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "name\nname\nname\n",
+ "type": "String"
+ },
+ "509651846": {
+ "id": "field/509651846",
+ "kind": "field",
+ "name": "hashMapCellKey",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/500662026",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "hashMapCellKey\n",
+ "type": "dynamic"
+ },
+ "516194057": {
+ "id": "field/516194057",
+ "kind": "field",
+ "name": "maskTestError",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "522978319": {
+ "id": "field/522978319",
+ "kind": "field",
+ "name": "_toStringVisiting",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/754126564",
+ "children": [],
+ "inferredType": "Container([exact=JSExtendableArray], element: Union([subclass=JsLinkedHashMap], [subtype=Iterable]), length: null)",
+ "code": null,
+ "type": "List<dynamic>"
+ },
+ "525450391": {
+ "id": "field/525450391",
+ "kind": "field",
+ "name": "_length",
+ "size": 19,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "__internal$_length\n",
+ "type": "int"
+ },
+ "526089142": {
+ "id": "field/526089142",
+ "kind": "field",
+ "name": "_constructorNameFallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[exact=JS_CONST]",
+ "code": null,
+ "type": "JS_CONST",
+ "const": true,
+ "initializer": "constant/586866313"
+ },
+ "563519506": {
+ "id": "field/563519506",
+ "kind": "field",
+ "name": "isJsInteropTypeArgument",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "577142640": {
+ "id": "field/577142640",
+ "kind": "field",
+ "name": "_index",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1019758482",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": "_index\n",
+ "type": "int"
+ },
+ "586155906": {
+ "id": "field/586155906",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "603434183": {
+ "id": "field/603434183",
+ "kind": "field",
+ "name": "cachedSortedIndices",
+ "size": 20,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[null]",
+ "code": "cachedSortedIndices\n",
+ "type": "List<dynamic>"
+ },
+ "618333384": {
+ "id": "field/618333384",
+ "kind": "field",
+ "name": "dartObjectConstructor",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "626399440": {
+ "id": "field/626399440",
+ "kind": "field",
+ "name": "FUNCTION_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "626762025": {
+ "id": "field/626762025",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 21,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/365655194",
+ "children": [],
+ "inferredType": "[exact=SubListIterable]",
+ "code": "__internal$_iterable\n",
+ "type": "Iterable<ListIterator.E>"
+ },
+ "627383241": {
+ "id": "field/627383241",
+ "kind": "field",
+ "name": "_message",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/17649844",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "_message\n",
+ "type": "String"
+ },
+ "635439616": {
+ "id": "field/635439616",
+ "kind": "field",
+ "name": "_cell",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "inferredType": "[null|exact=_LinkedHashSetCell]",
+ "code": "_cell\n",
+ "type": "_LinkedHashSetCell"
+ },
+ "635780781": {
+ "id": "field/635780781",
+ "kind": "field",
+ "name": "_cell",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/742137989",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": null,
+ "type": "LinkedHashMapCell"
+ },
+ "637404994": {
+ "id": "field/637404994",
+ "kind": "field",
+ "name": "INITIALIZE_LOADED_HUNK",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"initializeLoadedHunk\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "639289778": {
+ "id": "field/639289778",
+ "kind": "field",
+ "name": "_nextCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "inferredType": "[null|exact=_AsyncCallbackEntry]",
+ "code": null,
+ "type": "_AsyncCallbackEntry"
+ },
+ "645317327": {
+ "id": "field/645317327",
+ "kind": "field",
+ "name": "notClosurePattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "645423404": {
+ "id": "field/645423404",
+ "kind": "field",
+ "name": "CALL_NAME_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "646361925": {
+ "id": "field/646361925",
+ "kind": "field",
+ "name": "_current",
+ "size": 21,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_collection$_current\n",
+ "type": "_LinkedHashSetIterator.E"
+ },
+ "646744185": {
+ "id": "field/646744185",
+ "kind": "field",
+ "name": "undefinedLiteralCallPattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[exact=TypeErrorDecoder]",
+ "code": null,
+ "type": "TypeErrorDecoder"
+ },
+ "648221667": {
+ "id": "field/648221667",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/171867442",
+ "children": [],
+ "inferredType": "[subtype=Iterable]",
+ "code": null,
+ "type": "Iterable<SkipIterable.E>"
+ },
+ "649547880": {
+ "id": "field/649547880",
+ "kind": "field",
+ "name": "end",
+ "size": 4,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/974704527",
+ "children": [],
+ "inferredType": "[null|subclass=JSInt]",
+ "code": "end\n",
+ "type": "num"
+ },
+ "650081226": {
+ "id": "field/650081226",
+ "kind": "field",
+ "name": "message",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/217690375",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"Unsupported number of arguments for wrapped closure\")",
+ "code": "message\n",
+ "type": "dynamic"
+ },
+ "650800220": {
+ "id": "field/650800220",
+ "kind": "field",
+ "name": "_nums",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "__js_helper$_nums\n",
+ "type": "dynamic"
+ },
+ "653339731": {
+ "id": "field/653339731",
+ "kind": "field",
+ "name": "message",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/866150578",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"Intercepted function with no arguments.\")",
+ "code": "message\n",
+ "type": "dynamic"
+ },
+ "656800516": {
+ "id": "field/656800516",
+ "kind": "field",
+ "name": "data",
+ "size": 5,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSFixedArray]",
+ "code": "data\n",
+ "type": "List<dynamic>"
+ },
+ "657138181": {
+ "id": "field/657138181",
+ "kind": "field",
+ "name": "function",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/934351233",
+ "children": [],
+ "inferredType": "[subclass=Closure]",
+ "code": null,
+ "type": "_ZoneFunction.T"
+ },
+ "661173290": {
+ "id": "field/661173290",
+ "kind": "field",
+ "name": "_current",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/958488954",
+ "children": [],
+ "inferredType": "[null|exact=StringMatch]",
+ "code": null,
+ "type": "Match"
+ },
+ "667376711": {
+ "id": "field/667376711",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_RETURN_TYPE_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "670005717": {
+ "id": "field/670005717",
+ "kind": "field",
+ "name": "_USE_ES6_MAPS",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool",
+ "const": true
+ },
+ "676869951": {
+ "id": "field/676869951",
+ "kind": "field",
+ "name": "_strings",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/123522748",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_strings\n",
+ "type": "dynamic"
+ },
+ "680112395": {
+ "id": "field/680112395",
+ "kind": "field",
+ "name": "isDynamicType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "698350444": {
+ "id": "field/698350444",
+ "kind": "field",
+ "name": "CURRENT_SCRIPT",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"currentScript\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "701363438": {
+ "id": "field/701363438",
+ "kind": "field",
+ "name": "isVoidType",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "701716969": {
+ "id": "field/701716969",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_VOID_RETURN_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "701889804": {
+ "id": "field/701889804",
+ "kind": "field",
+ "name": "stackTrace",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/388380492",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "stackTrace\n",
+ "type": "StackTrace"
+ },
+ "708528118": {
+ "id": "field/708528118",
+ "kind": "field",
+ "name": "stateWhencomplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "709451133": {
+ "id": "field/709451133",
+ "kind": "field",
+ "name": "receiverFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "710218156": {
+ "id": "field/710218156",
+ "kind": "field",
+ "name": "_tick",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/32494041",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "_tick\n",
+ "type": "int"
+ },
+ "714493219": {
+ "id": "field/714493219",
+ "kind": "field",
+ "name": "errorCallback",
+ "size": 14,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[null|subclass=Closure]",
+ "code": "errorCallback\n",
+ "type": "Function"
+ },
+ "717638099": {
+ "id": "field/717638099",
+ "kind": "field",
+ "name": "_MAX_INT32",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "727752212": {
+ "id": "field/727752212",
+ "kind": "field",
+ "name": "invalidValue",
+ "size": 39,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "invalidValue\ninvalidValue\ninvalidValue\n",
+ "type": "dynamic"
+ },
+ "728368328": {
+ "id": "field/728368328",
+ "kind": "field",
+ "name": "zero",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=Duration]",
+ "code": null,
+ "type": "Duration",
+ "const": true
+ },
+ "742643375": {
+ "id": "field/742643375",
+ "kind": "field",
+ "name": "_modifications",
+ "size": 27,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "__js_helper$_modifications\n",
+ "type": "int"
+ },
+ "743971885": {
+ "id": "field/743971885",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_NAMED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "759319863": {
+ "id": "field/759319863",
+ "kind": "field",
+ "name": "message",
+ "size": 24,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/143626168",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": "message\nmessage\nmessage\n",
+ "type": "dynamic"
+ },
+ "771598536": {
+ "id": "field/771598536",
+ "kind": "field",
+ "name": "_pattern",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/954836234",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "786919906": {
+ "id": "field/786919906",
+ "kind": "field",
+ "name": "_resultOrListeners",
+ "size": 20,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_resultOrListeners<\n",
+ "type": "dynamic"
+ },
+ "790173099": {
+ "id": "field/790173099",
+ "kind": "field",
+ "name": "millisecondsPerSecond",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "793498792": {
+ "id": "field/793498792",
+ "kind": "field",
+ "name": "isGivenTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "795392143": {
+ "id": "field/795392143",
+ "kind": "field",
+ "name": "microsecondsPerMillisecond",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "795691913": {
+ "id": "field/795691913",
+ "kind": "field",
+ "name": "_last",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": "__js_helper$_last\n",
+ "type": "LinkedHashMapCell"
+ },
+ "795932009": {
+ "id": "field/795932009",
+ "kind": "field",
+ "name": "_set",
+ "size": 5,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/113750884",
+ "children": [],
+ "inferredType": "[subclass=_LinkedHashSet]",
+ "code": "_set\n",
+ "type": "dynamic"
+ },
+ "805748014": {
+ "id": "field/805748014",
+ "kind": "field",
+ "name": "isSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "817840529": {
+ "id": "field/817840529",
+ "kind": "field",
+ "name": "_arguments",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "_arguments\n",
+ "type": "int"
+ },
+ "818740436": {
+ "id": "field/818740436",
+ "kind": "field",
+ "name": "_length",
+ "size": 20,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/722522722",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": "__js_helper$_length\n",
+ "type": "int"
+ },
+ "824622307": {
+ "id": "field/824622307",
+ "kind": "field",
+ "name": "_skipCount",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/680257415",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "826222890": {
+ "id": "field/826222890",
+ "kind": "field",
+ "name": "libraryName",
+ "size": 12,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/8008562",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "libraryName\n",
+ "type": "String"
+ },
+ "839347349": {
+ "id": "field/839347349",
+ "kind": "field",
+ "name": "_next",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/868658259",
+ "children": [],
+ "inferredType": "[null|exact=_LinkedHashSetCell]",
+ "code": "_next\n",
+ "type": "_LinkedHashSetCell"
+ },
+ "840091021": {
+ "id": "field/840091021",
+ "kind": "field",
+ "name": "optionalParameterCount",
+ "size": 23,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "optionalParameterCount\n",
+ "type": "int"
+ },
+ "840661601": {
+ "id": "field/840661601",
+ "kind": "field",
+ "name": "_stateValue",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "840751619": {
+ "id": "field/840751619",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/56472591",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "Object"
+ },
+ "842452872": {
+ "id": "field/842452872",
+ "kind": "field",
+ "name": "FUTURE_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "844410756": {
+ "id": "field/844410756",
+ "kind": "field",
+ "name": "DEFAULT_VALUES_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "849640421": {
+ "id": "field/849640421",
+ "kind": "field",
+ "name": "secondsPerMinute",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "850921879": {
+ "id": "field/850921879",
+ "kind": "field",
+ "name": "_start",
+ "size": 7,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/60704969",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "_start\n",
+ "type": "int"
+ },
+ "854910375": {
+ "id": "field/854910375",
+ "kind": "field",
+ "name": "FUTURE_OR_TYPE_ARGUMENT_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "864119084": {
+ "id": "field/864119084",
+ "kind": "field",
+ "name": "OBJECT_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "875039735": {
+ "id": "field/875039735",
+ "kind": "field",
+ "name": "NULL_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "879032432": {
+ "id": "field/879032432",
+ "kind": "field",
+ "name": "DEFERRED_PART_HASHES",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"deferredPartHashes\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "882420015": {
+ "id": "field/882420015",
+ "kind": "field",
+ "name": "_hasher",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1070558590",
+ "children": [],
+ "inferredType": "[subclass=Closure]",
+ "code": null,
+ "type": "int Function(_LinkedCustomHashSet.E)"
+ },
+ "889385105": {
+ "id": "field/889385105",
+ "kind": "field",
+ "name": "_once",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/32494041",
+ "children": [],
+ "inferredType": "Value([exact=JSBool], value: true)",
+ "code": "_once\n",
+ "type": "bool"
+ },
+ "906853360": {
+ "id": "field/906853360",
+ "kind": "field",
+ "name": "_argumentsExpr",
+ "size": 15,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "_argumentsExpr\n",
+ "type": "int"
+ },
+ "907727246": {
+ "id": "field/907727246",
+ "kind": "field",
+ "name": "_loadingLibraries",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=_Future])",
+ "code": null,
+ "type": "Map<String,Future<Null>>"
+ },
+ "908476008": {
+ "id": "field/908476008",
+ "kind": "field",
+ "name": "printToZone",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/689380639",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "void Function(String)"
+ },
+ "909027003": {
+ "id": "field/909027003",
+ "kind": "field",
+ "name": "dartException",
+ "size": 14,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/388380492",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "dartException\n",
+ "type": "dynamic"
+ },
+ "911662921": {
+ "id": "field/911662921",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_INDEX",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/156108056",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "914172423": {
+ "id": "field/914172423",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "914365883": {
+ "id": "field/914365883",
+ "kind": "field",
+ "name": "_element",
+ "size": 9,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/868658259",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_element\n",
+ "type": "dynamic"
+ },
+ "914591285": {
+ "id": "field/914591285",
+ "kind": "field",
+ "name": "_duration",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "926265914": {
+ "id": "field/926265914",
+ "kind": "field",
+ "name": "deferredLoadHook",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/966364039",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "void Function()"
+ },
+ "927731351": {
+ "id": "field/927731351",
+ "kind": "field",
+ "name": "_statePendingComplete",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "931441116": {
+ "id": "field/931441116",
+ "kind": "field",
+ "name": "_isInCallbackLoop",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "932611099": {
+ "id": "field/932611099",
+ "kind": "field",
+ "name": "_scheduleImmediateClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/611525899",
+ "children": [],
+ "inferredType": "[null|subclass=Closure]",
+ "code": null,
+ "type": "Function"
+ },
+ "936474054": {
+ "id": "field/936474054",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "944915314": {
+ "id": "field/944915314",
+ "kind": "field",
+ "name": "variableName",
+ "size": 13,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/93352366",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "variableName\n",
+ "type": "String"
+ },
+ "951952385": {
+ "id": "field/951952385",
+ "kind": "field",
+ "name": "minutesPerHour",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "952591811": {
+ "id": "field/952591811",
+ "kind": "field",
+ "name": "_lastCallback",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/1052666095",
+ "children": [],
+ "inferredType": "[null|exact=_AsyncCallbackEntry]",
+ "code": null,
+ "type": "_AsyncCallbackEntry"
+ },
+ "954188953": {
+ "id": "field/954188953",
+ "kind": "field",
+ "name": "length",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/175705485",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "length>\n",
+ "type": "int"
+ },
+ "960584371": {
+ "id": "field/960584371",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "962499289": {
+ "id": "field/962499289",
+ "kind": "field",
+ "name": "microsecondsPerMinute",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "966669333": {
+ "id": "field/966669333",
+ "kind": "field",
+ "name": "stateThen",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "969673523": {
+ "id": "field/969673523",
+ "kind": "field",
+ "name": "stateCatcherrorTest",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "973809471": {
+ "id": "field/973809471",
+ "kind": "field",
+ "name": "_validKey",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1070558590",
+ "children": [],
+ "inferredType": "[null|subclass=Closure]",
+ "code": null,
+ "type": "bool Function(dynamic)"
+ },
+ "978504898": {
+ "id": "field/978504898",
+ "kind": "field",
+ "name": "_state",
+ "size": 8,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/784178238",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": "_state<\n",
+ "type": "int"
+ },
+ "996559228": {
+ "id": "field/996559228",
+ "kind": "field",
+ "name": "_next",
+ "size": 18,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/500662026",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": "__js_helper$_next\n",
+ "type": "LinkedHashMapCell"
+ },
+ "996584734": {
+ "id": "field/996584734",
+ "kind": "field",
+ "name": "microsecondsPerHour",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/803883908",
+ "children": [],
+ "inferredType": "[subclass=JSUInt32]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "1001207931": {
+ "id": "field/1001207931",
+ "kind": "field",
+ "name": "_MIN_INT32",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/1003011102",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "1012307238": {
+ "id": "field/1012307238",
+ "kind": "field",
+ "name": "_receiver",
+ "size": 10,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/294355530",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": "_receiver\n",
+ "type": "int"
+ },
+ "1012317118": {
+ "id": "field/1012317118",
+ "kind": "field",
+ "name": "SIGNATURE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "1016218670": {
+ "id": "field/1016218670",
+ "kind": "field",
+ "name": "_falseFuture",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/438137149",
+ "children": [],
+ "inferredType": "[null|exact=_Future]",
+ "code": null,
+ "type": "_Future<bool>"
+ },
+ "1019580176": {
+ "id": "field/1019580176",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/73206861",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "1020283310": {
+ "id": "field/1020283310",
+ "kind": "field",
+ "name": "STATIC_FUNCTION_NAME_PROPERTY_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "library/965528565",
+ "children": [],
+ "inferredType": "Value([exact=JSString], value: \"$static_name\")",
+ "code": null,
+ "type": "String",
+ "const": true
+ },
+ "1023319897": {
+ "id": "field/1023319897",
+ "kind": "field",
+ "name": "stackTrace",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/577121337",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "stackTrace\n",
+ "type": "StackTrace"
+ },
+ "1025923114": {
+ "id": "field/1025923114",
+ "kind": "field",
+ "name": "future",
+ "size": 14,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/770824752",
+ "children": [],
+ "inferredType": "[exact=_Future]",
+ "code": "future\nfuture\n",
+ "type": "_Future<_Completer.T>"
+ },
+ "1047452024": {
+ "id": "field/1047452024",
+ "kind": "field",
+ "name": "_contents",
+ "size": 11,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/293821936",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": "_contents<\n",
+ "type": "String"
+ },
+ "1051861725": {
+ "id": "field/1051861725",
+ "kind": "field",
+ "name": "_modifications",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/742137989",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "1055298109": {
+ "id": "field/1055298109",
+ "kind": "field",
+ "name": "_nextListener",
+ "size": 14,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/80405414",
+ "children": [],
+ "inferredType": "[null|exact=_FutureListener]",
+ "code": "_nextListener\n",
+ "type": "_FutureListener<dynamic,dynamic>"
+ },
+ "1061931090": {
+ "id": "field/1061931090",
+ "kind": "field",
+ "name": "_name",
+ "size": 6,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/138211367",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": "_name\n",
+ "type": "String"
+ },
+ "1063003009": {
+ "id": "field/1063003009",
+ "kind": "field",
+ "name": "isCheckPropertyToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "class/716671121",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ }
+ },
+ "constant": {
+ "441220530": {
+ "id": "constant/441220530",
+ "kind": "constant",
+ "name": null,
+ "size": 32,
+ "outputUnit": "outputUnit/7045321",
+ "code": "C.C_Deferred = \"Hello, World!\";\n"
+ },
+ "545451897": {
+ "id": "constant/545451897",
+ "kind": "constant",
+ "name": null,
+ "size": 37,
+ "code": "C.JSInt_methods = J.JSInt.prototype;\n"
+ },
+ "586866313": {
+ "id": "constant/586866313",
+ "kind": "constant",
+ "name": null,
+ "size": 133,
+ "outputUnit": "outputUnit/669725655",
+ "code": "C.JS_CONST_u2C = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
+ },
+ "591262442": {
+ "id": "constant/591262442",
+ "kind": "constant",
+ "name": null,
+ "size": 49,
+ "code": "C.Interceptor_methods = J.Interceptor.prototype;\n"
+ },
+ "896140272": {
+ "id": "constant/896140272",
+ "kind": "constant",
+ "name": null,
+ "size": 41,
+ "code": "C.JSArray_methods = J.JSArray.prototype;\n"
+ },
+ "924662595": {
+ "id": "constant/924662595",
+ "kind": "constant",
+ "name": null,
+ "size": 35,
+ "outputUnit": "outputUnit/669725655",
+ "code": "C.C__RootZone = new P._RootZone();\n"
+ },
+ "940460073": {
+ "id": "constant/940460073",
+ "kind": "constant",
+ "name": null,
+ "size": 45,
+ "outputUnit": "outputUnit/669725655",
+ "code": "C.List_empty = Isolate.makeConstantList([]);\n"
+ },
+ "985964451": {
+ "id": "constant/985964451",
+ "kind": "constant",
+ "name": null,
+ "size": 43,
+ "code": "C.JSString_methods = J.JSString.prototype;\n"
+ }
+ },
+ "closure": {
+ "21475": {
+ "id": "closure/21475",
+ "kind": "closure",
+ "name": "_loadHunk_failure",
+ "size": 621,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/601638462"
+ },
+ "30023746": {
+ "id": "closure/30023746",
+ "kind": "closure",
+ "name": "_Future__propagateToListeners_handleValueCallback",
+ "size": 537,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/271674536",
+ "function": "function/231669663"
+ },
+ "35711406": {
+ "id": "closure/35711406",
+ "kind": "closure",
+ "name": "_rootHandleUncaughtError_closure",
+ "size": 503,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/364010339",
+ "function": "function/811310425"
+ },
+ "69029087": {
+ "id": "closure/69029087",
+ "kind": "closure",
+ "name": "_Future__propagateToListeners_handleWhenCompleteCallback_closure",
+ "size": 119,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/271674536",
+ "function": "function/869814859"
+ },
+ "181809904": {
+ "id": "closure/181809904",
+ "kind": "closure",
+ "name": "_Future__addListener_closure",
+ "size": 149,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/18599313",
+ "function": "function/853169304"
+ },
+ "231160067": {
+ "id": "closure/231160067",
+ "kind": "closure",
+ "name": "_AsyncRun__scheduleImmediateJsOverride_internalCallback",
+ "size": 107,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/67489885",
+ "function": "function/987295701"
+ },
+ "310226650": {
+ "id": "closure/310226650",
+ "kind": "closure",
+ "name": "_RootZone_bindCallback_closure",
+ "size": 179,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/633677177",
+ "function": "function/81057679"
+ },
+ "379635163": {
+ "id": "closure/379635163",
+ "kind": "closure",
+ "name": "_Future__asyncComplete_closure",
+ "size": 131,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/664449932",
+ "function": "function/667149426"
+ },
+ "385965656": {
+ "id": "closure/385965656",
+ "kind": "closure",
+ "name": "_Future__chainFuture_closure",
+ "size": 138,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/325386239",
+ "function": "function/899674954"
+ },
+ "411607690": {
+ "id": "closure/411607690",
+ "kind": "closure",
+ "name": "_Future__asyncCompleteError_closure",
+ "size": 155,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/263363184",
+ "function": "function/341046768"
+ },
+ "558424951": {
+ "id": "closure/558424951",
+ "kind": "closure",
+ "name": "_RootZone_bindCallbackGuarded_closure",
+ "size": 122,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/390828239",
+ "function": "function/726344781"
+ },
+ "561897310": {
+ "id": "closure/561897310",
+ "kind": "closure",
+ "name": "_AsyncAwaitCompleter_complete_closure",
+ "size": 132,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/618126497",
+ "function": "function/381680028"
+ },
+ "566195572": {
+ "id": "closure/566195572",
+ "kind": "closure",
+ "name": "_loadHunk_closure",
+ "size": 84,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/569040700"
+ },
+ "566195573": {
+ "id": "closure/566195573",
+ "kind": "closure",
+ "name": "_loadHunk_closure",
+ "size": 188,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/569040701"
+ },
+ "566195574": {
+ "id": "closure/566195574",
+ "kind": "closure",
+ "name": "_loadHunk_closure",
+ "size": 660,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/569040702"
+ },
+ "566195575": {
+ "id": "closure/566195575",
+ "kind": "closure",
+ "name": "_loadHunk_closure",
+ "size": 134,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/569040703"
+ },
+ "566195576": {
+ "id": "closure/566195576",
+ "kind": "closure",
+ "name": "_loadHunk_closure",
+ "size": 134,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/569040704"
+ },
+ "581471934": {
+ "id": "closure/581471934",
+ "kind": "closure",
+ "name": "_loadHunk_success",
+ "size": 200,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/326542993",
+ "function": "function/642229693"
+ },
+ "590764751": {
+ "id": "closure/590764751",
+ "kind": "closure",
+ "name": "Future_wait_closure",
+ "size": 651,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/385444888",
+ "function": "function/394885266"
+ },
+ "601101415": {
+ "id": "closure/601101415",
+ "kind": "closure",
+ "name": "loadDeferredLibrary_loadAndInitialize_closure",
+ "size": 321,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/53631526",
+ "function": "function/248883787"
+ },
+ "607767883": {
+ "id": "closure/607767883",
+ "kind": "closure",
+ "name": "_AsyncRun__initializeScheduleImmediate_internalCallback",
+ "size": 204,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/165003912",
+ "function": "function/426855684"
+ },
+ "624687097": {
+ "id": "closure/624687097",
+ "kind": "closure",
+ "name": "loadDeferredLibrary_closure",
+ "size": 219,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/53631526",
+ "function": "function/1031826457"
+ },
+ "629631311": {
+ "id": "closure/629631311",
+ "kind": "closure",
+ "name": "_wrapJsFunctionForAsync_closure",
+ "size": 139,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/663282901",
+ "function": "function/372361659"
+ },
+ "637416128": {
+ "id": "closure/637416128",
+ "kind": "closure",
+ "name": "_TimerImpl_internalCallback",
+ "size": 191,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/773230206",
+ "function": "function/249771766"
+ },
+ "637664934": {
+ "id": "closure/637664934",
+ "kind": "closure",
+ "name": "MapBase_mapToString_closure",
+ "size": 349,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/987508329",
+ "function": "function/139456351"
+ },
+ "741043867": {
+ "id": "closure/741043867",
+ "kind": "closure",
+ "name": "_AsyncAwaitCompleter_completeError_closure",
+ "size": 141,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/852141617",
+ "function": "function/248499885"
+ },
+ "745039293": {
+ "id": "closure/745039293",
+ "kind": "closure",
+ "name": "_awaitOnObject_closure",
+ "size": 138,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/337937411",
+ "function": "function/907920633"
+ },
+ "745039294": {
+ "id": "closure/745039294",
+ "kind": "closure",
+ "name": "_awaitOnObject_closure",
+ "size": 183,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/337937411",
+ "function": "function/907920634"
+ },
+ "771507318": {
+ "id": "closure/771507318",
+ "kind": "closure",
+ "name": "unwrapException_saveStackTrace",
+ "size": 232,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/265638794",
+ "function": "function/282990063"
+ },
+ "817717319": {
+ "id": "closure/817717319",
+ "kind": "closure",
+ "name": "_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback",
+ "size": 107,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/163884478",
+ "function": "function/603355140"
+ },
+ "827328529": {
+ "id": "closure/827328529",
+ "kind": "closure",
+ "name": "_Future__prependListeners_closure",
+ "size": 155,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/292751514",
+ "function": "function/947198569"
+ },
+ "830531955": {
+ "id": "closure/830531955",
+ "kind": "closure",
+ "name": "_Future__propagateToListeners_handleError",
+ "size": 990,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/271674536",
+ "function": "function/586712659"
+ },
+ "844800611": {
+ "id": "closure/844800611",
+ "kind": "closure",
+ "name": "loadDeferredLibrary_initializeSomeLoadedHunks",
+ "size": 1466,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/53631526",
+ "function": "function/311229745"
+ },
+ "913475889": {
+ "id": "closure/913475889",
+ "kind": "closure",
+ "name": "_AsyncRun__initializeScheduleImmediate_closure",
+ "size": 270,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/165003912",
+ "function": "function/469962639"
+ },
+ "938184478": {
+ "id": "closure/938184478",
+ "kind": "closure",
+ "name": "Future_wait_handleError",
+ "size": 597,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/385444888",
+ "function": "function/39412415"
+ },
+ "953553118": {
+ "id": "closure/953553118",
+ "kind": "closure",
+ "name": "_Future__chainForeignFuture_closure",
+ "size": 162,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/553149607",
+ "function": "function/797212862"
+ },
+ "953553119": {
+ "id": "closure/953553119",
+ "kind": "closure",
+ "name": "_Future__chainForeignFuture_closure",
+ "size": 230,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/553149607",
+ "function": "function/797212863"
+ },
+ "953553120": {
+ "id": "closure/953553120",
+ "kind": "closure",
+ "name": "_Future__chainForeignFuture_closure",
+ "size": 131,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/553149607",
+ "function": "function/797212864"
+ },
+ "963665986": {
+ "id": "closure/963665986",
+ "kind": "closure",
+ "name": "_Future__propagateToListeners_handleWhenCompleteCallback",
+ "size": 1604,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/271674536",
+ "function": "function/15204906"
+ },
+ "965562379": {
+ "id": "closure/965562379",
+ "kind": "closure",
+ "name": "loadDeferredLibrary_loadAndInitialize",
+ "size": 758,
+ "outputUnit": "outputUnit/669725655",
+ "parent": "function/53631526",
+ "function": "function/741666293"
+ }
+ }
+ },
+ "holding": {
+ "field/8965675": [
+ {
+ "id": "function/1060205580",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/79943715": [
+ {
+ "id": "function/229841336",
+ "mask": "null"
+ },
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/126292751": [
+ {
+ "id": "function/486797615",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/146902950": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/642221110",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/642221110",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ },
+ {
+ "id": "function/932567378",
+ "mask": "null"
+ }
+ ],
+ "field/169031325": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ },
+ {
+ "id": "function/932567378",
+ "mask": "null"
+ }
+ ],
+ "field/189240247": [
+ {
+ "id": "function/229841336",
+ "mask": "null"
+ },
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/244162491": [
+ {
+ "id": "function/128684509",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/261042870": [
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/337959975": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ },
+ {
+ "id": "function/814002251",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/814002251",
+ "mask": "null"
+ }
+ ],
+ "field/366629653": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/640815092",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/640815092",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/368849633": [
+ {
+ "id": "function/219348673",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/219348673",
+ "mask": "null"
+ },
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/381082880": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ },
+ {
+ "id": "function/932567378",
+ "mask": "null"
+ }
+ ],
+ "field/496557243": [
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/522978319": [
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/645317327": [
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/698206676",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/698206676",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ },
+ {
+ "id": "function/932567378",
+ "mask": "null"
+ }
+ ],
+ "field/646744185": [
+ {
+ "id": "function/553278458",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/553278458",
+ "mask": "null"
+ },
+ {
+ "id": "function/611761598",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/907727246": [
+ {
+ "id": "function/116599339",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "field/932611099": [
+ {
+ "id": "function/165003912",
+ "mask": "null"
+ },
+ {
+ "id": "function/788412943",
+ "mask": "null"
+ }
+ ],
+ "function/538046": [
+ {
+ "id": "function/38646490",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/542135743",
+ "mask": "[subclass=JsLinkedHashMap]"
+ }
+ ],
+ "function/15204906": [
+ {
+ "id": "field/24026359",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/304825305",
+ "mask": "null"
+ },
+ {
+ "id": "field/343514633",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "null"
+ },
+ {
+ "id": "function/430787578",
+ "mask": "null"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "null"
+ },
+ {
+ "id": "function/63166902",
+ "mask": "null"
+ },
+ {
+ "id": "function/869814859",
+ "mask": "null"
+ },
+ {
+ "id": "function/95599505",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/95599505",
+ "mask": "null"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "null"
+ }
+ ],
+ "function/15478302": [
+ {
+ "id": "field/1061931090",
+ "mask": "null"
+ },
+ {
+ "id": "field/125830184",
+ "mask": "null"
+ },
+ {
+ "id": "field/302220255",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/873863767",
+ "mask": "null"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "null"
+ }
+ ],
+ "function/15925204": [
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ },
+ {
+ "id": "function/352514166",
+ "mask": "null"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "null"
+ },
+ {
+ "id": "function/553149607",
+ "mask": "null"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "null"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "null"
+ },
+ {
+ "id": "function/967508646",
+ "mask": "null"
+ }
+ ],
+ "function/16600620": [
+ {
+ "id": "field/229586442",
+ "mask": "null"
+ },
+ {
+ "id": "function/30570662",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/30570662",
+ "mask": "null"
+ },
+ {
+ "id": "function/336424489",
+ "mask": "[subclass=_LinkedHashSet]"
+ },
+ {
+ "id": "function/448031436",
+ "mask": "null"
+ },
+ {
+ "id": "function/649401243",
+ "mask": "null"
+ },
+ {
+ "id": "function/920500080",
+ "mask": "[subclass=_LinkedHashSet]"
+ }
+ ],
+ "function/16930089": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/18599313",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/552271305",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/552271305",
+ "mask": "null"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "null"
+ }
+ ],
+ "function/18599313": [
+ {
+ "id": "field/1055298109",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "null"
+ },
+ {
+ "id": "function/18599313",
+ "mask": "null"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "null"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "null"
+ },
+ {
+ "id": "function/853169304",
+ "mask": "null"
+ },
+ {
+ "id": "function/941710296",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/941710296",
+ "mask": "null"
+ }
+ ],
+ "function/21667157": [
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/310457557",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/310457557",
+ "mask": "null"
+ },
+ {
+ "id": "function/689069465",
+ "mask": "null"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "null"
+ }
+ ],
+ "function/22227107": [
+ {
+ "id": "function/11804710",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/971160936",
+ "mask": "inlined"
+ }
+ ],
+ "function/31139860": [
+ {
+ "id": "field/410301694",
+ "mask": "null"
+ }
+ ],
+ "function/39412415": [
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ }
+ ],
+ "function/53631526": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/1031826457",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[exact=_Future]"
+ },
+ {
+ "id": "function/210974499",
+ "mask": "null"
+ },
+ {
+ "id": "function/311229745",
+ "mask": "null"
+ },
+ {
+ "id": "function/385444888",
+ "mask": "null"
+ },
+ {
+ "id": "function/436170439",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/492708773",
+ "mask": "null"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "null"
+ },
+ {
+ "id": "function/664449932",
+ "mask": "null"
+ },
+ {
+ "id": "function/741666293",
+ "mask": "null"
+ }
+ ],
+ "function/57158184": [
+ {
+ "id": "function/417406426",
+ "mask": "inlined"
+ }
+ ],
+ "function/63166902": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/262026503",
+ "mask": "null"
+ }
+ ],
+ "function/66015995": [
+ {
+ "id": "function/430480673",
+ "mask": "null"
+ }
+ ],
+ "function/67489885": [
+ {
+ "id": "function/263798810",
+ "mask": "null"
+ },
+ {
+ "id": "function/987295701",
+ "mask": "null"
+ }
+ ],
+ "function/67701762": [
+ {
+ "id": "function/717561594",
+ "mask": "inlined"
+ }
+ ],
+ "function/68051831": [
+ {
+ "id": "field/1023319897",
+ "mask": "null"
+ },
+ {
+ "id": "field/24026359",
+ "mask": "null"
+ },
+ {
+ "id": "field/304825305",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/714493219",
+ "mask": "null"
+ },
+ {
+ "id": "function/1036675160",
+ "mask": "null"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "null"
+ },
+ {
+ "id": "function/553851206",
+ "mask": "null"
+ },
+ {
+ "id": "function/968241519",
+ "mask": "null"
+ }
+ ],
+ "function/72077250": [
+ {
+ "id": "field/443749531",
+ "mask": "null"
+ }
+ ],
+ "function/79175019": [
+ {
+ "id": "function/717561594",
+ "mask": "inlined"
+ }
+ ],
+ "function/80270395": [
+ {
+ "id": "field/154746101",
+ "mask": "null"
+ }
+ ],
+ "function/80736041": [
+ {
+ "id": "function/712365042",
+ "mask": "null"
+ }
+ ],
+ "function/81057679": [
+ {
+ "id": "function/63166902",
+ "mask": "null"
+ }
+ ],
+ "function/82702408": [
+ {
+ "id": "field/29748263",
+ "mask": "null"
+ },
+ {
+ "id": "field/639289778",
+ "mask": "null"
+ },
+ {
+ "id": "field/931441116",
+ "mask": "null"
+ },
+ {
+ "id": "field/932611099",
+ "mask": "null"
+ },
+ {
+ "id": "function/546320785",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/546320785",
+ "mask": "null"
+ },
+ {
+ "id": "function/82702408",
+ "mask": "null"
+ },
+ {
+ "id": "function/831655802",
+ "mask": "null"
+ }
+ ],
+ "function/94108092": [
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ }
+ ],
+ "function/95599505": [
+ {
+ "id": "function/373761717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/430787578",
+ "mask": "inlined"
+ }
+ ],
+ "function/96457955": [
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "null"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "null"
+ }
+ ],
+ "function/98156511": [
+ {
+ "id": "field/347672432",
+ "mask": "null"
+ },
+ {
+ "id": "field/676869951",
+ "mask": "null"
+ },
+ {
+ "id": "function/130131853",
+ "mask": "null"
+ },
+ {
+ "id": "function/702510",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/702510",
+ "mask": "null"
+ },
+ {
+ "id": "function/870367819",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/870367819",
+ "mask": "null"
+ },
+ {
+ "id": "function/998984172",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/998984172",
+ "mask": "null"
+ }
+ ],
+ "function/99251871": [
+ {
+ "id": "field/435679137",
+ "mask": "null"
+ },
+ {
+ "id": "field/60920969",
+ "mask": "null"
+ },
+ {
+ "id": "field/635439616",
+ "mask": "null"
+ },
+ {
+ "id": "function/676035370",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/676035370",
+ "mask": "null"
+ }
+ ],
+ "function/99501118": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/15925204",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/271556856",
+ "mask": "null"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "null"
+ }
+ ],
+ "function/102471615": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/271556856",
+ "mask": "null"
+ },
+ {
+ "id": "function/664449932",
+ "mask": "null"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "null"
+ }
+ ],
+ "function/108053021": [
+ {
+ "id": "function/722993348",
+ "mask": "inlined"
+ }
+ ],
+ "function/116203851": [
+ {
+ "id": "field/826222890",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/116583875": [
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/766396929",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/852141617",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/116599339": [
+ {
+ "id": "function/123959555",
+ "mask": "null"
+ },
+ {
+ "id": "function/494583530",
+ "mask": "null"
+ },
+ {
+ "id": "function/573775196",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/573775196",
+ "mask": "null"
+ },
+ {
+ "id": "function/687991937",
+ "mask": "null"
+ }
+ ],
+ "function/128684509": [
+ {
+ "id": "function/120153851",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/120153851",
+ "mask": "null"
+ },
+ {
+ "id": "function/969026469",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/969026469",
+ "mask": "null"
+ }
+ ],
+ "function/130041650": [
+ {
+ "id": "field/190358771",
+ "mask": "null"
+ }
+ ],
+ "function/130131853": [
+ {
+ "id": "field/229586442",
+ "mask": "null"
+ },
+ {
+ "id": "function/114607430",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/114607430",
+ "mask": "null"
+ },
+ {
+ "id": "function/336424489",
+ "mask": "[subclass=_LinkedHashSet]"
+ },
+ {
+ "id": "function/920500080",
+ "mask": "[subclass=_LinkedHashSet]"
+ }
+ ],
+ "function/139456351": [
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ },
+ {
+ "id": "function/335045122",
+ "mask": "null"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ }
+ ],
+ "function/143741280": [
+ {
+ "id": "field/23408725",
+ "mask": "null"
+ },
+ {
+ "id": "field/414662379",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/144469777": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/208283907",
+ "mask": "null"
+ },
+ {
+ "id": "function/308590446",
+ "mask": "null"
+ },
+ {
+ "id": "function/427434111",
+ "mask": "null"
+ },
+ {
+ "id": "function/952130975",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/952130975",
+ "mask": "null"
+ }
+ ],
+ "function/150523169": [
+ {
+ "id": "field/373519716",
+ "mask": "null"
+ },
+ {
+ "id": "field/850921879",
+ "mask": "null"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ }
+ ],
+ "function/150705145": [
+ {
+ "id": "field/944915314",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/160969748": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "null"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "null"
+ }
+ ],
+ "function/162825675": [
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/162872908": [
+ {
+ "id": "function/94108092",
+ "mask": "inlined"
+ }
+ ],
+ "function/163884478": [
+ {
+ "id": "function/263798810",
+ "mask": "null"
+ },
+ {
+ "id": "function/603355140",
+ "mask": "null"
+ }
+ ],
+ "function/163889622": [
+ {
+ "id": "function/435575019",
+ "mask": "null"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "null"
+ }
+ ],
+ "function/165003912": [
+ {
+ "id": "function/163884478",
+ "mask": "null"
+ },
+ {
+ "id": "function/263798810",
+ "mask": "null"
+ },
+ {
+ "id": "function/426855684",
+ "mask": "null"
+ },
+ {
+ "id": "function/469962639",
+ "mask": "null"
+ },
+ {
+ "id": "function/608925525",
+ "mask": "null"
+ },
+ {
+ "id": "function/67489885",
+ "mask": "null"
+ },
+ {
+ "id": "function/717561594",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/717561594",
+ "mask": "null"
+ }
+ ],
+ "function/167405219": [
+ {
+ "id": "function/873863767",
+ "mask": "null"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "null"
+ }
+ ],
+ "function/176570718": [
+ {
+ "id": "function/580865640",
+ "mask": "null"
+ }
+ ],
+ "function/176842663": [
+ {
+ "id": "field/435679137",
+ "mask": "null"
+ },
+ {
+ "id": "field/635439616",
+ "mask": "null"
+ },
+ {
+ "id": "field/646361925",
+ "mask": "null"
+ },
+ {
+ "id": "field/65712884",
+ "mask": "null"
+ },
+ {
+ "id": "field/795932009",
+ "mask": "null"
+ },
+ {
+ "id": "field/839347349",
+ "mask": "null"
+ },
+ {
+ "id": "field/914365883",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/701409225",
+ "mask": "null"
+ }
+ ],
+ "function/193787732": [
+ {
+ "id": "function/264370095",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ }
+ ],
+ "function/203738274": [
+ {
+ "id": "function/456567103",
+ "mask": "null"
+ }
+ ],
+ "function/204916897": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/714600619",
+ "mask": "null"
+ }
+ ],
+ "function/205154197": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/553851206",
+ "mask": "null"
+ },
+ {
+ "id": "function/606572177",
+ "mask": "null"
+ },
+ {
+ "id": "function/888466063",
+ "mask": "null"
+ },
+ {
+ "id": "function/904115316",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/904115316",
+ "mask": "null"
+ }
+ ],
+ "function/210974499": [
+ {
+ "id": "function/1024143730",
+ "mask": "null"
+ },
+ {
+ "id": "function/437395524",
+ "mask": "null"
+ },
+ {
+ "id": "function/653699436",
+ "mask": "null"
+ },
+ {
+ "id": "function/997099929",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/997099929",
+ "mask": "null"
+ }
+ ],
+ "function/221934998": [
+ {
+ "id": "function/144469777",
+ "mask": "Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)"
+ },
+ {
+ "id": "function/407139250",
+ "mask": "Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)"
+ },
+ {
+ "id": "function/738104072",
+ "mask": "null"
+ }
+ ],
+ "function/230858033": [
+ {
+ "id": "function/193787732",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/193787732",
+ "mask": "null"
+ },
+ {
+ "id": "function/230858033",
+ "mask": "null"
+ },
+ {
+ "id": "function/264370095",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/264370095",
+ "mask": "null"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/299781104",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/299781104",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/467155193",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/467155193",
+ "mask": "null"
+ },
+ {
+ "id": "function/501712645",
+ "mask": "null"
+ },
+ {
+ "id": "function/737782244",
+ "mask": "null"
+ }
+ ],
+ "function/231669663": [
+ {
+ "id": "field/304825305",
+ "mask": "null"
+ },
+ {
+ "id": "field/343514633",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/350333970",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/350333970",
+ "mask": "null"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/692185405",
+ "mask": "null"
+ },
+ {
+ "id": "function/968241519",
+ "mask": "null"
+ }
+ ],
+ "function/243489700": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/427434111",
+ "mask": "null"
+ }
+ ],
+ "function/248499885": [
+ {
+ "id": "field/334228980",
+ "mask": "null"
+ },
+ {
+ "id": "function/766396929",
+ "mask": "null"
+ }
+ ],
+ "function/248883787": [
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ }
+ ],
+ "function/249771766": [
+ {
+ "id": "field/710218156",
+ "mask": "null"
+ },
+ {
+ "id": "field/9743357",
+ "mask": "null"
+ }
+ ],
+ "function/253794122": [
+ {
+ "id": "field/259683855",
+ "mask": "null"
+ },
+ {
+ "id": "field/386221903",
+ "mask": "null"
+ },
+ {
+ "id": "function/143567266",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/143567266",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/221934998",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/273024378",
+ "mask": "null"
+ },
+ {
+ "id": "function/275681184",
+ "mask": "null"
+ },
+ {
+ "id": "function/320253842",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/320253842",
+ "mask": "null"
+ },
+ {
+ "id": "function/393060060",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/393060060",
+ "mask": "null"
+ },
+ {
+ "id": "function/684612786",
+ "mask": "null"
+ },
+ {
+ "id": "function/726979110",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/738104072",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/791079680",
+ "mask": "null"
+ },
+ {
+ "id": "function/906797235",
+ "mask": "null"
+ }
+ ],
+ "function/262026503": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "null"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "null"
+ }
+ ],
+ "function/263363184": [
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/341046768",
+ "mask": "null"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ }
+ ],
+ "function/263798810": [
+ {
+ "id": "function/309114439",
+ "mask": "null"
+ }
+ ],
+ "function/265638794": [
+ {
+ "id": "field/146902950",
+ "mask": "null"
+ },
+ {
+ "id": "field/169031325",
+ "mask": "null"
+ },
+ {
+ "id": "field/189240247",
+ "mask": "null"
+ },
+ {
+ "id": "field/337959975",
+ "mask": "null"
+ },
+ {
+ "id": "field/366629653",
+ "mask": "null"
+ },
+ {
+ "id": "field/368849633",
+ "mask": "null"
+ },
+ {
+ "id": "field/381082880",
+ "mask": "null"
+ },
+ {
+ "id": "field/645317327",
+ "mask": "null"
+ },
+ {
+ "id": "field/646744185",
+ "mask": "null"
+ },
+ {
+ "id": "field/79943715",
+ "mask": "null"
+ },
+ {
+ "id": "field/909027003",
+ "mask": "null"
+ },
+ {
+ "id": "function/148863126",
+ "mask": "null"
+ },
+ {
+ "id": "function/282990063",
+ "mask": "null"
+ },
+ {
+ "id": "function/336352070",
+ "mask": "null"
+ },
+ {
+ "id": "function/430193009",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/430193009",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/632290992",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/632290992",
+ "mask": "null"
+ },
+ {
+ "id": "function/64968119",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/64968119",
+ "mask": "null"
+ },
+ {
+ "id": "function/725505159",
+ "mask": "null"
+ },
+ {
+ "id": "function/752981084",
+ "mask": "null"
+ },
+ {
+ "id": "function/756575134",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/756575134",
+ "mask": "null"
+ },
+ {
+ "id": "function/885768717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/885768717",
+ "mask": "null"
+ }
+ ],
+ "function/271674536": [
+ {
+ "id": "field/1023319897",
+ "mask": "null"
+ },
+ {
+ "id": "field/1055298109",
+ "mask": "null"
+ },
+ {
+ "id": "field/187449514",
+ "mask": "null"
+ },
+ {
+ "id": "field/24026359",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/304825305",
+ "mask": "null"
+ },
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "null"
+ },
+ {
+ "id": "function/15204906",
+ "mask": "null"
+ },
+ {
+ "id": "function/231669663",
+ "mask": "null"
+ },
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "null"
+ },
+ {
+ "id": "function/352514166",
+ "mask": "null"
+ },
+ {
+ "id": "function/364010339",
+ "mask": "null"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "null"
+ },
+ {
+ "id": "function/39768413",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/39768413",
+ "mask": "null"
+ },
+ {
+ "id": "function/417406426",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "null"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "null"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "null"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "null"
+ },
+ {
+ "id": "function/586712659",
+ "mask": "null"
+ },
+ {
+ "id": "function/613322203",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/613322203",
+ "mask": "null"
+ },
+ {
+ "id": "function/748173162",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/748173162",
+ "mask": "null"
+ },
+ {
+ "id": "function/853973218",
+ "mask": "null"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "null"
+ },
+ {
+ "id": "function/919469907",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/919469907",
+ "mask": "null"
+ },
+ {
+ "id": "function/971160936",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/971160936",
+ "mask": "null"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "null"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "null"
+ }
+ ],
+ "function/271854590": [
+ {
+ "id": "function/102471615",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/618126497",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/99501118",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/272589495": [
+ {
+ "id": "field/261042870",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ }
+ ],
+ "function/273024378": [
+ {
+ "id": "field/386221903",
+ "mask": "null"
+ },
+ {
+ "id": "field/435101137",
+ "mask": "null"
+ },
+ {
+ "id": "function/221934998",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/292195356",
+ "mask": "null"
+ },
+ {
+ "id": "function/320253842",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/320253842",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/476860251",
+ "mask": "null"
+ },
+ {
+ "id": "function/724475372",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/724475372",
+ "mask": "null"
+ },
+ {
+ "id": "function/726979110",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/738104072",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/922840913",
+ "mask": "null"
+ }
+ ],
+ "function/275957193": [
+ {
+ "id": "field/347672432",
+ "mask": "null"
+ },
+ {
+ "id": "field/676869951",
+ "mask": "null"
+ },
+ {
+ "id": "function/1002752870",
+ "mask": "null"
+ },
+ {
+ "id": "function/16600620",
+ "mask": "null"
+ },
+ {
+ "id": "function/448031436",
+ "mask": "null"
+ },
+ {
+ "id": "function/870367819",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/870367819",
+ "mask": "null"
+ },
+ {
+ "id": "function/998984172",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/998984172",
+ "mask": "null"
+ }
+ ],
+ "function/292195356": [
+ {
+ "id": "function/393060060",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/393060060",
+ "mask": "null"
+ },
+ {
+ "id": "function/478486472",
+ "mask": "null"
+ }
+ ],
+ "function/292751514": [
+ {
+ "id": "field/1055298109",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "null"
+ },
+ {
+ "id": "function/292751514",
+ "mask": "null"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "null"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "null"
+ },
+ {
+ "id": "function/853973218",
+ "mask": "null"
+ },
+ {
+ "id": "function/941710296",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/941710296",
+ "mask": "null"
+ },
+ {
+ "id": "function/947198569",
+ "mask": "null"
+ }
+ ],
+ "function/292889014": [
+ {
+ "id": "function/275681184",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/275681184",
+ "mask": "null"
+ }
+ ],
+ "function/301932486": [
+ {
+ "id": "function/806420362",
+ "mask": "inlined"
+ }
+ ],
+ "function/302617892": [
+ {
+ "id": "function/1051093947",
+ "mask": "[subclass=Closure]"
+ },
+ {
+ "id": "function/15478302",
+ "mask": "[subclass=Closure]"
+ },
+ {
+ "id": "function/285148179",
+ "mask": "[subclass=Closure]"
+ },
+ {
+ "id": "function/873863767",
+ "mask": "null"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "null"
+ }
+ ],
+ "function/308590446": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ }
+ ],
+ "function/309114439": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/301932486",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/301932486",
+ "mask": "null"
+ },
+ {
+ "id": "function/806420362",
+ "mask": "null"
+ }
+ ],
+ "function/311229745": [
+ {
+ "id": "field/496557243",
+ "mask": "null"
+ },
+ {
+ "id": "function/162825675",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/754771250",
+ "mask": "null"
+ }
+ ],
+ "function/312768442": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/349997389",
+ "mask": "null"
+ },
+ {
+ "id": "function/827571674",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/827571674",
+ "mask": "null"
+ }
+ ],
+ "function/325386239": [
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/352514166",
+ "mask": "null"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "null"
+ },
+ {
+ "id": "function/553149607",
+ "mask": "null"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ },
+ {
+ "id": "function/899674954",
+ "mask": "null"
+ },
+ {
+ "id": "function/967508646",
+ "mask": "null"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/983564685",
+ "mask": "null"
+ }
+ ],
+ "function/326542993": [
+ {
+ "id": "field/126292751",
+ "mask": "null"
+ },
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "field/496557243",
+ "mask": "null"
+ },
+ {
+ "id": "field/8965675",
+ "mask": "null"
+ },
+ {
+ "id": "field/907727246",
+ "mask": "null"
+ },
+ {
+ "id": "function/1014821943",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1014821943",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[exact=_Future]"
+ },
+ {
+ "id": "function/263798810",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/312768442",
+ "mask": "[null|exact=JSString]"
+ },
+ {
+ "id": "function/312768442",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/569040700",
+ "mask": "null"
+ },
+ {
+ "id": "function/569040701",
+ "mask": "null"
+ },
+ {
+ "id": "function/569040702",
+ "mask": "null"
+ },
+ {
+ "id": "function/569040703",
+ "mask": "null"
+ },
+ {
+ "id": "function/569040704",
+ "mask": "null"
+ },
+ {
+ "id": "function/601638462",
+ "mask": "null"
+ },
+ {
+ "id": "function/642229693",
+ "mask": "null"
+ },
+ {
+ "id": "function/665416673",
+ "mask": "null"
+ },
+ {
+ "id": "function/717561594",
+ "mask": "null"
+ },
+ {
+ "id": "function/779765691",
+ "mask": "null"
+ },
+ {
+ "id": "function/79175019",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/79175019",
+ "mask": "null"
+ },
+ {
+ "id": "function/820195095",
+ "mask": "null"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "null"
+ },
+ {
+ "id": "function/942227822",
+ "mask": "[null|exact=JSString]"
+ }
+ ],
+ "function/330018012": [
+ {
+ "id": "function/337937411",
+ "mask": "null"
+ }
+ ],
+ "function/335045122": [
+ {
+ "id": "function/507333070",
+ "mask": "inlined"
+ }
+ ],
+ "function/336168458": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/164775669",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/164775669",
+ "mask": "null"
+ },
+ {
+ "id": "function/390828239",
+ "mask": "null"
+ },
+ {
+ "id": "function/417406426",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ },
+ {
+ "id": "function/992393187",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/992393187",
+ "mask": "null"
+ }
+ ],
+ "function/336424489": [
+ {
+ "id": "function/175997763",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/347974666",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/564404904",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/749970393",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/796179660",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/80736041",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/808159833",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/854200700",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/860159722",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/878987098",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/91425461",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/337937411": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "null"
+ },
+ {
+ "id": "function/16930089",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/901078366",
+ "mask": "null"
+ },
+ {
+ "id": "function/907920633",
+ "mask": "null"
+ },
+ {
+ "id": "function/907920634",
+ "mask": "null"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "null"
+ }
+ ],
+ "function/341046768": [
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ }
+ ],
+ "function/350333970": [
+ {
+ "id": "function/373761717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/692185405",
+ "mask": "inlined"
+ }
+ ],
+ "function/350634082": [
+ {
+ "id": "function/162872908",
+ "mask": "inlined"
+ }
+ ],
+ "function/351622741": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/262026503",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/364010339",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/613322203",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/613322203",
+ "mask": "null"
+ }
+ ],
+ "function/352514166": [
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1031131035",
+ "mask": "null"
+ },
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ },
+ {
+ "id": "function/292751514",
+ "mask": "null"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "null"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/556268777",
+ "mask": "null"
+ },
+ {
+ "id": "function/638807044",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/638807044",
+ "mask": "null"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/722405802",
+ "mask": "null"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/772606842",
+ "mask": "null"
+ }
+ ],
+ "function/355012434": [
+ {
+ "id": "function/1033661873",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1042482096",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1042482096",
+ "mask": "null"
+ },
+ {
+ "id": "function/1051093947",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/109394176",
+ "mask": "null"
+ },
+ {
+ "id": "function/116203851",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/130041650",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/143741280",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/150705145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/15478302",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/167405219",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/173469993",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/176570718",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/285148179",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/302617892",
+ "mask": "null"
+ },
+ {
+ "id": "function/369614033",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/380325809",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/431897853",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/436231120",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/440018750",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/464959827",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/474133145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/550544609",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/565013754",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/613119304",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/636061569",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/66015995",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/72077250",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/730595126",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/745741399",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/793410068",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/848267879",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/891910474",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/93381370",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/944731702",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/962973203",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/991909617",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/357627841": [
+ {
+ "id": "function/188708191",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/188708191",
+ "mask": "null"
+ }
+ ],
+ "function/358340511": [
+ {
+ "id": "function/335045122",
+ "mask": "inlined"
+ }
+ ],
+ "function/364010339": [
+ {
+ "id": "function/811310425",
+ "mask": "null"
+ },
+ {
+ "id": "function/887884267",
+ "mask": "null"
+ }
+ ],
+ "function/367762222": [
+ {
+ "id": "function/357240896",
+ "mask": "inlined"
+ }
+ ],
+ "function/369614033": [
+ {
+ "id": "function/1060110710",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1060110710",
+ "mask": "null"
+ },
+ {
+ "id": "function/580865640",
+ "mask": "null"
+ }
+ ],
+ "function/370120278": [
+ {
+ "id": "function/171287120",
+ "mask": "inlined"
+ }
+ ],
+ "function/372037963": [
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ },
+ {
+ "id": "function/540949546",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/540949546",
+ "mask": "null"
+ }
+ ],
+ "function/381680028": [
+ {
+ "id": "field/334228980",
+ "mask": "null"
+ },
+ {
+ "id": "function/99501118",
+ "mask": "null"
+ }
+ ],
+ "function/385444888": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/263363184",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/338379080",
+ "mask": "null"
+ },
+ {
+ "id": "function/39412415",
+ "mask": "null"
+ },
+ {
+ "id": "function/394885266",
+ "mask": "null"
+ },
+ {
+ "id": "function/415620823",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/492708773",
+ "mask": "null"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/544746737",
+ "mask": "null"
+ },
+ {
+ "id": "function/664449932",
+ "mask": "null"
+ },
+ {
+ "id": "function/717417998",
+ "mask": "null"
+ },
+ {
+ "id": "function/754498726",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/754498726",
+ "mask": "null"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "null"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "null"
+ }
+ ],
+ "function/388977016": [
+ {
+ "id": "function/507333070",
+ "mask": "inlined"
+ }
+ ],
+ "function/390828239": [
+ {
+ "id": "function/726344781",
+ "mask": "null"
+ }
+ ],
+ "function/394885266": [
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ },
+ {
+ "id": "function/96457955",
+ "mask": "null"
+ }
+ ],
+ "function/399195151": [
+ {
+ "id": "function/606513838",
+ "mask": "inlined"
+ }
+ ],
+ "function/400990606": [
+ {
+ "id": "function/370295194",
+ "mask": "inlined"
+ }
+ ],
+ "function/405266426": [
+ {
+ "id": "function/977867690",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/977867690",
+ "mask": "null"
+ }
+ ],
+ "function/407139250": [
+ {
+ "id": "function/1016194181",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/208283907",
+ "mask": "null"
+ },
+ {
+ "id": "function/243489700",
+ "mask": "null"
+ },
+ {
+ "id": "function/271556856",
+ "mask": "null"
+ },
+ {
+ "id": "function/308590446",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/458931695",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/458931695",
+ "mask": "null"
+ },
+ {
+ "id": "function/482441661",
+ "mask": "Union([exact=JSUInt31], [subclass=JSArray])"
+ },
+ {
+ "id": "function/965257927",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/965257927",
+ "mask": "null"
+ },
+ {
+ "id": "function/979933658",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/979933658",
+ "mask": "null"
+ }
+ ],
+ "function/415620823": [
+ {
+ "id": "function/968358412",
+ "mask": "inlined"
+ }
+ ],
+ "function/418915149": [
+ {
+ "id": "field/954188953",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1008544093",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/186999466",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/31139860",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/430236296",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/521874428",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/714600619",
+ "mask": "null"
+ },
+ {
+ "id": "function/756812986",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/950782810",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/430236296": [
+ {
+ "id": "function/1027535878",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/1047605700",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/176842663",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/852972506",
+ "mask": "[subclass=Iterable]"
+ }
+ ],
+ "function/430480673": [
+ {
+ "id": "field/522978319",
+ "mask": "null"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "null"
+ },
+ {
+ "id": "function/335045122",
+ "mask": "null"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "null"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ },
+ {
+ "id": "function/540949546",
+ "mask": "null"
+ },
+ {
+ "id": "function/778541068",
+ "mask": "null"
+ },
+ {
+ "id": "function/789545114",
+ "mask": "null"
+ },
+ {
+ "id": "function/843997665",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/843997665",
+ "mask": "null"
+ },
+ {
+ "id": "function/921677904",
+ "mask": "null"
+ }
+ ],
+ "function/431897853": [
+ {
+ "id": "field/650081226",
+ "mask": "null"
+ }
+ ],
+ "function/435575019": [
+ {
+ "id": "function/1033661873",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1051093947",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/116203851",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/130041650",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/143741280",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/150705145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/15478302",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/167405219",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/173469993",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/176570718",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/285148179",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/369614033",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/380325809",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/431897853",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/436231120",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/440018750",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/464959827",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/474133145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/550544609",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/565013754",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/613119304",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/636061569",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/66015995",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/72077250",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/730595126",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/745741399",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/793410068",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/848267879",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/891910474",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/93381370",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/944731702",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/962973203",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/991909617",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/436170439": [
+ {
+ "id": "function/144469777",
+ "mask": "Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ }
+ ],
+ "function/436231120": [
+ {
+ "id": "field/127038922",
+ "mask": "null"
+ },
+ {
+ "id": "field/460958077",
+ "mask": "null"
+ }
+ ],
+ "function/437395524": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/427434111",
+ "mask": "null"
+ },
+ {
+ "id": "function/456567103",
+ "mask": "null"
+ }
+ ],
+ "function/445547062": [
+ {
+ "id": "function/1033661873",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1051093947",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/116203851",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/130041650",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/143741280",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/150705145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/15478302",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/167405219",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/173469993",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/176570718",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/285148179",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/369614033",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/380325809",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/431897853",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/436231120",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/440018750",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/464959827",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/474133145",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/550544609",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/565013754",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/613119304",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/636061569",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/66015995",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/679532174",
+ "mask": "null"
+ },
+ {
+ "id": "function/72077250",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/730595126",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/745741399",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/793410068",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/848267879",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/891910474",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/93381370",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/944731702",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/962973203",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/991909617",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/448031436": [
+ {
+ "id": "function/30570662",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/30570662",
+ "mask": "null"
+ },
+ {
+ "id": "function/380929608",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/380929608",
+ "mask": "null"
+ }
+ ],
+ "function/448227795": [
+ {
+ "id": "field/4524053",
+ "mask": "null"
+ }
+ ],
+ "function/453686242": [
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ }
+ ],
+ "function/456567103": [
+ {
+ "id": "function/1024143730",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1024143730",
+ "mask": "null"
+ },
+ {
+ "id": "function/478486472",
+ "mask": "null"
+ }
+ ],
+ "function/464959827": [
+ {
+ "id": "field/4524053",
+ "mask": "null"
+ },
+ {
+ "id": "field/509005655",
+ "mask": "null"
+ },
+ {
+ "id": "field/727752212",
+ "mask": "null"
+ },
+ {
+ "id": "field/759319863",
+ "mask": "null"
+ },
+ {
+ "id": "function/1024465827",
+ "mask": "[subclass=ArgumentError]"
+ },
+ {
+ "id": "function/275271990",
+ "mask": "[subclass=ArgumentError]"
+ },
+ {
+ "id": "function/355012434",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/448227795",
+ "mask": "[subclass=ArgumentError]"
+ },
+ {
+ "id": "function/539017937",
+ "mask": "[subclass=ArgumentError]"
+ },
+ {
+ "id": "function/620005669",
+ "mask": "[subclass=ArgumentError]"
+ },
+ {
+ "id": "function/717852932",
+ "mask": "[subclass=ArgumentError]"
+ }
+ ],
+ "function/474133145": [
+ {
+ "id": "field/140571055",
+ "mask": "null"
+ }
+ ],
+ "function/476860251": [
+ {
+ "id": "function/791079680",
+ "mask": "null"
+ }
+ ],
+ "function/477609809": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ }
+ ],
+ "function/482441661": [
+ {
+ "id": "function/199851072",
+ "mask": "null"
+ }
+ ],
+ "function/483766990": [
+ {
+ "id": "function/551570860",
+ "mask": "inlined"
+ }
+ ],
+ "function/487598887": [
+ {
+ "id": "function/230858033",
+ "mask": "null"
+ }
+ ],
+ "function/491418529": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/679532174",
+ "mask": "null"
+ }
+ ],
+ "function/492708773": [
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ }
+ ],
+ "function/494094492": [
+ {
+ "id": "field/373519716",
+ "mask": "null"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ }
+ ],
+ "function/499330809": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/208283907",
+ "mask": "null"
+ }
+ ],
+ "function/499807915": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/679532174",
+ "mask": "null"
+ }
+ ],
+ "function/501712645": [
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "null"
+ },
+ {
+ "id": "function/230858033",
+ "mask": "null"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/335045122",
+ "mask": "null"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "null"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "null"
+ }
+ ],
+ "function/513053773": [
+ {
+ "id": "function/492708773",
+ "mask": "inlined"
+ }
+ ],
+ "function/519629171": [
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "function/853973218",
+ "mask": "null"
+ }
+ ],
+ "function/521874428": [
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ }
+ ],
+ "function/528985088": [
+ {
+ "id": "field/701889804",
+ "mask": "null"
+ },
+ {
+ "id": "function/272627576",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/272627576",
+ "mask": "null"
+ }
+ ],
+ "function/544746737": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/701409225",
+ "mask": "null"
+ }
+ ],
+ "function/549577701": [
+ {
+ "id": "function/992679489",
+ "mask": "inlined"
+ }
+ ],
+ "function/553149607": [
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/336168458",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "null"
+ },
+ {
+ "id": "function/797212862",
+ "mask": "null"
+ },
+ {
+ "id": "function/797212863",
+ "mask": "null"
+ },
+ {
+ "id": "function/797212864",
+ "mask": "null"
+ }
+ ],
+ "function/553851206": [
+ {
+ "id": "function/136972596",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/136972596",
+ "mask": "null"
+ },
+ {
+ "id": "function/292889014",
+ "mask": "null"
+ },
+ {
+ "id": "function/419713835",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/419713835",
+ "mask": "null"
+ },
+ {
+ "id": "function/658082982",
+ "mask": "null"
+ },
+ {
+ "id": "function/821285776",
+ "mask": "null"
+ }
+ ],
+ "function/564404904": [
+ {
+ "id": "field/125830184",
+ "mask": "null"
+ },
+ {
+ "id": "field/180845508",
+ "mask": "null"
+ },
+ {
+ "id": "field/302220255",
+ "mask": "null"
+ },
+ {
+ "id": "function/175997763",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/347974666",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/564404904",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/712365042",
+ "mask": "null"
+ },
+ {
+ "id": "function/749970393",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/796179660",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/80736041",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/808159833",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/854200700",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/860159722",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/91425461",
+ "mask": "[subclass=Object]"
+ }
+ ],
+ "function/569040701": [
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ }
+ ],
+ "function/569040702": [
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ }
+ ],
+ "function/573775196": [
+ {
+ "id": "function/123959555",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/494583530",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/687991937",
+ "mask": "inlined"
+ }
+ ],
+ "function/574550003": [
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "null"
+ },
+ {
+ "id": "function/22227107",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/22227107",
+ "mask": "null"
+ },
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ },
+ {
+ "id": "function/519629171",
+ "mask": "null"
+ },
+ {
+ "id": "function/971160936",
+ "mask": "null"
+ }
+ ],
+ "function/580865640": [
+ {
+ "id": "field/1047452024",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ },
+ {
+ "id": "field/522978319",
+ "mask": "null"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "null"
+ },
+ {
+ "id": "function/335045122",
+ "mask": "null"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "null"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ },
+ {
+ "id": "function/540949546",
+ "mask": "null"
+ },
+ {
+ "id": "function/778541068",
+ "mask": "null"
+ },
+ {
+ "id": "function/789545114",
+ "mask": "null"
+ },
+ {
+ "id": "function/843997665",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/843997665",
+ "mask": "null"
+ }
+ ],
+ "function/585544091": [
+ {
+ "id": "field/269363605",
+ "mask": "null"
+ },
+ {
+ "id": "field/431266734",
+ "mask": "null"
+ },
+ {
+ "id": "field/742643375",
+ "mask": "null"
+ },
+ {
+ "id": "field/795691913",
+ "mask": "null"
+ },
+ {
+ "id": "field/818740436",
+ "mask": "null"
+ },
+ {
+ "id": "field/996559228",
+ "mask": "null"
+ },
+ {
+ "id": "function/1015140651",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1015140651",
+ "mask": "null"
+ },
+ {
+ "id": "function/481547973",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/481547973",
+ "mask": "null"
+ }
+ ],
+ "function/586712659": [
+ {
+ "id": "field/24026359",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/714493219",
+ "mask": "null"
+ },
+ {
+ "id": "field/786919906",
+ "mask": "null"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/11804710",
+ "mask": "null"
+ },
+ {
+ "id": "function/171287120",
+ "mask": "null"
+ },
+ {
+ "id": "function/265638794",
+ "mask": "null"
+ },
+ {
+ "id": "function/370120278",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/370120278",
+ "mask": "null"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/51167109",
+ "mask": "null"
+ },
+ {
+ "id": "function/528985088",
+ "mask": "null"
+ },
+ {
+ "id": "function/68051831",
+ "mask": "null"
+ },
+ {
+ "id": "function/795411795",
+ "mask": "null"
+ }
+ ],
+ "function/601638462": [
+ {
+ "id": "field/496557243",
+ "mask": "null"
+ },
+ {
+ "id": "field/907727246",
+ "mask": "null"
+ },
+ {
+ "id": "function/162825675",
+ "mask": "null"
+ },
+ {
+ "id": "function/272589495",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/754771250",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/754771250",
+ "mask": "null"
+ },
+ {
+ "id": "function/766396929",
+ "mask": "null"
+ },
+ {
+ "id": "function/820195095",
+ "mask": "null"
+ }
+ ],
+ "function/607704865": [
+ {
+ "id": "function/299781104",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/299781104",
+ "mask": "null"
+ },
+ {
+ "id": "function/467155193",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/467155193",
+ "mask": "null"
+ },
+ {
+ "id": "function/483766990",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/483766990",
+ "mask": "null"
+ },
+ {
+ "id": "function/551570860",
+ "mask": "null"
+ }
+ ],
+ "function/608925525": [
+ {
+ "id": "function/357240896",
+ "mask": "null"
+ },
+ {
+ "id": "function/367762222",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/367762222",
+ "mask": "null"
+ },
+ {
+ "id": "function/773230206",
+ "mask": "null"
+ }
+ ],
+ "function/611761598": [
+ {
+ "id": "function/473156332",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/473156332",
+ "mask": "null"
+ },
+ {
+ "id": "function/906921796",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/906921796",
+ "mask": "null"
+ }
+ ],
+ "function/613119304": [
+ {
+ "id": "field/24026359",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/618126497": [
+ {
+ "id": "field/334228980",
+ "mask": "null"
+ },
+ {
+ "id": "field/368460625",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/336168458",
+ "mask": "null"
+ },
+ {
+ "id": "function/381680028",
+ "mask": "null"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "null"
+ },
+ {
+ "id": "function/766396929",
+ "mask": "[exact=_Completer]"
+ },
+ {
+ "id": "function/967508646",
+ "mask": "null"
+ },
+ {
+ "id": "function/99501118",
+ "mask": "[exact=_SyncCompleter]"
+ },
+ {
+ "id": "function/99501118",
+ "mask": "null"
+ }
+ ],
+ "function/620005669": [
+ {
+ "id": "field/727752212",
+ "mask": "null"
+ },
+ {
+ "id": "field/954188953",
+ "mask": "null"
+ },
+ {
+ "id": "function/499807915",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/633677177": [
+ {
+ "id": "function/81057679",
+ "mask": "null"
+ }
+ ],
+ "function/635153575": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "field/334228980",
+ "mask": "null"
+ },
+ {
+ "id": "field/368460625",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1014074245",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1014074245",
+ "mask": "null"
+ }
+ ],
+ "function/636061569": [
+ {
+ "id": "field/345425066",
+ "mask": "null"
+ },
+ {
+ "id": "field/347443343",
+ "mask": "null"
+ },
+ {
+ "id": "field/627383241",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/636443477": [
+ {
+ "id": "function/370295194",
+ "mask": "inlined"
+ }
+ ],
+ "function/639806883": [
+ {
+ "id": "function/299781104",
+ "mask": "inlined"
+ }
+ ],
+ "function/642229693": [
+ {
+ "id": "field/496557243",
+ "mask": "null"
+ },
+ {
+ "id": "function/102471615",
+ "mask": "null"
+ }
+ ],
+ "function/649401243": [
+ {
+ "id": "field/295541341",
+ "mask": "null"
+ },
+ {
+ "id": "field/410301694",
+ "mask": "null"
+ },
+ {
+ "id": "field/435679137",
+ "mask": "null"
+ },
+ {
+ "id": "field/459351028",
+ "mask": "null"
+ },
+ {
+ "id": "field/60920969",
+ "mask": "null"
+ },
+ {
+ "id": "field/839347349",
+ "mask": "null"
+ },
+ {
+ "id": "function/411231605",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/411231605",
+ "mask": "null"
+ },
+ {
+ "id": "function/616072379",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/616072379",
+ "mask": "null"
+ }
+ ],
+ "function/650942169": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/343621437",
+ "mask": "null"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/975105635",
+ "mask": "null"
+ }
+ ],
+ "function/653699436": [
+ {
+ "id": "function/1024143730",
+ "mask": "inlined"
+ }
+ ],
+ "function/658082982": [
+ {
+ "id": "function/1049802380",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1049802380",
+ "mask": "null"
+ },
+ {
+ "id": "function/108053021",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/108053021",
+ "mask": "null"
+ },
+ {
+ "id": "function/21667157",
+ "mask": "null"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/310457557",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/310457557",
+ "mask": "null"
+ },
+ {
+ "id": "function/316732114",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/316732114",
+ "mask": "null"
+ },
+ {
+ "id": "function/689069465",
+ "mask": "null"
+ },
+ {
+ "id": "function/722993348",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/722993348",
+ "mask": "null"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "null"
+ },
+ {
+ "id": "function/764768055",
+ "mask": "null"
+ }
+ ],
+ "function/658921946": [
+ {
+ "id": "function/390828239",
+ "mask": "null"
+ },
+ {
+ "id": "function/417406426",
+ "mask": "null"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/57158184",
+ "mask": "null"
+ },
+ {
+ "id": "function/633677177",
+ "mask": "null"
+ },
+ {
+ "id": "function/835692712",
+ "mask": "null"
+ }
+ ],
+ "function/663282901": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/372361659",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/888466063",
+ "mask": "null"
+ }
+ ],
+ "function/664449932": [
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/325386239",
+ "mask": "null"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/533906117",
+ "mask": "null"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/560797298",
+ "mask": "null"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/644221207",
+ "mask": "null"
+ },
+ {
+ "id": "function/658921946",
+ "mask": "null"
+ },
+ {
+ "id": "function/667149426",
+ "mask": "null"
+ },
+ {
+ "id": "function/967508646",
+ "mask": "null"
+ }
+ ],
+ "function/665416673": [
+ {
+ "id": "field/192950192",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "field/232791153",
+ "mask": "null"
+ },
+ {
+ "id": "field/650800220",
+ "mask": "null"
+ },
+ {
+ "id": "function/245651187",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/245651187",
+ "mask": "null"
+ },
+ {
+ "id": "function/315128565",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/315128565",
+ "mask": "null"
+ },
+ {
+ "id": "function/813862273",
+ "mask": "null"
+ },
+ {
+ "id": "function/897413385",
+ "mask": "[subclass=JsLinkedHashMap]"
+ }
+ ],
+ "function/667149426": [
+ {
+ "id": "function/96457955",
+ "mask": "null"
+ }
+ ],
+ "function/668300184": [
+ {
+ "id": "function/253794122",
+ "mask": "null"
+ },
+ {
+ "id": "function/478486472",
+ "mask": "null"
+ }
+ ],
+ "function/669694580": [
+ {
+ "id": "field/509651846",
+ "mask": "null"
+ },
+ {
+ "id": "function/425007214",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/519947595",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/705889064",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/837956997",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/679532174": [
+ {
+ "id": "function/606572177",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/606572177",
+ "mask": "null"
+ }
+ ],
+ "function/684612786": [
+ {
+ "id": "function/222294695",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/222294695",
+ "mask": "null"
+ },
+ {
+ "id": "function/478486472",
+ "mask": "null"
+ }
+ ],
+ "function/689069465": [
+ {
+ "id": "function/1012615396",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1012615396",
+ "mask": "null"
+ },
+ {
+ "id": "function/1049802380",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1049802380",
+ "mask": "null"
+ },
+ {
+ "id": "function/257728434",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/257728434",
+ "mask": "null"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/299781104",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/299781104",
+ "mask": "null"
+ },
+ {
+ "id": "function/306374693",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/306374693",
+ "mask": "null"
+ },
+ {
+ "id": "function/316732114",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/316732114",
+ "mask": "null"
+ },
+ {
+ "id": "function/487598887",
+ "mask": "null"
+ },
+ {
+ "id": "function/607704865",
+ "mask": "null"
+ },
+ {
+ "id": "function/639806883",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/639806883",
+ "mask": "null"
+ },
+ {
+ "id": "function/658082982",
+ "mask": "null"
+ },
+ {
+ "id": "function/665676035",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/665676035",
+ "mask": "null"
+ },
+ {
+ "id": "function/708419578",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/708419578",
+ "mask": "null"
+ },
+ {
+ "id": "function/710092165",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/710092165",
+ "mask": "null"
+ },
+ {
+ "id": "function/734834560",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/734834560",
+ "mask": "null"
+ },
+ {
+ "id": "function/798288240",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/798288240",
+ "mask": "null"
+ },
+ {
+ "id": "function/813370328",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/813370328",
+ "mask": "null"
+ },
+ {
+ "id": "function/984452543",
+ "mask": "null"
+ }
+ ],
+ "function/689271731": [
+ {
+ "id": "field/192950192",
+ "mask": "null"
+ },
+ {
+ "id": "field/269363605",
+ "mask": "null"
+ },
+ {
+ "id": "field/509651846",
+ "mask": "null"
+ },
+ {
+ "id": "field/742643375",
+ "mask": "null"
+ },
+ {
+ "id": "field/996559228",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/701409225",
+ "mask": "null"
+ }
+ ],
+ "function/693686431": [
+ {
+ "id": "function/350634082",
+ "mask": "inlined"
+ }
+ ],
+ "function/702114504": [
+ {
+ "id": "field/192950192",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/38646490",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/585544091",
+ "mask": "null"
+ },
+ {
+ "id": "function/897413385",
+ "mask": "[subclass=JsLinkedHashMap]"
+ }
+ ],
+ "function/705889064": [
+ {
+ "id": "field/125830184",
+ "mask": "null"
+ },
+ {
+ "id": "field/180845508",
+ "mask": "null"
+ },
+ {
+ "id": "field/302220255",
+ "mask": "null"
+ }
+ ],
+ "function/710611585": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/162872908",
+ "mask": "null"
+ },
+ {
+ "id": "function/350634082",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/693686431",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/693686431",
+ "mask": "null"
+ },
+ {
+ "id": "function/94108092",
+ "mask": "null"
+ }
+ ],
+ "function/714600619": [
+ {
+ "id": "field/954188953",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1008544093",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/186999466",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/31139860",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/349997389",
+ "mask": "null"
+ },
+ {
+ "id": "function/430236296",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/521874428",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/606572177",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/606572177",
+ "mask": "null"
+ },
+ {
+ "id": "function/756812986",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/950782810",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/985926244",
+ "mask": "null"
+ }
+ ],
+ "function/717417998": [
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ }
+ ],
+ "function/725505159": [
+ {
+ "id": "field/1012307238",
+ "mask": "null"
+ },
+ {
+ "id": "field/123513767",
+ "mask": "null"
+ },
+ {
+ "id": "field/359397062",
+ "mask": "null"
+ },
+ {
+ "id": "field/55197673",
+ "mask": "null"
+ },
+ {
+ "id": "field/817840529",
+ "mask": "null"
+ },
+ {
+ "id": "field/906853360",
+ "mask": "null"
+ }
+ ],
+ "function/726344781": [
+ {
+ "id": "function/351622741",
+ "mask": "null"
+ }
+ ],
+ "function/726979110": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/606572177",
+ "mask": "null"
+ }
+ ],
+ "function/731794670": [
+ {
+ "id": "function/739160294",
+ "mask": "inlined"
+ }
+ ],
+ "function/737782244": [
+ {
+ "id": "function/203738274",
+ "mask": "null"
+ },
+ {
+ "id": "function/230858033",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/741666293": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/1058735230",
+ "mask": "[exact=_Future]"
+ },
+ {
+ "id": "function/248883787",
+ "mask": "null"
+ },
+ {
+ "id": "function/326542993",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/492708773",
+ "mask": "null"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/513053773",
+ "mask": "null"
+ },
+ {
+ "id": "function/664449932",
+ "mask": "null"
+ }
+ ],
+ "function/745741399": [
+ {
+ "id": "field/376257386",
+ "mask": "null"
+ },
+ {
+ "id": "function/355012434",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/749970393": [
+ {
+ "id": "function/712365042",
+ "mask": "null"
+ }
+ ],
+ "function/752981084": [
+ {
+ "id": "function/830798781",
+ "mask": "null"
+ }
+ ],
+ "function/754498726": [
+ {
+ "id": "function/338379080",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/415620823",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/717417998",
+ "mask": "inlined"
+ }
+ ],
+ "function/756812986": [
+ {
+ "id": "field/818740436",
+ "mask": "null"
+ }
+ ],
+ "function/764768055": [
+ {
+ "id": "function/310457557",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/310457557",
+ "mask": "null"
+ },
+ {
+ "id": "function/478486472",
+ "mask": "null"
+ },
+ {
+ "id": "function/689069465",
+ "mask": "null"
+ }
+ ],
+ "function/766396929": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/1065856678",
+ "mask": "[subclass=_Completer]"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/271556856",
+ "mask": "null"
+ },
+ {
+ "id": "function/338379080",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/338379080",
+ "mask": "null"
+ },
+ {
+ "id": "function/415620823",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/415620823",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/477609809",
+ "mask": "[subclass=_Completer]"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/823929753",
+ "mask": "null"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "null"
+ }
+ ],
+ "function/772250195": [
+ {
+ "id": "field/244162491",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/179653294",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/179653294",
+ "mask": "null"
+ },
+ {
+ "id": "function/98156511",
+ "mask": "[null|subclass=_LinkedHashSet]"
+ }
+ ],
+ "function/778541068": [
+ {
+ "id": "field/522978319",
+ "mask": "null"
+ }
+ ],
+ "function/779765691": [
+ {
+ "id": "function/94108092",
+ "mask": "inlined"
+ }
+ ],
+ "function/784650927": [
+ {
+ "id": "field/373519716",
+ "mask": "null"
+ },
+ {
+ "id": "field/850921879",
+ "mask": "null"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ }
+ ],
+ "function/788412943": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/681643547",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/681643547",
+ "mask": "null"
+ }
+ ],
+ "function/789545114": [
+ {
+ "id": "function/1027535878",
+ "mask": "Union([exact=ArrayIterator], [exact=_LinkedHashSetIterator])"
+ },
+ {
+ "id": "function/176842663",
+ "mask": "Union([exact=ArrayIterator], [exact=_LinkedHashSetIterator])"
+ },
+ {
+ "id": "function/388977016",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/388977016",
+ "mask": "null"
+ },
+ {
+ "id": "function/405266426",
+ "mask": "Union([subclass=JSArray], [subclass=_LinkedHashSet])"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ },
+ {
+ "id": "function/773528822",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/773528822",
+ "mask": "null"
+ },
+ {
+ "id": "function/834909172",
+ "mask": "Union([exact=ArrayIterator], [exact=_LinkedHashSetIterator])"
+ },
+ {
+ "id": "function/950708086",
+ "mask": "Union([exact=ArrayIterator], [exact=_LinkedHashSetIterator])"
+ },
+ {
+ "id": "function/99251871",
+ "mask": "Union([subclass=JSArray], [subclass=_LinkedHashSet])"
+ }
+ ],
+ "function/791079680": [
+ {
+ "id": "field/125830184",
+ "mask": "null"
+ }
+ ],
+ "function/793410068": [
+ {
+ "id": "field/346735010",
+ "mask": "null"
+ },
+ {
+ "id": "function/773528822",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/773528822",
+ "mask": "null"
+ }
+ ],
+ "function/795411795": [
+ {
+ "id": "field/187449514",
+ "mask": "null"
+ },
+ {
+ "id": "field/24026359",
+ "mask": "null"
+ },
+ {
+ "id": "field/304825305",
+ "mask": "null"
+ },
+ {
+ "id": "field/343514633",
+ "mask": "null"
+ },
+ {
+ "id": "field/485816538",
+ "mask": "null"
+ },
+ {
+ "id": "function/1030881401",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1030881401",
+ "mask": "null"
+ },
+ {
+ "id": "function/1055095230",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1055095230",
+ "mask": "null"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/373761717",
+ "mask": "null"
+ },
+ {
+ "id": "function/968241519",
+ "mask": "null"
+ }
+ ],
+ "function/796179660": [
+ {
+ "id": "function/712365042",
+ "mask": "null"
+ }
+ ],
+ "function/797212862": [
+ {
+ "id": "field/978504898",
+ "mask": "null"
+ },
+ {
+ "id": "function/15925204",
+ "mask": "null"
+ },
+ {
+ "id": "function/599927967",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/599927967",
+ "mask": "null"
+ }
+ ],
+ "function/797212863": [
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ }
+ ],
+ "function/797212864": [
+ {
+ "id": "function/574550003",
+ "mask": "null"
+ }
+ ],
+ "function/808159833": [
+ {
+ "id": "function/749970393",
+ "mask": "null"
+ }
+ ],
+ "function/811310425": [
+ {
+ "id": "function/1033661873",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/1051093947",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/116203851",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/130041650",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/143741280",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/150705145",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/15478302",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/167405219",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/173469993",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/176570718",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/285148179",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/369614033",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/380325809",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/412886703",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/412886703",
+ "mask": "null"
+ },
+ {
+ "id": "function/431897853",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/436231120",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/440018750",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/464959827",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/474133145",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/550544609",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/565013754",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/613119304",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/636061569",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/66015995",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/72077250",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/730595126",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/745741399",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/793410068",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/848267879",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/891910474",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/93381370",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/944731702",
+ "mask": "[subclass=Object]"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/968358412",
+ "mask": "null"
+ },
+ {
+ "id": "function/991909617",
+ "mask": "[subclass=Object]"
+ }
+ ],
+ "function/813862273": [
+ {
+ "id": "field/192950192",
+ "mask": "null"
+ },
+ {
+ "id": "field/202484522",
+ "mask": "null"
+ },
+ {
+ "id": "function/175997763",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/347974666",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/370295194",
+ "mask": "null"
+ },
+ {
+ "id": "function/564404904",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/636443477",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/636443477",
+ "mask": "null"
+ },
+ {
+ "id": "function/669694580",
+ "mask": "null"
+ },
+ {
+ "id": "function/749970393",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/796179660",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/80736041",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/808159833",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/854200700",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/860159722",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/878987098",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/889342435",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/91425461",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/820195095": [
+ {
+ "id": "field/192950192",
+ "mask": "null"
+ },
+ {
+ "id": "field/202484522",
+ "mask": "null"
+ },
+ {
+ "id": "field/232791153",
+ "mask": "null"
+ },
+ {
+ "id": "field/650800220",
+ "mask": "null"
+ },
+ {
+ "id": "function/175997763",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/245651187",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/245651187",
+ "mask": "null"
+ },
+ {
+ "id": "function/315128565",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/315128565",
+ "mask": "null"
+ },
+ {
+ "id": "function/347974666",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/370295194",
+ "mask": "null"
+ },
+ {
+ "id": "function/38646490",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/400990606",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/400990606",
+ "mask": "null"
+ },
+ {
+ "id": "function/538046",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/564404904",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/585544091",
+ "mask": "null"
+ },
+ {
+ "id": "function/669694580",
+ "mask": "null"
+ },
+ {
+ "id": "function/702114504",
+ "mask": "null"
+ },
+ {
+ "id": "function/749970393",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/796179660",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/80736041",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/808159833",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/854200700",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/860159722",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/878987098",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/889342435",
+ "mask": "[subclass=JsLinkedHashMap]"
+ },
+ {
+ "id": "function/91425461",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/831655802": [
+ {
+ "id": "field/221913650",
+ "mask": "null"
+ },
+ {
+ "id": "field/29748263",
+ "mask": "null"
+ },
+ {
+ "id": "field/607252",
+ "mask": "null"
+ },
+ {
+ "id": "field/639289778",
+ "mask": "null"
+ },
+ {
+ "id": "field/952591811",
+ "mask": "null"
+ }
+ ],
+ "function/834909172": [
+ {
+ "id": "field/646361925",
+ "mask": "null"
+ }
+ ],
+ "function/835692712": [
+ {
+ "id": "field/221913650",
+ "mask": "null"
+ },
+ {
+ "id": "field/639289778",
+ "mask": "null"
+ },
+ {
+ "id": "field/931441116",
+ "mask": "null"
+ },
+ {
+ "id": "field/932611099",
+ "mask": "null"
+ },
+ {
+ "id": "field/952591811",
+ "mask": "null"
+ },
+ {
+ "id": "function/546320785",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/546320785",
+ "mask": "null"
+ },
+ {
+ "id": "function/82702408",
+ "mask": "null"
+ },
+ {
+ "id": "function/895978326",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/895978326",
+ "mask": "null"
+ }
+ ],
+ "function/848267879": [
+ {
+ "id": "field/653339731",
+ "mask": "null"
+ }
+ ],
+ "function/852141617": [
+ {
+ "id": "field/334228980",
+ "mask": "null"
+ },
+ {
+ "id": "field/368460625",
+ "mask": "null"
+ },
+ {
+ "id": "function/248499885",
+ "mask": "null"
+ },
+ {
+ "id": "function/336168458",
+ "mask": "null"
+ },
+ {
+ "id": "function/766396929",
+ "mask": "null"
+ }
+ ],
+ "function/852972506": [
+ {
+ "id": "function/581270226",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/581270226",
+ "mask": "null"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "null"
+ }
+ ],
+ "function/853169304": [
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ }
+ ],
+ "function/853973218": [
+ {
+ "id": "field/1055298109",
+ "mask": "null"
+ }
+ ],
+ "function/860159722": [
+ {
+ "id": "function/749970393",
+ "mask": "null"
+ }
+ ],
+ "function/873863767": [
+ {
+ "id": "function/204916897",
+ "mask": "null"
+ },
+ {
+ "id": "function/312768442",
+ "mask": "[exact=JSString]"
+ },
+ {
+ "id": "function/501712645",
+ "mask": "null"
+ },
+ {
+ "id": "function/508874693",
+ "mask": "null"
+ },
+ {
+ "id": "function/549577701",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/549577701",
+ "mask": "null"
+ },
+ {
+ "id": "function/555987509",
+ "mask": "null"
+ },
+ {
+ "id": "function/751200407",
+ "mask": "null"
+ },
+ {
+ "id": "function/821285776",
+ "mask": "null"
+ },
+ {
+ "id": "function/890739228",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/890739228",
+ "mask": "null"
+ },
+ {
+ "id": "function/992679489",
+ "mask": "null"
+ }
+ ],
+ "function/887884267": [
+ {
+ "id": "field/221913650",
+ "mask": "null"
+ },
+ {
+ "id": "field/29748263",
+ "mask": "null"
+ },
+ {
+ "id": "field/639289778",
+ "mask": "null"
+ },
+ {
+ "id": "field/952591811",
+ "mask": "null"
+ },
+ {
+ "id": "function/835692712",
+ "mask": "null"
+ },
+ {
+ "id": "function/895978326",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/895978326",
+ "mask": "null"
+ }
+ ],
+ "function/890739228": [
+ {
+ "id": "function/508874693",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/751200407",
+ "mask": "inlined"
+ }
+ ],
+ "function/891910474": [
+ {
+ "id": "function/987508329",
+ "mask": "null"
+ }
+ ],
+ "function/899124813": [
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/791079680",
+ "mask": "null"
+ },
+ {
+ "id": "function/841192189",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/841192189",
+ "mask": "null"
+ },
+ {
+ "id": "function/906797235",
+ "mask": "null"
+ }
+ ],
+ "function/899674954": [
+ {
+ "id": "function/352514166",
+ "mask": "null"
+ }
+ ],
+ "function/906797235": [
+ {
+ "id": "field/302220255",
+ "mask": "null"
+ }
+ ],
+ "function/907920634": [
+ {
+ "id": "function/259223906",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/259223906",
+ "mask": "null"
+ }
+ ],
+ "function/920500080": [
+ {
+ "id": "field/914365883",
+ "mask": "null"
+ },
+ {
+ "id": "function/425007214",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/519947595",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/705889064",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/837956997",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/921486255": [
+ {
+ "id": "function/116583875",
+ "mask": "null"
+ },
+ {
+ "id": "function/271854590",
+ "mask": "null"
+ },
+ {
+ "id": "function/330018012",
+ "mask": "null"
+ },
+ {
+ "id": "function/357627841",
+ "mask": "null"
+ },
+ {
+ "id": "function/399195151",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/399195151",
+ "mask": "null"
+ },
+ {
+ "id": "function/53631526",
+ "mask": "null"
+ },
+ {
+ "id": "function/606513838",
+ "mask": "null"
+ },
+ {
+ "id": "function/635153575",
+ "mask": "null"
+ },
+ {
+ "id": "function/663282901",
+ "mask": "null"
+ },
+ {
+ "id": "function/710611585",
+ "mask": "null"
+ },
+ {
+ "id": "function/772250195",
+ "mask": "null"
+ },
+ {
+ "id": "function/864228238",
+ "mask": "null"
+ }
+ ],
+ "function/921677904": [
+ {
+ "id": "function/1027535878",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/1047605700",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/176842663",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/80270395",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/834909172",
+ "mask": "[subtype=Iterator]"
+ },
+ {
+ "id": "function/852972506",
+ "mask": "[subclass=Iterable]"
+ },
+ {
+ "id": "function/950708086",
+ "mask": "[subtype=Iterator]"
+ }
+ ],
+ "function/922840913": [
+ {
+ "id": "field/386221903",
+ "mask": "null"
+ },
+ {
+ "id": "field/435101137",
+ "mask": "null"
+ },
+ {
+ "id": "field/709451133",
+ "mask": "null"
+ },
+ {
+ "id": "function/221934998",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/292195356",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ },
+ {
+ "id": "function/724475372",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/724475372",
+ "mask": "null"
+ },
+ {
+ "id": "function/726979110",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/738104072",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/762030080",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/762030080",
+ "mask": "null"
+ },
+ {
+ "id": "function/899124813",
+ "mask": "null"
+ }
+ ],
+ "function/942227822": [
+ {
+ "id": "function/225159691",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/225159691",
+ "mask": "null"
+ },
+ {
+ "id": "function/638664464",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/638664464",
+ "mask": "null"
+ }
+ ],
+ "function/944731702": [
+ {
+ "id": "function/873863767",
+ "mask": "null"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/993180100",
+ "mask": "null"
+ }
+ ],
+ "function/947198569": [
+ {
+ "id": "function/271674536",
+ "mask": "null"
+ }
+ ],
+ "function/950708086": [
+ {
+ "id": "field/504170901",
+ "mask": "null"
+ }
+ ],
+ "function/967508646": [
+ {
+ "id": "function/1049802380",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/1049802380",
+ "mask": "null"
+ },
+ {
+ "id": "function/555987509",
+ "mask": "null"
+ },
+ {
+ "id": "function/607704865",
+ "mask": "null"
+ },
+ {
+ "id": "function/708419578",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/708419578",
+ "mask": "null"
+ },
+ {
+ "id": "function/821285776",
+ "mask": "null"
+ },
+ {
+ "id": "function/984452543",
+ "mask": "null"
+ }
+ ],
+ "function/968241519": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/160969748",
+ "mask": "null"
+ }
+ ],
+ "function/984452543": [
+ {
+ "id": "function/268773900",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/268773900",
+ "mask": "null"
+ },
+ {
+ "id": "function/689069465",
+ "mask": "null"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/736875717",
+ "mask": "null"
+ }
+ ],
+ "function/985926244": [
+ {
+ "id": "field/954188953",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/1008544093",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/186999466",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/31139860",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/430236296",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/521874428",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/756812986",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "function/950782810",
+ "mask": "[null|subclass=Object]"
+ }
+ ],
+ "function/987508329": [
+ {
+ "id": "field/1047452024",
+ "mask": "[null|subclass=Object]"
+ },
+ {
+ "id": "field/1047452024",
+ "mask": "null"
+ },
+ {
+ "id": "field/522978319",
+ "mask": "null"
+ },
+ {
+ "id": "function/139456351",
+ "mask": "null"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/210296716",
+ "mask": "null"
+ },
+ {
+ "id": "function/335045122",
+ "mask": "null"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/358340511",
+ "mask": "null"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/372037963",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/507333070",
+ "mask": "null"
+ },
+ {
+ "id": "function/540949546",
+ "mask": "null"
+ },
+ {
+ "id": "function/689271731",
+ "mask": "null"
+ },
+ {
+ "id": "function/778541068",
+ "mask": "null"
+ }
+ ],
+ "function/990521259": [
+ {
+ "id": "field/373519716",
+ "mask": "null"
+ },
+ {
+ "id": "function/150523169",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/453686242",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/491418529",
+ "mask": "null"
+ },
+ {
+ "id": "function/494094492",
+ "mask": "null"
+ },
+ {
+ "id": "function/985926244",
+ "mask": "null"
+ },
+ {
+ "id": "function/990521259",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ }
+ ],
+ "function/997099929": [
+ {
+ "id": "function/653699436",
+ "mask": "inlined"
+ }
+ ],
+ "function/1002752870": [
+ {
+ "id": "function/30570662",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/30570662",
+ "mask": "null"
+ },
+ {
+ "id": "function/649401243",
+ "mask": "null"
+ },
+ {
+ "id": "function/702510",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/702510",
+ "mask": "null"
+ }
+ ],
+ "function/1008544093": [
+ {
+ "id": "field/818740436",
+ "mask": "null"
+ },
+ {
+ "id": "function/731794670",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/731794670",
+ "mask": "null"
+ },
+ {
+ "id": "function/739160294",
+ "mask": "null"
+ },
+ {
+ "id": "function/950782810",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/950782810",
+ "mask": "null"
+ }
+ ],
+ "function/1014821943": [
+ {
+ "id": "function/779765691",
+ "mask": "inlined"
+ }
+ ],
+ "function/1016194181": [
+ {
+ "id": "field/373519716",
+ "mask": "null"
+ },
+ {
+ "id": "field/850921879",
+ "mask": "null"
+ },
+ {
+ "id": "function/144469778",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/418915149",
+ "mask": "null"
+ },
+ {
+ "id": "function/453686242",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/701409225",
+ "mask": "null"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ },
+ {
+ "id": "function/990521259",
+ "mask": "Union([exact=SubListIterable], [subclass=JSArray])"
+ }
+ ],
+ "function/1024465827": [
+ {
+ "id": "field/111931226",
+ "mask": "null"
+ },
+ {
+ "id": "field/649547880",
+ "mask": "null"
+ },
+ {
+ "id": "function/445547062",
+ "mask": "null"
+ }
+ ],
+ "function/1027535878": [
+ {
+ "id": "field/112618843",
+ "mask": "null"
+ },
+ {
+ "id": "field/237146195",
+ "mask": "null"
+ },
+ {
+ "id": "field/504170901",
+ "mask": "null"
+ },
+ {
+ "id": "field/577142640",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/544746737",
+ "mask": "null"
+ }
+ ],
+ "function/1031826457": [
+ {
+ "id": "field/244162491",
+ "mask": "null"
+ },
+ {
+ "id": "function/275957193",
+ "mask": "[null|subclass=_LinkedHashSet]"
+ }
+ ],
+ "function/1033661873": [
+ {
+ "id": "function/987508329",
+ "mask": "null"
+ }
+ ],
+ "function/1036675160": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/650942169",
+ "mask": "null"
+ }
+ ],
+ "function/1042482096": [
+ {
+ "id": "function/109394176",
+ "mask": "inlined"
+ }
+ ],
+ "function/1047605700": [
+ {
+ "id": "field/153843292",
+ "mask": "null"
+ },
+ {
+ "id": "field/154746101",
+ "mask": "null"
+ },
+ {
+ "id": "field/525450391",
+ "mask": "null"
+ },
+ {
+ "id": "field/626762025",
+ "mask": "null"
+ },
+ {
+ "id": "function/163889622",
+ "mask": "null"
+ },
+ {
+ "id": "function/701409225",
+ "mask": "null"
+ },
+ {
+ "id": "function/784650927",
+ "mask": "null"
+ },
+ {
+ "id": "function/990521259",
+ "mask": "null"
+ }
+ ],
+ "function/1051093947": [
+ {
+ "id": "function/873863767",
+ "mask": "null"
+ }
+ ],
+ "function/1058735230": [
+ {
+ "id": "field/42778158",
+ "mask": "null"
+ },
+ {
+ "id": "function/16930089",
+ "mask": "null"
+ },
+ {
+ "id": "function/205154197",
+ "mask": "null"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/460512542",
+ "mask": "null"
+ },
+ {
+ "id": "function/904115316",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/904115316",
+ "mask": "null"
+ }
+ ],
+ "function/1060205580": [
+ {
+ "id": "function/499330809",
+ "mask": "null"
+ },
+ {
+ "id": "function/717561594",
+ "mask": "null"
+ },
+ {
+ "id": "function/79175019",
+ "mask": "inlined"
+ },
+ {
+ "id": "function/79175019",
+ "mask": "null"
+ }
+ ],
+ "function/1065856678": [
+ {
+ "id": "field/1025923114",
+ "mask": "null"
+ },
+ {
+ "id": "function/263363184",
+ "mask": "null"
+ }
+ ]
+ },
+ "dependencies": {},
+ "outputUnits": [
+ {
+ "id": "outputUnit/7045321",
+ "kind": "outputUnit",
+ "name": "1",
+ "size": 1353,
+ "imports": [
+ "deferred_import"
+ ]
+ },
+ {
+ "id": "outputUnit/669725655",
+ "kind": "outputUnit",
+ "name": "main",
+ "size": 156027,
+ "imports": []
+ }
+ ],
+ "dump_version": 5,
+ "deferredFiles": {
+ "hello_world_deferred.dart": {
+ "name": "<unnamed>",
+ "imports": {
+ "deferred_import": [
+ "hello_world_deferred.js_1.part.js"
+ ]
+ }
+ }
+ },
+ "dump_minor_version": 1,
+ "program": {
+ "entrypoint": "function/921486255",
+ "size": 157380,
+ "dart2jsVersion": "2.00.0-dev.60.0",
+ "compilationMoment": "2018-06-20 15:19:49.944368",
+ "compilationDuration": 1338565,
+ "toJsonDuration": 11000,
+ "dumpInfoDuration": 0,
+ "noSuchMethodEnabled": false,
+ "isRuntimeTypeUsed": false,
+ "isIsolateInUse": false,
+ "isFunctionApplyUsed": false,
+ "isMirrorsUsed": false,
+ "minified": false
+ }
+}
\ No newline at end of file
diff --git a/pkg/dart2js_info/test/json_to_proto_deferred_test.dart b/pkg/dart2js_info/test/json_to_proto_deferred_test.dart
new file mode 100644
index 0000000..0f1eaf2
--- /dev/null
+++ b/pkg/dart2js_info/test/json_to_proto_deferred_test.dart
@@ -0,0 +1,46 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:dart2js_info/proto_info_codec.dart';
+import 'package:test/test.dart';
+
+main() {
+ group('json to proto conversion with deferred files', () {
+ test('hello_world_deferred', () {
+ final helloWorld = new File(
+ 'test/hello_world_deferred/hello_world_deferred.js.info.json');
+ final json = jsonDecode(helloWorld.readAsStringSync());
+ final decoded = new AllInfoJsonCodec().decode(json);
+ final proto = new AllInfoProtoCodec().encode(decoded);
+
+ expect(proto.deferredImports, hasLength(1));
+ final libraryImports = proto.deferredImports.first;
+ expect(libraryImports.libraryUri, 'hello_world_deferred.dart');
+ expect(libraryImports.libraryName, '<unnamed>');
+ expect(libraryImports.imports, hasLength(1));
+ final import = libraryImports.imports.first;
+ expect(import.prefix, 'deferred_import');
+ expect(import.files, hasLength(1));
+ expect(import.files.first, 'hello_world_deferred.js_1.part.js');
+
+ final infoMap = proto.allInfos;
+
+ final entrypoint = infoMap[proto.program.entrypointId];
+ expect(entrypoint, isNotNull);
+ expect(entrypoint.hasFunctionInfo(), isTrue);
+ expect(entrypoint.outputUnitId, isNotNull);
+
+ // The output unit of the entrypoint function should be the default
+ // entrypoint, which should have no imports.
+ final defaultOutputUnit = infoMap[entrypoint.outputUnitId];
+ expect(defaultOutputUnit, isNotNull);
+ expect(defaultOutputUnit.hasOutputUnitInfo(), isTrue);
+ expect(defaultOutputUnit.outputUnitInfo.imports, isEmpty);
+ });
+ });
+}
diff --git a/pkg/dart2js_info/test/json_to_proto_test.dart b/pkg/dart2js_info/test/json_to_proto_test.dart
new file mode 100644
index 0000000..609532b
--- /dev/null
+++ b/pkg/dart2js_info/test/json_to_proto_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:dart2js_info/proto_info_codec.dart';
+import 'package:test/test.dart';
+
+main() {
+ group('json to proto conversion', () {
+ test('hello_world', () {
+ final helloWorld = new File('test/hello_world/hello_world.js.info.json');
+ final json = jsonDecode(helloWorld.readAsStringSync());
+ final decoded = new AllInfoJsonCodec().decode(json);
+ final proto = new AllInfoProtoCodec().encode(decoded);
+
+ expect(proto.program.entrypointId, isNotNull);
+ expect(proto.program.size, 10324);
+ expect(proto.program.compilationMoment.toInt(),
+ DateTime.parse("2017-04-17 09:46:41.661617").microsecondsSinceEpoch);
+ expect(proto.program.toProtoDuration.toInt(),
+ new Duration(milliseconds: 4).inMicroseconds);
+ expect(proto.program.dumpInfoDuration.toInt(),
+ new Duration(milliseconds: 0).inMicroseconds);
+ expect(proto.program.noSuchMethodEnabled, isFalse);
+ expect(proto.program.minified, isFalse);
+ });
+
+ test('has proper id format', () {
+ final helloWorld = new File('test/hello_world/hello_world.js.info.json');
+ final json = jsonDecode(helloWorld.readAsStringSync());
+ final decoded = new AllInfoJsonCodec().decode(json);
+ final proto = new AllInfoProtoCodec().encode(decoded);
+
+ final expectedPrefixes = <InfoKind, String>{};
+ for (final kind in InfoKind.values) {
+ expectedPrefixes[kind] = kindToString(kind) + '/';
+ }
+
+ for (final info in proto.allInfos.entries) {
+ final value = info.value;
+ if (value.hasLibraryInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.library]));
+ } else if (value.hasClassInfo()) {
+ expect(
+ value.serializedId, startsWith(expectedPrefixes[InfoKind.clazz]));
+ } else if (value.hasFunctionInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.function]));
+ } else if (value.hasFieldInfo()) {
+ expect(
+ value.serializedId, startsWith(expectedPrefixes[InfoKind.field]));
+ } else if (value.hasConstantInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.constant]));
+ } else if (value.hasOutputUnitInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.outputUnit]));
+ } else if (value.hasTypedefInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.typedef]));
+ } else if (value.hasClosureInfo()) {
+ expect(value.serializedId,
+ startsWith(expectedPrefixes[InfoKind.closure]));
+ }
+ }
+ });
+ });
+}
diff --git a/pkg/dart2js_info/test/parse_test.dart b/pkg/dart2js_info/test/parse_test.dart
new file mode 100644
index 0000000..1e6b382
--- /dev/null
+++ b/pkg/dart2js_info/test/parse_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/json_info_codec.dart';
+import 'package:test/test.dart';
+
+main() {
+ group('parse', () {
+ test('hello_world', () {
+ var helloWorld = new File('test/hello_world/hello_world.js.info.json');
+ var json = jsonDecode(helloWorld.readAsStringSync());
+ var decoded = new AllInfoJsonCodec().decode(json);
+
+ var program = decoded.program;
+ expect(program, isNotNull);
+
+ expect(program.entrypoint, isNotNull);
+ expect(program.size, 10324);
+ expect(program.compilationMoment,
+ DateTime.parse("2017-04-17 09:46:41.661617"));
+ expect(program.compilationDuration, new Duration(microseconds: 357402));
+ expect(program.toJsonDuration, new Duration(milliseconds: 4));
+ expect(program.dumpInfoDuration, new Duration(seconds: 0));
+ expect(program.noSuchMethodEnabled, false);
+ expect(program.minified, false);
+ });
+ });
+}
diff --git a/pkg/dart2js_info/tool/update_proto.sh b/pkg/dart2js_info/tool/update_proto.sh
new file mode 100755
index 0000000..c784edd
--- /dev/null
+++ b/pkg/dart2js_info/tool/update_proto.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+if [ -z "$1" ]; then
+ echo "Expected exactly one argument which is the protoc_plugin version to use"
+else
+ echo "Using protoc_plugin version $1"
+ pub global activate protoc_plugin "$1"
+fi
+
+protoc --proto_path="." --dart_out=lib/src/proto info.proto
+dartfmt -w lib/src/proto
diff --git a/pkg/front_end/testcases/general/issue46863.dart b/pkg/front_end/testcases/general/issue46863.dart
new file mode 100644
index 0000000..7fac3cd
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart
@@ -0,0 +1,13 @@
+// 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.
+
+final foo = [() => const [], () => bar()];
+
+final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+
+final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+
+final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46863.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46863.dart.textual_outline.expect
new file mode 100644
index 0000000..43f504e
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+final foo = [() => const [], () => bar()];
+final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46863.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46863.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..43f504e
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+final foo = [() => const [], () => bar()];
+final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+main() {}
diff --git a/pkg/front_end/testcases/general/issue46863.dart.weak.expect b/pkg/front_end/testcases/general/issue46863.dart.weak.expect
new file mode 100644
index 0000000..20ac68c
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart.weak.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46863.dart:5:36: Error: Method not found: 'bar'.
+// final foo = [() => const [], () => bar()];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:7:41: Error: 'Bar' isn't a type.
+// final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:9:52: Error: 'Bar' isn't a type.
+// final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:11:60: Error: 'Bar' isn't a type.
+// final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static final field core::List<() → invalid-type> foo = <() → invalid-type>[() → core::List<dynamic> => #C1, () → invalid-type => invalid-expression "pkg/front_end/testcases/general/issue46863.dart:5:36: Error: Method not found: 'bar'.
+final foo = [() => const [], () => bar()];
+ ^^^"];
+static final field core::List<(invalid-type) → core::List<dynamic>> foo2 = <(invalid-type) → core::List<dynamic>>[(dynamic x) → core::List<dynamic> => #C1, (invalid-type x) → core::List<dynamic> => #C1];
+static final field core::List<(core::List<dynamic>) → core::List<dynamic>> foo3 = <(core::List<dynamic>) → core::List<dynamic>>[(core::List<dynamic> x) → core::List<dynamic> => #C1, (core::List<invalid-type> x) → core::List<dynamic> => #C1];
+static final field core::List<((invalid-type) → dynamic) → core::List<dynamic>> foo4 = <((invalid-type) → dynamic) → core::List<dynamic>>[((dynamic) → dynamic x) → core::List<dynamic> => #C1, ((invalid-type) → dynamic x) → core::List<dynamic> => #C1];
+static method main() → dynamic {}
+
+constants {
+ #C1 = <dynamic>[]
+}
diff --git a/pkg/front_end/testcases/general/issue46863.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue46863.dart.weak.outline.expect
new file mode 100644
index 0000000..29337e9
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart.weak.outline.expect
@@ -0,0 +1,29 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46863.dart:5:36: Error: Method not found: 'bar'.
+// final foo = [() => const [], () => bar()];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:7:41: Error: 'Bar' isn't a type.
+// final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:9:52: Error: 'Bar' isn't a type.
+// final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:11:60: Error: 'Bar' isn't a type.
+// final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static final field core::List<() → invalid-type> foo;
+static final field core::List<(invalid-type) → core::List<dynamic>> foo2;
+static final field core::List<(core::List<dynamic>) → core::List<dynamic>> foo3;
+static final field core::List<((invalid-type) → dynamic) → core::List<dynamic>> foo4;
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/issue46863.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46863.dart.weak.transformed.expect
new file mode 100644
index 0000000..2b1b44d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue46863.dart.weak.transformed.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue46863.dart:5:36: Error: Method not found: 'bar'.
+// final foo = [() => const [], () => bar()];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:7:41: Error: 'Bar' isn't a type.
+// final foo2 = [(dynamic x) => const [], (Bar x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:9:52: Error: 'Bar' isn't a type.
+// final foo3 = [(List<dynamic> x) => const [], (List<Bar> x) => const []];
+// ^^^
+//
+// pkg/front_end/testcases/general/issue46863.dart:11:60: Error: 'Bar' isn't a type.
+// final foo4 = [(Function(dynamic) x) => const [], (Function(Bar) x) => const []];
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static final field core::List<() → invalid-type> foo = core::_GrowableList::_literal2<() → invalid-type>(() → core::List<dynamic> => #C1, () → invalid-type => invalid-expression "pkg/front_end/testcases/general/issue46863.dart:5:36: Error: Method not found: 'bar'.
+final foo = [() => const [], () => bar()];
+ ^^^");
+static final field core::List<(invalid-type) → core::List<dynamic>> foo2 = core::_GrowableList::_literal2<(invalid-type) → core::List<dynamic>>((dynamic x) → core::List<dynamic> => #C1, (invalid-type x) → core::List<dynamic> => #C1);
+static final field core::List<(core::List<dynamic>) → core::List<dynamic>> foo3 = core::_GrowableList::_literal2<(core::List<dynamic>) → core::List<dynamic>>((core::List<dynamic> x) → core::List<dynamic> => #C1, (core::List<invalid-type> x) → core::List<dynamic> => #C1);
+static final field core::List<((invalid-type) → dynamic) → core::List<dynamic>> foo4 = core::_GrowableList::_literal2<((invalid-type) → dynamic) → core::List<dynamic>>(((dynamic) → dynamic x) → core::List<dynamic> => #C1, ((invalid-type) → dynamic x) → core::List<dynamic> => #C1);
+static method main() → dynamic {}
+
+constants {
+ #C1 = <dynamic>[]
+}
diff --git a/pkg/kernel/lib/src/standard_bounds.dart b/pkg/kernel/lib/src/standard_bounds.dart
index 81e1974..61590da 100644
--- a/pkg/kernel/lib/src/standard_bounds.dart
+++ b/pkg/kernel/lib/src/standard_bounds.dart
@@ -267,6 +267,10 @@
DartType getNullabilityAwareStandardLowerBoundInternal(
DartType type1, DartType type2, Library clientLibrary) {
+ if (type1 is InvalidType || type2 is InvalidType) {
+ return const InvalidType();
+ }
+
// DOWN(T1, T2) where TOP(T1) and TOP(T2) =
// T1 if MORETOP(T2, T1)
// T2 otherwise
@@ -629,6 +633,10 @@
DartType getNullabilityAwareStandardUpperBoundInternal(
DartType type1, DartType type2, Library clientLibrary) {
+ if (type1 is InvalidType || type2 is InvalidType) {
+ return const InvalidType();
+ }
+
// UP(T1, T2) where TOP(T1) and TOP(T2) =
// T1 if MORETOP(T1, T2)
// T2 otherwise
diff --git a/tools/VERSION b/tools/VERSION
index 26ef3d9..2200454 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 3
+PRERELEASE 4
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 8faa484..c9ce212 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -3465,13 +3465,6 @@
},
"steps": [
{
- "name": "validate pkg/ pubspec files",
- "script": "tools/sdks/dart-sdk/bin/dart",
- "arguments": [
- "tools/package_deps/bin/package_deps.dart"
- ]
- },
- {
"name": "validate .dart_tool/package_config.json",
"script": "tools/sdks/dart-sdk/bin/dart",
"arguments": [