diff --git a/all/dart/_toc.yaml b/all/dart/_toc.yaml
index 137ce6d..312ece7 100644
--- a/all/dart/_toc.yaml
+++ b/all/dart/_toc.yaml
@@ -1543,6 +1543,352 @@
   - heading: Functions
   - title: exit
     path: /reference/dart/package-fuchsia_fuchsia/exit.md
+- heading: fuchsia_inspect
+- title: inspect
+  path: /reference/dart/package-fuchsia_inspect_inspect/package-fuchsia_inspect_inspect-library.md
+  section:
+  - heading: Classes
+  - title: BoolProperty
+    path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty-class.md
+    section:
+    - heading: Methods
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/delete.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md
+    - title: setValue
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/setValue.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/BoolProperty/valid.md
+  - title: ByteDataProperty
+    path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty-class.md
+    section:
+    - heading: Constructors
+    - title: ByteDataProperty.deleted
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/ByteDataProperty.deleted.md
+    - heading: Methods
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/delete.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md
+    - title: setValue
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/setValue.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/ByteDataProperty/valid.md
+  - title: DoubleProperty
+    path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty-class.md
+    section:
+    - heading: Constructors
+    - title: DoubleProperty.deleted
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/DoubleProperty.deleted.md
+    - heading: Methods
+    - title: add
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/add.md
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/delete.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md
+    - title: setValue
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/setValue.md
+    - title: subtract
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/subtract.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/DoubleProperty/valid.md
+  - title: Inspect
+    path: /reference/dart/package-fuchsia_inspect_inspect/Inspect-class.md
+    section:
+    - heading: Constructors
+    - title: Inspect
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.md
+    - title: Inspect.forTesting
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.forTesting.md
+    - title: Inspect.named
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.named.md
+    - heading: Methods
+    - title: configure
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/configure.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md
+    - title: onDemand
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/onDemand.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/operator_equals.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/hashCode.md
+    - title: health
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/health.md
+    - title: nameToInstanceCount
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/nameToInstanceCount.md
+    - title: root
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/root.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/Inspect/runtimeType.md
+  - title: InspectStateError
+    path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError-class.md
+    section:
+    - heading: Constructors
+    - title: InspectStateError
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/InspectStateError.md
+    - heading: Methods
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/hashCode.md
+    - title: message
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/message.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/runtimeType.md
+    - title: stackTrace
+      path: /reference/dart/package-fuchsia_inspect_inspect/InspectStateError/stackTrace.md
+  - title: IntProperty
+    path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty-class.md
+    section:
+    - heading: Constructors
+    - title: IntProperty.deleted
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/IntProperty.deleted.md
+    - heading: Methods
+    - title: add
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/add.md
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/delete.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/operator_equals.md
+    - title: setValue
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/setValue.md
+    - title: subtract
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/subtract.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/IntProperty/valid.md
+  - title: Node
+    path: /reference/dart/package-fuchsia_inspect_inspect/Node-class.md
+    section:
+    - heading: Constructors
+    - title: Node.deleted
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/Node.deleted.md
+    - heading: Methods
+    - title: boolProperty
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/boolProperty.md
+    - title: byteDataProperty
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/byteDataProperty.md
+    - title: child
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/child.md
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/delete.md
+    - title: doubleProperty
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/doubleProperty.md
+    - title: intProperty
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/intProperty.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/operator_equals.md
+    - title: stringProperty
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/stringProperty.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/Node/valid.md
+  - title: StringProperty
+    path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty-class.md
+    section:
+    - heading: Constructors
+    - title: StringProperty.deleted
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/StringProperty.deleted.md
+    - heading: Methods
+    - title: delete
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/delete.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/operator_equals.md
+    - title: setValue
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/setValue.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/toString.md
+    - heading: Properties
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/runtimeType.md
+    - title: valid
+      path: /reference/dart/package-fuchsia_inspect_inspect/StringProperty/valid.md
+  - heading: Functions
+  - title: uniqueName
+    path: /reference/dart/package-fuchsia_inspect_inspect/uniqueName.md
+- title: testing
+  path: /reference/dart/package-fuchsia_inspect_testing/package-fuchsia_inspect_testing-library.md
+  section:
+  - heading: Classes
+  - title: FakeVmoHolder
+    path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder-class.md
+    section:
+    - heading: Constructors
+    - title: FakeVmoHolder
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.md
+    - title: FakeVmoHolder.fromVmo
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.fromVmo.md
+    - title: FakeVmoHolder.usingData
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.usingData.md
+    - heading: Methods
+    - title: beginWork
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/beginWork.md
+    - title: commit
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/commit.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md
+    - title: read
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/read.md
+    - title: readInt64
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/readInt64.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/toString.md
+    - title: write
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/write.md
+    - title: writeInt64
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64.md
+    - title: writeInt64Direct
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64Direct.md
+    - heading: Properties
+    - title: bytes
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/bytes.md
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/runtimeType.md
+    - title: size
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/size.md
+    - title: vmo
+      path: /reference/dart/package-fuchsia_inspect_testing/FakeVmoHolder/vmo.md
+  - title: NodeMatcher
+    path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher-class.md
+    section:
+    - heading: Methods
+    - title: at
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/at.md
+    - title: missingChild
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/missingChild.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md
+    - title: property
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/property.md
+    - title: propertyEquals
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyEquals.md
+    - title: propertyNotEquals
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyNotEquals.md
+    - title: resetErrors
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/resetErrors.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/toString.md
+    - heading: Properties
+    - title: errors
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/errors.md
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_testing/NodeMatcher/runtimeType.md
+  - title: PropertyMatcher
+    path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher-class.md
+    section:
+    - heading: Methods
+    - title: equals
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/equals.md
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md
+    - title: notEquals
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/notEquals.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md
+    - title: resetErrors
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/resetErrors.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/toString.md
+    - heading: Properties
+    - title: errors
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/errors.md
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_testing/PropertyMatcher/runtimeType.md
+  - title: VmoMatcher
+    path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher-class.md
+    section:
+    - heading: Constructors
+    - title: VmoMatcher
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/VmoMatcher.md
+    - heading: Methods
+    - title: noSuchMethod
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md
+    - title: node
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/node.md
+    - title: operator ==
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md
+    - title: resetErrors
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/resetErrors.md
+    - title: toString
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/toString.md
+    - heading: Properties
+    - title: errors
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/errors.md
+    - title: hashCode
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/hashCode.md
+    - title: runtimeType
+      path: /reference/dart/package-fuchsia_inspect_testing/VmoMatcher/runtimeType.md
+  - heading: Top-level Constants
+  - title: hasNoErrors
+    path: /reference/dart/package-fuchsia_inspect_testing/hasNoErrors-constant.md
 - heading: fuchsia_scenic
 - title: views
   path: /reference/dart/package-fuchsia_scenic_views/package-fuchsia_scenic_views-library.md
diff --git a/all/dart/index.md b/all/dart/index.md
index caa41d4..ca071da 100644
--- a/all/dart/index.md
+++ b/all/dart/index.md
@@ -14,6 +14,15 @@
  
 
 
+## fuchsia_inspect
+
+##### [inspect](package-fuchsia_inspect_inspect/package-fuchsia_inspect_inspect-library.md)
+ 
+
+##### [testing](package-fuchsia_inspect_testing/package-fuchsia_inspect_testing-library.md)
+ 
+
+
 ## fuchsia_scenic
 
 ##### [views](package-fuchsia_scenic_views/package-fuchsia_scenic_views-library.md)
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty-class.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty-class.md
new file mode 100644
index 0000000..658d921
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty-class.md
@@ -0,0 +1,64 @@
+
+# BoolProperty class
+
+    *<Null safety>*
+
+<p>A <code>Property</code> holding a <code>bool</code>.</p>
+<p>Only <a href="../package-fuchsia_inspect_inspect/Node/boolProperty.md">Node.boolProperty()</a> can create this object.</p>
+
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/BoolProperty/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/BoolProperty/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/BoolProperty/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/BoolProperty/valid.md) &#8594; bool
+
+Returns true only if this <code>Property</code> is present in underlying storage.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [delete](../package-fuchsia_inspect_inspect/BoolProperty/delete.md)() void
+
+Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.   
+_inherited_
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md)  
+_inherited_
+
+##### [setValue](../package-fuchsia_inspect_inspect/BoolProperty/setValue.md)(bool value) void
+
+Sets the value of this <code>Property</code>.   
+
+
+##### [toString](../package-fuchsia_inspect_inspect/BoolProperty/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/delete.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/delete.md
new file mode 100644
index 0000000..7928e3c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/delete.md
@@ -0,0 +1,23 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+_inherited_
+
+<p>Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/hashCode.md
new file mode 100644
index 0000000..b81b295
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/BoolProperty/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md
new file mode 100644
index 0000000..4fd6dfc
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/BoolProperty/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md
new file mode 100644
index 0000000..3a65340
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/BoolProperty/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/setValue.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/setValue.md
new file mode 100644
index 0000000..e5e3da5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/setValue.md
@@ -0,0 +1,23 @@
+
+# setValue method
+
+    *<Null safety>*
+
+- @override
+
+void setValue
+(bool value)
+
+
+<p>Sets the value of this <code>Property</code>.</p>
+
+## Implementation
+
+```dart
+@override
+void setValue(bool value) {
+  _writer?.setBool(index, value);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/toString.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/BoolProperty/valid.md b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/valid.md
new file mode 100644
index 0000000..35b61af
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/BoolProperty/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+_inherited_
+
+<p>Returns true only if this <code>Property</code> is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty-class.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty-class.md
new file mode 100644
index 0000000..a8a5da0
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty-class.md
@@ -0,0 +1,71 @@
+
+# ByteDataProperty class
+
+    *<Null safety>*
+
+<p>A <code>Property</code> holding a <code>ByteData</code>.</p>
+<p>Only <a href="../package-fuchsia_inspect_inspect/Node/byteDataProperty.md">Node.byteDataProperty()</a> can create this object.</p>
+
+
+## Constructors
+
+[ByteDataProperty.deleted](../package-fuchsia_inspect_inspect/ByteDataProperty/ByteDataProperty.deleted.md) ()
+
+Creates a <a href="../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a> that does nothing.   
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/ByteDataProperty/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/ByteDataProperty/valid.md) &#8594; bool
+
+Returns true only if this <code>Property</code> is present in underlying storage.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [delete](../package-fuchsia_inspect_inspect/ByteDataProperty/delete.md)() void
+
+Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.   
+_inherited_
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md)  
+_inherited_
+
+##### [setValue](../package-fuchsia_inspect_inspect/ByteDataProperty/setValue.md)(ByteData value) void
+
+Sets the value of this <code>Property</code>.   
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/ByteDataProperty/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/ByteDataProperty.deleted.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/ByteDataProperty.deleted.md
new file mode 100644
index 0000000..3e9bb83
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/ByteDataProperty.deleted.md
@@ -0,0 +1,18 @@
+
+# ByteDataProperty.deleted constructor
+
+    *<Null safety>*
+
+
+
+ByteDataProperty.deleted()
+
+<p>Creates a <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a> that does nothing.</p>
+
+## Implementation
+
+```dart
+ByteDataProperty.deleted() : super.deleted();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/delete.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/delete.md
new file mode 100644
index 0000000..7928e3c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/delete.md
@@ -0,0 +1,23 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+_inherited_
+
+<p>Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md
new file mode 100644
index 0000000..f5eb255
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md
new file mode 100644
index 0000000..a87a401
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md
new file mode 100644
index 0000000..2fb574d
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/setValue.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/setValue.md
new file mode 100644
index 0000000..ee4294a
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/setValue.md
@@ -0,0 +1,23 @@
+
+# setValue method
+
+    *<Null safety>*
+
+- @override
+
+void setValue
+(ByteData value)
+_inherited_
+
+<p>Sets the value of this <code>Property</code>.</p>
+
+## Implementation
+
+```dart
+@override
+void setValue(T value) {
+  _writer?.setBufferProperty(index, value);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/toString.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/valid.md b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/valid.md
new file mode 100644
index 0000000..35b61af
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/ByteDataProperty/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+_inherited_
+
+<p>Returns true only if this <code>Property</code> is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty-class.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty-class.md
new file mode 100644
index 0000000..1150045
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty-class.md
@@ -0,0 +1,81 @@
+
+# DoubleProperty class
+
+    *<Null safety>*
+
+<p>A <code>Property</code> holding a <code>double</code>.</p>
+<p>Only <a href="../package-fuchsia_inspect_inspect/Node/doubleProperty.md">Node.doubleProperty()</a> can create this object.</p>
+
+
+## Constructors
+
+[DoubleProperty.deleted](../package-fuchsia_inspect_inspect/DoubleProperty/DoubleProperty.deleted.md) ()
+
+Creates a <a href="../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a> that does nothing.   
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/DoubleProperty/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/DoubleProperty/valid.md) &#8594; bool
+
+Returns true only if this <code>Property</code> is present in underlying storage.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [add](../package-fuchsia_inspect_inspect/DoubleProperty/add.md)(double delta) void
+
+Adds <code>delta</code> to the value of this metric.   
+_inherited_
+
+##### [delete](../package-fuchsia_inspect_inspect/DoubleProperty/delete.md)() void
+
+Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.   
+_inherited_
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md)  
+_inherited_
+
+##### [setValue](../package-fuchsia_inspect_inspect/DoubleProperty/setValue.md)(double value) void
+
+Sets the value of this <code>Property</code>.   
+_inherited_
+
+##### [subtract](../package-fuchsia_inspect_inspect/DoubleProperty/subtract.md)(double delta) void
+
+Subtracts <code>delta</code> from the value of this metric.   
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/DoubleProperty/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/DoubleProperty.deleted.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/DoubleProperty.deleted.md
new file mode 100644
index 0000000..b205b8d
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/DoubleProperty.deleted.md
@@ -0,0 +1,18 @@
+
+# DoubleProperty.deleted constructor
+
+    *<Null safety>*
+
+
+
+DoubleProperty.deleted()
+
+<p>Creates a <a href="../../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a> that does nothing.</p>
+
+## Implementation
+
+```dart
+DoubleProperty.deleted() : super.deleted();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/add.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/add.md
new file mode 100644
index 0000000..2907eb8
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/add.md
@@ -0,0 +1,21 @@
+
+# add method
+
+    *<Null safety>*
+
+
+void add
+(double delta)
+_inherited_
+
+<p>Adds <code>delta</code> to the value of this metric.</p>
+
+## Implementation
+
+```dart
+void add(T delta) {
+  _writer?.addMetric(index, delta);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/delete.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/delete.md
new file mode 100644
index 0000000..7928e3c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/delete.md
@@ -0,0 +1,23 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+_inherited_
+
+<p>Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md
new file mode 100644
index 0000000..11d68f6
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md
new file mode 100644
index 0000000..786c843
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md
new file mode 100644
index 0000000..91fa51a
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/DoubleProperty/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/setValue.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/setValue.md
new file mode 100644
index 0000000..56f4365
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/setValue.md
@@ -0,0 +1,23 @@
+
+# setValue method
+
+    *<Null safety>*
+
+- @override
+
+void setValue
+(double value)
+_inherited_
+
+<p>Sets the value of this <code>Property</code>.</p>
+
+## Implementation
+
+```dart
+@override
+void setValue(T value) {
+  _writer?.setMetric(index, value);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/subtract.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/subtract.md
new file mode 100644
index 0000000..0774743
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/subtract.md
@@ -0,0 +1,21 @@
+
+# subtract method
+
+    *<Null safety>*
+
+
+void subtract
+(double delta)
+_inherited_
+
+<p>Subtracts <code>delta</code> from the value of this metric.</p>
+
+## Implementation
+
+```dart
+void subtract(T delta) {
+  _writer?.subMetric(index, delta);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/toString.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/valid.md b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/valid.md
new file mode 100644
index 0000000..35b61af
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/DoubleProperty/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+_inherited_
+
+<p>Returns true only if this <code>Property</code> is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect-class.md b/all/dart/package-fuchsia_inspect_inspect/Inspect-class.md
new file mode 100644
index 0000000..c2dc4d1
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect-class.md
@@ -0,0 +1,102 @@
+
+# Inspect class
+
+    *<Null safety>*
+
+<p><a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> exposes a structured tree of internal component state.</p>
+<p>The <a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> object maintains a hierarchy of <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a> objects whose data are
+exposed for reading by specialized tools such as iquery.</p>
+<p>The classes exposed by this library do not support reading.</p>
+
+
+## Constructors
+
+[Inspect](../package-fuchsia_inspect_inspect/Inspect/Inspect.md) ()
+
+Returns a singleton <a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> instance at root.inspect   
+ _factory_
+
+[Inspect.forTesting](../package-fuchsia_inspect_inspect/Inspect/Inspect.forTesting.md) ([FakeVmoHolder](../package-fuchsia_inspect_testing/FakeVmoHolder-class.md) vmo, String name)
+
+Returns a new <a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> object at <name>.inspect backed by a fake VMO
+intended for unit testing inspect integrations, so that they can run as
+host tests.</name>   
+ _factory_
+
+[Inspect.named](../package-fuchsia_inspect_inspect/Inspect/Inspect.named.md) (String name)
+
+Returns a new <a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> object at <name>.inspect
+If called multiple times with the same name within a process, a unique
+number will be appended, though any existing file will be overwritten.</name> [...](../package-fuchsia_inspect_inspect/Inspect/Inspect.named.md)  
+ _factory_
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/Inspect/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/Inspect/hashCode.md)  
+_read-only, inherited_
+
+##### [health](../package-fuchsia_inspect_inspect/Inspect/health.md) &#8594; HealthNode
+
+The health <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a> of this Inspect tree. [...](../package-fuchsia_inspect_inspect/Inspect/health.md)  
+_read-only_
+
+##### [root](../package-fuchsia_inspect_inspect/Inspect/root.md) &#8594; [Node](../package-fuchsia_inspect_inspect/Node-class.md)?
+
+The root <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a> of this Inspect tree. [...](../package-fuchsia_inspect_inspect/Inspect/root.md)  
+_read-only_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/Inspect/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md)  
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/Inspect/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/Inspect/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/Inspect/operator_equals.md)  
+_inherited_
+
+
+## Static Properties
+
+##### [nameToInstanceCount](../package-fuchsia_inspect_inspect/Inspect/nameToInstanceCount.md) &#8596; Map&lt;String, int>?
+
+Maps an inspect instance name to the number of instantiations
+of that inspector. Used to deduplicate requests for
+similarly named inspectors.   
+_read / write_
+
+
+## Static Methods
+
+##### [configure](../package-fuchsia_inspect_inspect/Inspect/configure.md)({int? vmoSizeBytes}) void
+
+Optionally configure global settings for inspection. [...](../package-fuchsia_inspect_inspect/Inspect/configure.md)  
+
+
+##### [onDemand](../package-fuchsia_inspect_inspect/Inspect/onDemand.md)(String name, OnDemandRootFn rootNodeCallback) void
+
+Mounts an <a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> file at <name>.inspect whose contents are
+dynamically created by rootNodeCallback on each read.</name> [...](../package-fuchsia_inspect_inspect/Inspect/onDemand.md)  
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.forTesting.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.forTesting.md
new file mode 100644
index 0000000..e9f0fc3
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.forTesting.md
@@ -0,0 +1,25 @@
+
+# Inspect.forTesting constructor
+
+    *<Null safety>*
+
+
+
+Inspect.forTesting([FakeVmoHolder](../../package-fuchsia_inspect_testing/FakeVmoHolder-class.md) vmo, String name)
+
+<p>Returns a new <a href="../../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> object at <name>.inspect backed by a fake VMO
+intended for unit testing inspect integrations, so that they can run as
+host tests.</name></p>
+
+## Implementation
+
+```dart
+factory Inspect.forTesting(FakeVmoHolder vmo, String name) {
+  final writer = VmoWriter.withVmo(vmo);
+  final fileName = _nextInstanceWithName(name);
+  final context = StartupContext.fromStartupInfo();
+  return InspectImpl(context.outgoing.debugDir(), fileName, writer);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.md
new file mode 100644
index 0000000..cef9577
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.md
@@ -0,0 +1,26 @@
+
+# Inspect constructor
+
+    *<Null safety>*
+
+
+
+Inspect()
+
+<p>Returns a singleton <a href="../../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> instance at root.inspect</p>
+
+## Implementation
+
+```dart
+factory Inspect() {
+  if (_singleton == null) {
+    var context = StartupContext.fromStartupInfo();
+    var writer = VmoWriter.withSize(vmoSize);
+    _singleton = InspectImpl(
+        context.outgoing.diagnosticsDir(), 'root.inspect', writer);
+  }
+  return _singleton!;
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.named.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.named.md
new file mode 100644
index 0000000..08f69e1
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/Inspect.named.md
@@ -0,0 +1,29 @@
+
+# Inspect.named constructor
+
+    *<Null safety>*
+
+
+
+Inspect.named(String name)
+
+<p>Returns a new <a href="../../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> object at <name>.inspect
+If called multiple times with the same name within a process, a unique
+number will be appended, though any existing file will be overwritten.</name></p>
+<p>Example:
+Inspect.named('test');
+Inspect.named('test');
+Results in "test.inspect" and "test_2.inspect"</p>
+
+## Implementation
+
+```dart
+factory Inspect.named(String name) {
+  var context = StartupContext.fromStartupInfo();
+  var writer = VmoWriter.withSize(vmoSize);
+  var fileName = _nextInstanceWithName(name);
+  return InspectImpl(context.outgoing.diagnosticsDir(), fileName, writer);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/configure.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/configure.md
new file mode 100644
index 0000000..068f3c9
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/configure.md
@@ -0,0 +1,36 @@
+
+# configure method
+
+    *<Null safety>*
+
+
+void configure
+({int? vmoSizeBytes})
+
+
+<p>Optionally configure global settings for inspection.</p>
+<p>This may not be called after the first call to Inspect().</p>
+<p><code>vmoSizeBytes</code>: Sets the maximum size of the virtual memory object (VMO)
+used to store inspection data for this program.
+Must be at least 64 bytes.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if called after Inspect(), or <code>ArgumentError</code>
+if called with an invalid vmoSizeBytes.</p>
+
+## Implementation
+
+```dart
+static void configure({int? vmoSizeBytes}) {
+  if (_singleton != null) {
+    throw InspectStateError(
+        'configureInspect cannot be called after factory runs');
+  }
+  if (vmoSizeBytes != null) {
+    if (vmoSizeBytes < 64) {
+      throw ArgumentError('VMO size must be at least 64 bytes.');
+    }
+    vmoSize = vmoSizeBytes;
+  }
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/hashCode.md
new file mode 100644
index 0000000..fe5785f
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/Inspect/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/Inspect/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/Inspect/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/Inspect/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/Inspect/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/Inspect/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/health.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/health.md
new file mode 100644
index 0000000..df47a95
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/health.md
@@ -0,0 +1,20 @@
+
+# health property
+
+    *<Null safety>*
+
+
+HealthNode health
+  
+
+
+<p>The health <a href="../../package-fuchsia_inspect_inspect/Node-class.md">Node</a> of this Inspect tree.</p>
+<p>This node can't be deleted once created; but its creation is on demand.</p>
+
+## Implementation
+
+```dart
+HealthNode get health => _singleton!.health;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/nameToInstanceCount.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/nameToInstanceCount.md
new file mode 100644
index 0000000..be511f7
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/nameToInstanceCount.md
@@ -0,0 +1,22 @@
+
+# nameToInstanceCount property
+
+    *<Null safety>*
+
+Map&lt;String, int>? nameToInstanceCount
+  
+_read / write_
+
+<p>Maps an inspect instance name to the number of instantiations
+of that inspector. Used to deduplicate requests for
+similarly named inspectors.</p>
+
+## Implementation
+
+```dart
+static Map<String, int>? nameToInstanceCount
+
+
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md
new file mode 100644
index 0000000..fa20f94
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/Inspect/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/onDemand.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/onDemand.md
new file mode 100644
index 0000000..f1db6d0
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/onDemand.md
@@ -0,0 +1,33 @@
+
+# onDemand method
+
+    *<Null safety>*
+
+
+void onDemand
+(String name, OnDemandRootFn rootNodeCallback)
+
+
+<p>Mounts an <a href="../../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> file at <name>.inspect whose contents are
+dynamically created by rootNodeCallback on each read.</name></p>
+<p>If methods on this class are called multiple times with the same
+name, a unique number will be appended to the name.</p>
+
+## Implementation
+
+```dart
+static void onDemand(String name, OnDemandRootFn rootNodeCallback) {
+  var context = StartupContext.fromStartupInfo();
+  var directory = context.outgoing.diagnosticsDir();
+  var fileName = _nextInstanceWithName(name);
+  var pseudoVmoNode = PseudoVmoFile.readOnly(() {
+    var writer = VmoWriter.withSize(vmoSize);
+    rootNodeCallback(RootNode(writer));
+    return writer.vmo;
+  });
+
+  directory.addNode(fileName, pseudoVmoNode);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/operator_equals.md
new file mode 100644
index 0000000..8c221dd
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/Inspect/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/root.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/root.md
new file mode 100644
index 0000000..678859e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/root.md
@@ -0,0 +1,20 @@
+
+# root property
+
+    *<Null safety>*
+
+
+[Node](../../package-fuchsia_inspect_inspect/Node-class.md)? root
+  
+
+
+<p>The root <a href="../../package-fuchsia_inspect_inspect/Node-class.md">Node</a> of this Inspect tree.</p>
+<p>This node can't be deleted; trying to delete it is a NOP.</p>
+
+## Implementation
+
+```dart
+Node? get root => _singleton!.root;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Inspect/toString.md b/all/dart/package-fuchsia_inspect_inspect/Inspect/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Inspect/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError-class.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError-class.md
new file mode 100644
index 0000000..3083d9b
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError-class.md
@@ -0,0 +1,74 @@
+
+# InspectStateError class
+
+    *<Null safety>*
+
+<p>Thrown when the programmer misuses Inspect.</p>
+
+**Inheritance**
+
+- Object
+- Error
+- StateError
+- InspectStateError
+
+
+
+
+
+
+## Constructors
+
+[InspectStateError](../package-fuchsia_inspect_inspect/InspectStateError/InspectStateError.md) (String message)
+
+Constructor   
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/InspectStateError/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/InspectStateError/hashCode.md)  
+_read-only, inherited_
+
+##### [message](../package-fuchsia_inspect_inspect/InspectStateError/message.md) &#8594; String
+
+   
+_final, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/InspectStateError/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [stackTrace](../package-fuchsia_inspect_inspect/InspectStateError/stackTrace.md) &#8594; StackTrace?
+
+   
+_read-only, inherited_
+
+
+## Methods
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md)  
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/InspectStateError/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/InspectStateError.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/InspectStateError.md
new file mode 100644
index 0000000..4d36056
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/InspectStateError.md
@@ -0,0 +1,18 @@
+
+# InspectStateError constructor
+
+    *<Null safety>*
+
+
+
+InspectStateError(String message)
+
+<p>Constructor</p>
+
+## Implementation
+
+```dart
+InspectStateError(String message) : super(message);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/hashCode.md
new file mode 100644
index 0000000..e78e364
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/InspectStateError/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/message.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/message.md
new file mode 100644
index 0000000..f7bb97a
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/message.md
@@ -0,0 +1,20 @@
+
+# message property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/errors.dart#L566)
+    *<Null safety>*
+
+String message
+  
+_final, inherited_
+
+
+## Implementation
+
+```dart
+final String message
+
+
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md
new file mode 100644
index 0000000..fe1a098
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/InspectStateError/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md
new file mode 100644
index 0000000..3d7a44f
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/InspectStateError/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/stackTrace.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/stackTrace.md
new file mode 100644
index 0000000..eb461a9
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/stackTrace.md
@@ -0,0 +1,19 @@
+
+# stackTrace property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/errors.dart#L92)
+    *<Null safety>*
+
+
+StackTrace? stackTrace
+  
+_inherited_
+
+
+## Implementation
+
+```dart
+external StackTrace? get stackTrace;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/InspectStateError/toString.md b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/toString.md
new file mode 100644
index 0000000..1546797
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/InspectStateError/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/errors.dart#L568)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+String toString() => "Bad state: $message";
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty-class.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty-class.md
new file mode 100644
index 0000000..779651e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty-class.md
@@ -0,0 +1,81 @@
+
+# IntProperty class
+
+    *<Null safety>*
+
+<p>A <code>Property</code> holding an <code>int</code>.</p>
+<p>Only <a href="../package-fuchsia_inspect_inspect/Node/intProperty.md">Node.intProperty()</a> can create this object.</p>
+
+
+## Constructors
+
+[IntProperty.deleted](../package-fuchsia_inspect_inspect/IntProperty/IntProperty.deleted.md) ()
+
+Creates an <a href="../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a> that does nothing.   
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/IntProperty/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/IntProperty/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/IntProperty/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/IntProperty/valid.md) &#8594; bool
+
+Returns true only if this <code>Property</code> is present in underlying storage.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [add](../package-fuchsia_inspect_inspect/IntProperty/add.md)(int? delta) void
+
+Adds <code>delta</code> to the value of this metric.   
+_inherited_
+
+##### [delete](../package-fuchsia_inspect_inspect/IntProperty/delete.md)() void
+
+Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.   
+_inherited_
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md)  
+_inherited_
+
+##### [setValue](../package-fuchsia_inspect_inspect/IntProperty/setValue.md)(int? value) void
+
+Sets the value of this <code>Property</code>.   
+_inherited_
+
+##### [subtract](../package-fuchsia_inspect_inspect/IntProperty/subtract.md)(int? delta) void
+
+Subtracts <code>delta</code> from the value of this metric.   
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/IntProperty/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/IntProperty.deleted.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/IntProperty.deleted.md
new file mode 100644
index 0000000..a550a48
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/IntProperty.deleted.md
@@ -0,0 +1,18 @@
+
+# IntProperty.deleted constructor
+
+    *<Null safety>*
+
+
+
+IntProperty.deleted()
+
+<p>Creates an <a href="../../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a> that does nothing.</p>
+
+## Implementation
+
+```dart
+IntProperty.deleted() : super.deleted();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/add.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/add.md
new file mode 100644
index 0000000..4650b0a
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/add.md
@@ -0,0 +1,21 @@
+
+# add method
+
+    *<Null safety>*
+
+
+void add
+(int? delta)
+_inherited_
+
+<p>Adds <code>delta</code> to the value of this metric.</p>
+
+## Implementation
+
+```dart
+void add(T delta) {
+  _writer?.addMetric(index, delta);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/delete.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/delete.md
new file mode 100644
index 0000000..7928e3c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/delete.md
@@ -0,0 +1,23 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+_inherited_
+
+<p>Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/hashCode.md
new file mode 100644
index 0000000..30442ef
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/IntProperty/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/IntProperty/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md
new file mode 100644
index 0000000..f071db2
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/IntProperty/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/operator_equals.md
new file mode 100644
index 0000000..4bef619
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/IntProperty/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/setValue.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/setValue.md
new file mode 100644
index 0000000..0307aa7
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/setValue.md
@@ -0,0 +1,23 @@
+
+# setValue method
+
+    *<Null safety>*
+
+- @override
+
+void setValue
+(int? value)
+_inherited_
+
+<p>Sets the value of this <code>Property</code>.</p>
+
+## Implementation
+
+```dart
+@override
+void setValue(T value) {
+  _writer?.setMetric(index, value);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/subtract.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/subtract.md
new file mode 100644
index 0000000..47c9059
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/subtract.md
@@ -0,0 +1,21 @@
+
+# subtract method
+
+    *<Null safety>*
+
+
+void subtract
+(int? delta)
+_inherited_
+
+<p>Subtracts <code>delta</code> from the value of this metric.</p>
+
+## Implementation
+
+```dart
+void subtract(T delta) {
+  _writer?.subMetric(index, delta);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/toString.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/IntProperty/valid.md b/all/dart/package-fuchsia_inspect_inspect/IntProperty/valid.md
new file mode 100644
index 0000000..35b61af
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/IntProperty/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+_inherited_
+
+<p>Returns true only if this <code>Property</code> is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node-class.md b/all/dart/package-fuchsia_inspect_inspect/Node-class.md
new file mode 100644
index 0000000..9a81d66
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node-class.md
@@ -0,0 +1,94 @@
+
+# Node class
+
+    *<Null safety>*
+
+<p>A named node in the Inspect tree that can have <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a>s and
+properties under it.</p>
+
+
+## Constructors
+
+[Node.deleted](../package-fuchsia_inspect_inspect/Node/Node.deleted.md) ()
+
+Creates a Node that never does anything. [...](../package-fuchsia_inspect_inspect/Node/Node.deleted.md)  
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/Node/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/Node/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/Node/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/Node/valid.md) &#8594; bool
+
+Returns true only if this node is present in underlying storage.   
+_read-only_
+
+
+## Methods
+
+##### [boolProperty](../package-fuchsia_inspect_inspect/Node/boolProperty.md)(String name) [BoolProperty](../package-fuchsia_inspect_inspect/BoolProperty-class.md)?
+
+Returns an <a href="../package-fuchsia_inspect_inspect/BoolProperty-class.md">BoolProperty</a> with <code>name</code> on this node. [...](../package-fuchsia_inspect_inspect/Node/boolProperty.md)  
+
+
+##### [byteDataProperty](../package-fuchsia_inspect_inspect/Node/byteDataProperty.md)(String name) [ByteDataProperty](../package-fuchsia_inspect_inspect/ByteDataProperty-class.md)?
+
+Returns a <a href="../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a> with <code>name</code> on this node. [...](../package-fuchsia_inspect_inspect/Node/byteDataProperty.md)  
+
+
+##### [child](../package-fuchsia_inspect_inspect/Node/child.md)(String name) [Node](../package-fuchsia_inspect_inspect/Node-class.md)?
+
+Returns a child <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a> with <code>name</code>. [...](../package-fuchsia_inspect_inspect/Node/child.md)  
+
+
+##### [delete](../package-fuchsia_inspect_inspect/Node/delete.md)() void
+
+Deletes this node and any children from underlying storage. [...](../package-fuchsia_inspect_inspect/Node/delete.md)  
+
+
+##### [doubleProperty](../package-fuchsia_inspect_inspect/Node/doubleProperty.md)(String name) [DoubleProperty](../package-fuchsia_inspect_inspect/DoubleProperty-class.md)?
+
+Returns a <a href="../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a> with <code>name</code> on this node. [...](../package-fuchsia_inspect_inspect/Node/doubleProperty.md)  
+
+
+##### [intProperty](../package-fuchsia_inspect_inspect/Node/intProperty.md)(String name) [IntProperty](../package-fuchsia_inspect_inspect/IntProperty-class.md)?
+
+Returns an <a href="../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a> with <code>name</code> on this node. [...](../package-fuchsia_inspect_inspect/Node/intProperty.md)  
+
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/Node/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/Node/noSuchMethod.md)  
+_inherited_
+
+##### [stringProperty](../package-fuchsia_inspect_inspect/Node/stringProperty.md)(String name) [StringProperty](../package-fuchsia_inspect_inspect/StringProperty-class.md)?
+
+Returns a <a href="../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a> with <code>name</code> on this node. [...](../package-fuchsia_inspect_inspect/Node/stringProperty.md)  
+
+
+##### [toString](../package-fuchsia_inspect_inspect/Node/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/Node/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/Node/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/Node.deleted.md b/all/dart/package-fuchsia_inspect_inspect/Node/Node.deleted.md
new file mode 100644
index 0000000..a9aecd5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/Node.deleted.md
@@ -0,0 +1,23 @@
+
+# Node.deleted constructor
+
+    *<Null safety>*
+
+
+
+Node.deleted()
+
+<p>Creates a Node that never does anything.</p>
+<p>These are returned when calling createChild on a deleted <a href="../../package-fuchsia_inspect_inspect/Node-class.md">Node</a>.</p>
+
+## Implementation
+
+```dart
+Node.deleted()
+    : _writer = null,
+      _parent = null,
+      _name = null,
+      index = invalidIndex;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/boolProperty.md b/all/dart/package-fuchsia_inspect_inspect/Node/boolProperty.md
new file mode 100644
index 0000000..725ba6a
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/boolProperty.md
@@ -0,0 +1,36 @@
+
+# boolProperty method
+
+    *<Null safety>*
+
+
+[BoolProperty](../../package-fuchsia_inspect_inspect/BoolProperty-class.md)? boolProperty
+(String name)
+
+
+<p>Returns an <a href="../../package-fuchsia_inspect_inspect/BoolProperty-class.md">BoolProperty</a> with <code>name</code> on this node.</p>
+<p>If an <a href="../../package-fuchsia_inspect_inspect/BoolProperty-class.md">BoolProperty</a> with <code>name</code> already exists and is not
+deleted, this method returns it.</p>
+<p>Otherwise, it creates a new property initialized to false.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if a non-deleted property with <code>name</code>
+already exists but it is not a <a href="../../package-fuchsia_inspect_inspect/BoolProperty-class.md">BoolProperty</a>.</p>
+
+## Implementation
+
+```dart
+BoolProperty? boolProperty(String name) {
+  if (_writer == null) {
+    return BoolProperty._deleted();
+  }
+  if (_properties.containsKey(name)) {
+    if (_properties[name] is! BoolProperty) {
+      throw InspectStateError(
+          "Can't create BoolProperty named $name; a different type exists.");
+    }
+    return _properties[name] as BoolProperty?;
+  }
+  return _properties[name] = BoolProperty._(name, this, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/byteDataProperty.md b/all/dart/package-fuchsia_inspect_inspect/Node/byteDataProperty.md
new file mode 100644
index 0000000..e4b21f6
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/byteDataProperty.md
@@ -0,0 +1,37 @@
+
+# byteDataProperty method
+
+    *<Null safety>*
+
+
+[ByteDataProperty](../../package-fuchsia_inspect_inspect/ByteDataProperty-class.md)? byteDataProperty
+(String name)
+
+
+<p>Returns a <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a> with <code>name</code> on this node.</p>
+<p>If a <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a> with <code>name</code> already exists and is not deleted,
+this method returns it.</p>
+<p>Otherwise, it creates a new property initialized to the empty
+byte data container.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if a non-deleted property with <code>name</code> already exists
+but it is not a <a href="../../package-fuchsia_inspect_inspect/ByteDataProperty-class.md">ByteDataProperty</a>.</p>
+
+## Implementation
+
+```dart
+ByteDataProperty? byteDataProperty(String name) {
+  if (_writer == null) {
+    return ByteDataProperty.deleted();
+  }
+  if (_properties.containsKey(name)) {
+    if (_properties[name] is! ByteDataProperty) {
+      throw InspectStateError("Can't create ByteDataProperty named $name;"
+          ' a different type exists.');
+    }
+    return _properties[name] as ByteDataProperty?;
+  }
+  return _properties[name] = ByteDataProperty._(name, this, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/child.md b/all/dart/package-fuchsia_inspect_inspect/Node/child.md
new file mode 100644
index 0000000..fc9e946
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/child.md
@@ -0,0 +1,29 @@
+
+# child method
+
+    *<Null safety>*
+
+
+[Node](../../package-fuchsia_inspect_inspect/Node-class.md)? child
+(String name)
+
+
+<p>Returns a child <a href="../../package-fuchsia_inspect_inspect/Node-class.md">Node</a> with <code>name</code>.</p>
+<p>If a child with <code>name</code> already exists and was not deleted, this
+method returns it. Otherwise, it creates a new <a href="../../package-fuchsia_inspect_inspect/Node-class.md">Node</a>.</p>
+
+## Implementation
+
+```dart
+Node? child(String name) {
+  if (_writer == null) {
+    return Node.deleted();
+  }
+  if (_children.containsKey(name)) {
+    return _children[name];
+  }
+  return _children[name] = Node._(this, name, index, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/delete.md b/all/dart/package-fuchsia_inspect_inspect/Node/delete.md
new file mode 100644
index 0000000..a2e920f
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/delete.md
@@ -0,0 +1,24 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+
+
+<p>Deletes this node and any children from underlying storage.</p>
+<p>After a node has been deleted, all calls on it and its children have
+no effect and do not result in an error. Calls on a deleted node that
+return a Node or property return an already-deleted object.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/doubleProperty.md b/all/dart/package-fuchsia_inspect_inspect/Node/doubleProperty.md
new file mode 100644
index 0000000..0e206f5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/doubleProperty.md
@@ -0,0 +1,36 @@
+
+# doubleProperty method
+
+    *<Null safety>*
+
+
+[DoubleProperty](../../package-fuchsia_inspect_inspect/DoubleProperty-class.md)? doubleProperty
+(String name)
+
+
+<p>Returns a <a href="../../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a> with <code>name</code> on this node.</p>
+<p>If a <a href="../../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a> with <code>name</code> already exists and is not
+deleted, this method returns it.</p>
+<p>Otherwise, it creates a new property initialized to 0.0.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if a non-deleted property with <code>name</code>
+already exists but it is not a <a href="../../package-fuchsia_inspect_inspect/DoubleProperty-class.md">DoubleProperty</a>.</p>
+
+## Implementation
+
+```dart
+DoubleProperty? doubleProperty(String name) {
+  if (_writer == null) {
+    return DoubleProperty.deleted();
+  }
+  if (_properties.containsKey(name)) {
+    if (_properties[name] is! DoubleProperty) {
+      throw InspectStateError("Can't create DoubleProperty named $name;"
+          ' a different type exists.');
+    }
+    return _properties[name] as DoubleProperty?;
+  }
+  return _properties[name] = DoubleProperty._(name, this, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/Node/hashCode.md
new file mode 100644
index 0000000..bd0717e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/Node/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/Node/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/Node/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/Node/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/Node/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/Node/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/intProperty.md b/all/dart/package-fuchsia_inspect_inspect/Node/intProperty.md
new file mode 100644
index 0000000..a540c28
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/intProperty.md
@@ -0,0 +1,36 @@
+
+# intProperty method
+
+    *<Null safety>*
+
+
+[IntProperty](../../package-fuchsia_inspect_inspect/IntProperty-class.md)? intProperty
+(String name)
+
+
+<p>Returns an <a href="../../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a> with <code>name</code> on this node.</p>
+<p>If an <a href="../../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a> with <code>name</code> already exists and is not
+deleted, this method returns it.</p>
+<p>Otherwise, it creates a new property initialized to 0.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if a non-deleted property with <code>name</code>
+already exists but it is not an <a href="../../package-fuchsia_inspect_inspect/IntProperty-class.md">IntProperty</a>.</p>
+
+## Implementation
+
+```dart
+IntProperty? intProperty(String name) {
+  if (_writer == null) {
+    return IntProperty.deleted();
+  }
+  if (_properties.containsKey(name)) {
+    if (_properties[name] is! IntProperty) {
+      throw InspectStateError(
+          "Can't create IntProperty named $name; a different type exists.");
+    }
+    return _properties[name] as IntProperty?;
+  }
+  return _properties[name] = IntProperty._(name, this, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/Node/noSuchMethod.md
new file mode 100644
index 0000000..e33ab9d
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/Node/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/Node/operator_equals.md
new file mode 100644
index 0000000..8d557fc
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/Node/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/Node/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/stringProperty.md b/all/dart/package-fuchsia_inspect_inspect/Node/stringProperty.md
new file mode 100644
index 0000000..e4af9ce
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/stringProperty.md
@@ -0,0 +1,36 @@
+
+# stringProperty method
+
+    *<Null safety>*
+
+
+[StringProperty](../../package-fuchsia_inspect_inspect/StringProperty-class.md)? stringProperty
+(String name)
+
+
+<p>Returns a <a href="../../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a> with <code>name</code> on this node.</p>
+<p>If a <a href="../../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a> with <code>name</code> already exists and is not deleted,
+this method returns it.</p>
+<p>Otherwise, it creates a new property initialized to the empty string.</p>
+<p>Throws <a href="../../package-fuchsia_inspect_inspect/InspectStateError-class.md">InspectStateError</a> if a non-deleted property with <code>name</code> already
+exists but it is not a <a href="../../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a>.</p>
+
+## Implementation
+
+```dart
+StringProperty? stringProperty(String name) {
+  if (_writer == null) {
+    return StringProperty.deleted();
+  }
+  if (_properties.containsKey(name)) {
+    if (_properties[name] is! StringProperty) {
+      throw InspectStateError("Can't create StringProperty named $name;"
+          ' a different type exists.');
+    }
+    return _properties[name] as StringProperty?;
+  }
+  return _properties[name] = StringProperty._(name, this, _writer!);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/toString.md b/all/dart/package-fuchsia_inspect_inspect/Node/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/Node/valid.md b/all/dart/package-fuchsia_inspect_inspect/Node/valid.md
new file mode 100644
index 0000000..6272432
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/Node/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+
+
+<p>Returns true only if this node is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty-class.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty-class.md
new file mode 100644
index 0000000..9d4d513
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty-class.md
@@ -0,0 +1,71 @@
+
+# StringProperty class
+
+    *<Null safety>*
+
+<p>A <code>Property</code> holding a <code>String</code>.</p>
+<p>Only <a href="../package-fuchsia_inspect_inspect/Node/stringProperty.md">Node.stringProperty()</a> can create this object.</p>
+
+
+## Constructors
+
+[StringProperty.deleted](../package-fuchsia_inspect_inspect/StringProperty/StringProperty.deleted.md) ()
+
+Creates a <a href="../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a> that does nothing.   
+ 
+
+
+## Properties
+
+##### [hashCode](../package-fuchsia_inspect_inspect/StringProperty/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_inspect/StringProperty/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_inspect/StringProperty/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [valid](../package-fuchsia_inspect_inspect/StringProperty/valid.md) &#8594; bool
+
+Returns true only if this <code>Property</code> is present in underlying storage.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [delete](../package-fuchsia_inspect_inspect/StringProperty/delete.md)() void
+
+Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.   
+_inherited_
+
+##### [noSuchMethod](../package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md)  
+_inherited_
+
+##### [setValue](../package-fuchsia_inspect_inspect/StringProperty/setValue.md)(String value) void
+
+Sets the value of this <code>Property</code>.   
+_inherited_
+
+##### [toString](../package-fuchsia_inspect_inspect/StringProperty/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/StringProperty.deleted.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/StringProperty.deleted.md
new file mode 100644
index 0000000..2430fc8
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/StringProperty.deleted.md
@@ -0,0 +1,18 @@
+
+# StringProperty.deleted constructor
+
+    *<Null safety>*
+
+
+
+StringProperty.deleted()
+
+<p>Creates a <a href="../../package-fuchsia_inspect_inspect/StringProperty-class.md">StringProperty</a> that does nothing.</p>
+
+## Implementation
+
+```dart
+StringProperty.deleted() : super.deleted();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/delete.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/delete.md
new file mode 100644
index 0000000..7928e3c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/delete.md
@@ -0,0 +1,23 @@
+
+# delete method
+
+    *<Null safety>*
+
+
+void delete
+()
+_inherited_
+
+<p>Deletes this <code>Property</code> from underlying storage.
+Calls on a deleted <code>Property</code> have no effect and do not result in an
+error.</p>
+
+## Implementation
+
+```dart
+void delete() {
+  _delete();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/hashCode.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/hashCode.md
new file mode 100644
index 0000000..e735ce3
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_inspect/StringProperty/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_inspect/StringProperty/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md
new file mode 100644
index 0000000..605e7c9
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_inspect/StringProperty/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/operator_equals.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/operator_equals.md
new file mode 100644
index 0000000..c764a09
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_inspect/StringProperty/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/runtimeType.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/setValue.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/setValue.md
new file mode 100644
index 0000000..4a3ffbd
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/setValue.md
@@ -0,0 +1,23 @@
+
+# setValue method
+
+    *<Null safety>*
+
+- @override
+
+void setValue
+(String value)
+_inherited_
+
+<p>Sets the value of this <code>Property</code>.</p>
+
+## Implementation
+
+```dart
+@override
+void setValue(T value) {
+  _writer?.setBufferProperty(index, value);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/toString.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/StringProperty/valid.md b/all/dart/package-fuchsia_inspect_inspect/StringProperty/valid.md
new file mode 100644
index 0000000..35b61af
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/StringProperty/valid.md
@@ -0,0 +1,19 @@
+
+# valid property
+
+    *<Null safety>*
+
+
+bool valid
+  
+_inherited_
+
+<p>Returns true only if this <code>Property</code> is present in underlying storage.</p>
+
+## Implementation
+
+```dart
+bool get valid => _writer != null;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/package-fuchsia_inspect_inspect-library.md b/all/dart/package-fuchsia_inspect_inspect/package-fuchsia_inspect_inspect-library.md
new file mode 100644
index 0000000..cafa375
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/package-fuchsia_inspect_inspect-library.md
@@ -0,0 +1,59 @@
+
+# inspect library
+
+    *<Null safety>*
+
+
+## Classes
+
+##### [BoolProperty](../package-fuchsia_inspect_inspect/BoolProperty-class.md)
+
+A <code>Property</code> holding a <code>bool</code>. [...](../package-fuchsia_inspect_inspect/BoolProperty-class.md)
+
+##### [ByteDataProperty](../package-fuchsia_inspect_inspect/ByteDataProperty-class.md)
+
+A <code>Property</code> holding a <code>ByteData</code>. [...](../package-fuchsia_inspect_inspect/ByteDataProperty-class.md)
+
+##### [DoubleProperty](../package-fuchsia_inspect_inspect/DoubleProperty-class.md)
+
+A <code>Property</code> holding a <code>double</code>. [...](../package-fuchsia_inspect_inspect/DoubleProperty-class.md)
+
+##### [Inspect](../package-fuchsia_inspect_inspect/Inspect-class.md)
+
+<a href="../package-fuchsia_inspect_inspect/Inspect-class.md">Inspect</a> exposes a structured tree of internal component state. [...](../package-fuchsia_inspect_inspect/Inspect-class.md)
+
+##### [IntProperty](../package-fuchsia_inspect_inspect/IntProperty-class.md)
+
+A <code>Property</code> holding an <code>int</code>. [...](../package-fuchsia_inspect_inspect/IntProperty-class.md)
+
+##### [Node](../package-fuchsia_inspect_inspect/Node-class.md)
+
+A named node in the Inspect tree that can have <a href="../package-fuchsia_inspect_inspect/Node-class.md">Node</a>s and
+properties under it. 
+
+##### [StringProperty](../package-fuchsia_inspect_inspect/StringProperty-class.md)
+
+A <code>Property</code> holding a <code>String</code>. [...](../package-fuchsia_inspect_inspect/StringProperty-class.md)
+
+
+
+
+
+
+## Functions
+
+##### [uniqueName](../package-fuchsia_inspect_inspect/uniqueName.md)(String prefix) String
+
+Utility function to Generate unique names for nodes and properties.   
+
+
+
+
+
+## Exceptions / Errors
+
+##### [InspectStateError](../package-fuchsia_inspect_inspect/InspectStateError-class.md)
+
+Thrown when the programmer misuses Inspect. 
+
+
diff --git a/all/dart/package-fuchsia_inspect_inspect/uniqueName.md b/all/dart/package-fuchsia_inspect_inspect/uniqueName.md
new file mode 100644
index 0000000..04469f6
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_inspect/uniqueName.md
@@ -0,0 +1,21 @@
+
+# uniqueName function
+
+    *<Null safety>*
+
+
+String uniqueName
+(String prefix)
+
+<p>Utility function to Generate unique names for nodes and properties.</p>
+
+## Implementation
+
+```dart
+String uniqueName(String prefix) {
+  final suffix = _nextSuffix++;
+  return '$prefix$suffix';
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder-class.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder-class.md
new file mode 100644
index 0000000..5b1f4ac
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder-class.md
@@ -0,0 +1,113 @@
+
+# FakeVmoHolder class
+
+    *<Null safety>*
+
+<p>A VmoHolder that simply wraps some ByteData.</p>
+
+
+## Constructors
+
+[FakeVmoHolder](../package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.md) (int size)
+
+Creates a new <a href="../package-fuchsia_inspect_testing/FakeVmoHolder-class.md">FakeVmoHolder</a> of the given size.   
+ 
+
+[FakeVmoHolder.fromVmo](../package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.fromVmo.md) ([Vmo](../zircon/Vmo-class.md) vmo, {int retries: 1024})
+
+Snapshots and loads a real VMO in this holder.   
+ _factory_
+
+[FakeVmoHolder.usingData](../package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.usingData.md) (ByteData bytes)
+
+Wraps a <a href="../package-fuchsia_inspect_testing/FakeVmoHolder-class.md">FakeVmoHolder</a> around the given data.   
+ 
+
+
+## Properties
+
+##### [bytes](../package-fuchsia_inspect_testing/FakeVmoHolder/bytes.md) &#8594; ByteData
+
+The memory contents of this "VMO".   
+_final_
+
+##### [hashCode](../package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_testing/FakeVmoHolder/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+##### [size](../package-fuchsia_inspect_testing/FakeVmoHolder/size.md) &#8594; int
+
+Size of the "VMO".   
+_final_
+
+##### [vmo](../package-fuchsia_inspect_testing/FakeVmoHolder/vmo.md) &#8594; [Vmo](../zircon/Vmo-class.md)
+
+The raw VMO   
+_read-only_
+
+
+## Methods
+
+##### [beginWork](../package-fuchsia_inspect_testing/FakeVmoHolder/beginWork.md)() void
+
+Starts an update.   
+
+
+##### [commit](../package-fuchsia_inspect_testing/FakeVmoHolder/commit.md)() void
+
+/ Finishes an update   
+
+
+##### [noSuchMethod](../package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md)  
+_inherited_
+
+##### [read](../package-fuchsia_inspect_testing/FakeVmoHolder/read.md)(int offset, int size) ByteData
+
+Reads from the "VMO".   
+
+
+##### [readInt64](../package-fuchsia_inspect_testing/FakeVmoHolder/readInt64.md)(int offset) int
+
+Reads int64 from VMO.   
+
+
+##### [toString](../package-fuchsia_inspect_testing/FakeVmoHolder/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+##### [write](../package-fuchsia_inspect_testing/FakeVmoHolder/write.md)(int offset, ByteData data) void
+
+Writes to the "VMO".   
+
+
+##### [writeInt64](../package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64.md)(int offset, int value) void
+
+Writes int64 to VMO.   
+
+
+##### [writeInt64Direct](../package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64Direct.md)(int offset, int value) void
+
+Writes int64 directly to VMO for immediate visibility.   
+
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.fromVmo.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.fromVmo.md
new file mode 100644
index 0000000..fbfb1bf
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.fromVmo.md
@@ -0,0 +1,54 @@
+
+# FakeVmoHolder.fromVmo constructor
+
+    *<Null safety>*
+
+
+
+FakeVmoHolder.fromVmo([Vmo](../../zircon/Vmo-class.md) vmo, {int retries: 1024})
+
+<p>Snapshots and loads a real VMO in this holder.</p>
+
+## Implementation
+
+```dart
+factory FakeVmoHolder.fromVmo(Vmo vmo, {int retries = 1024}) {
+  while (retries > 0) {
+    retries--;
+
+    // Spin until we find an even generation count (no concurrent update).
+    var headerData = vmo.read(16);
+    if (headerData.status != 0 ||
+        headerData.bytes.getInt64(8, Endian.little) % 2 != 0) {
+      continue;
+    }
+
+    // Read the entire VMO.
+    var sizeResult = vmo.getSize();
+    if (sizeResult.status != 0) {
+      continue;
+    }
+
+    var size = sizeResult.size;
+    var fullData = vmo.read(size);
+    if (fullData.status != 0) {
+      continue;
+    }
+
+    // Read the header again, and check that the generation counts match.
+    // This means we have a consistent snapshot.
+    var headerDataAfter = vmo.read(16);
+    if (headerDataAfter.status != 0 ||
+        headerData.bytes.getInt64(8, Endian.little) !=
+            headerDataAfter.bytes.getInt64(8, Endian.little)) {
+      continue;
+    }
+
+    return FakeVmoHolder.usingData(fullData.bytes);
+  }
+
+  return null;
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.md
new file mode 100644
index 0000000..7dd6fc2
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.md
@@ -0,0 +1,18 @@
+
+# FakeVmoHolder constructor
+
+    *<Null safety>*
+
+
+
+FakeVmoHolder(int size)
+
+<p>Creates a new <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder-class.md">FakeVmoHolder</a> of the given size.</p>
+
+## Implementation
+
+```dart
+FakeVmoHolder(this.size) : bytes = Uint8List(size).buffer.asByteData();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.usingData.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.usingData.md
new file mode 100644
index 0000000..f240846
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/FakeVmoHolder.usingData.md
@@ -0,0 +1,18 @@
+
+# FakeVmoHolder.usingData constructor
+
+    *<Null safety>*
+
+
+
+FakeVmoHolder.usingData(ByteData bytes)
+
+<p>Wraps a <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder-class.md">FakeVmoHolder</a> around the given data.</p>
+
+## Implementation
+
+```dart
+FakeVmoHolder.usingData(this.bytes) : size = bytes.lengthInBytes;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/beginWork.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/beginWork.md
new file mode 100644
index 0000000..197202e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/beginWork.md
@@ -0,0 +1,21 @@
+
+# beginWork method
+
+    *<Null safety>*
+
+- @override
+
+void beginWork
+()
+
+
+<p>Starts an update.</p>
+
+## Implementation
+
+```dart
+@override
+void beginWork() {}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/bytes.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/bytes.md
new file mode 100644
index 0000000..a1c9295
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/bytes.md
@@ -0,0 +1,20 @@
+
+# bytes property
+
+    *<Null safety>*
+
+ByteData bytes
+  
+_final_
+
+<p>The memory contents of this "VMO".</p>
+
+## Implementation
+
+```dart
+final ByteData bytes
+
+
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/commit.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/commit.md
new file mode 100644
index 0000000..c7ff0f1
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/commit.md
@@ -0,0 +1,21 @@
+
+# commit method
+
+    *<Null safety>*
+
+- @override
+
+void commit
+()
+
+
+<p>/ Finishes an update</p>
+
+## Implementation
+
+```dart
+@override
+void commit() {}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md
new file mode 100644
index 0000000..a7c8122
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md
new file mode 100644
index 0000000..b244a87
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md
new file mode 100644
index 0000000..96891f0
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_testing/FakeVmoHolder/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/read.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/read.md
new file mode 100644
index 0000000..f96f8e6
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/read.md
@@ -0,0 +1,27 @@
+
+# read method
+
+    *<Null safety>*
+
+- @override
+
+ByteData read
+(int offset, int size)
+
+
+<p>Reads from the "VMO".</p>
+
+## Implementation
+
+```dart
+@override
+ByteData read(int offset, int size) {
+  var reading = ByteData(size);
+  reading.buffer
+      .asUint8List()
+      .setAll(0, bytes.buffer.asUint8List(offset, size));
+  return reading;
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/readInt64.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/readInt64.md
new file mode 100644
index 0000000..0b3e345
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/readInt64.md
@@ -0,0 +1,21 @@
+
+# readInt64 method
+
+    *<Null safety>*
+
+- @override
+
+int readInt64
+(int offset)
+
+
+<p>Reads int64 from VMO.</p>
+
+## Implementation
+
+```dart
+@override
+int readInt64(int offset) => bytes.getInt64(offset, Endian.little);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/runtimeType.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/size.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/size.md
new file mode 100644
index 0000000..6a7f870
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/size.md
@@ -0,0 +1,20 @@
+
+# size property
+
+    *<Null safety>*
+
+int size
+  
+_final_
+
+<p>Size of the "VMO".</p>
+
+## Implementation
+
+```dart
+final int size
+
+
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/toString.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/vmo.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/vmo.md
new file mode 100644
index 0000000..d0d1a18
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/vmo.md
@@ -0,0 +1,20 @@
+
+# vmo property
+
+    *<Null safety>*
+
+
+[Vmo](../../zircon/Vmo-class.md) vmo
+  
+
+
+<p>The raw VMO</p>
+
+## Implementation
+
+```dart
+@override
+Vmo get vmo => Vmo(null);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/write.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/write.md
new file mode 100644
index 0000000..135f47d
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/write.md
@@ -0,0 +1,24 @@
+
+# write method
+
+    *<Null safety>*
+
+- @override
+
+void write
+(int offset, ByteData data)
+
+
+<p>Writes to the "VMO".</p>
+
+## Implementation
+
+```dart
+@override
+void write(int offset, ByteData data) {
+  bytes.buffer.asUint8List().setAll(offset,
+      data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64.md
new file mode 100644
index 0000000..646675b
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64.md
@@ -0,0 +1,22 @@
+
+# writeInt64 method
+
+    *<Null safety>*
+
+- @override
+
+void writeInt64
+(int offset, int value)
+
+
+<p>Writes int64 to VMO.</p>
+
+## Implementation
+
+```dart
+@override
+void writeInt64(int offset, int value) =>
+    bytes.setInt64(offset, value, Endian.little);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64Direct.md b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64Direct.md
new file mode 100644
index 0000000..f3d0e73
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/FakeVmoHolder/writeInt64Direct.md
@@ -0,0 +1,21 @@
+
+# writeInt64Direct method
+
+    *<Null safety>*
+
+- @override
+
+void writeInt64Direct
+(int offset, int value)
+
+
+<p>Writes int64 directly to VMO for immediate visibility.</p>
+
+## Implementation
+
+```dart
+@override
+void writeInt64Direct(int offset, int value) => writeInt64(offset, value);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher-class.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher-class.md
new file mode 100644
index 0000000..ed8f7f8
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher-class.md
@@ -0,0 +1,86 @@
+
+# NodeMatcher class
+
+    *<Null safety>*
+
+<p>Matcher for a particular Node in the VMO.</p>
+<p>NodeMatchers may be valid or invalid. A valid NodeMatcher refers to
+an actual node stored in the VMO, while an invalid NodeMatcher represents
+a node that could not be found. The creation of an invalid NodeMatcher
+records an error in the top-level matcher, and operations on it have
+no effect.</p>
+
+
+
+## Properties
+
+##### [errors](../package-fuchsia_inspect_testing/NodeMatcher/errors.md) &#8594; List&lt;String>
+
+Gets the list of errors.   
+_read-only_
+
+##### [hashCode](../package-fuchsia_inspect_testing/NodeMatcher/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_testing/NodeMatcher/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_testing/NodeMatcher/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [at](../package-fuchsia_inspect_testing/NodeMatcher/at.md)(List&lt;String> path) [NodeMatcher](../package-fuchsia_inspect_testing/NodeMatcher-class.md)
+
+Get a NodeMatcher for the node at the given path below this one. [...](../package-fuchsia_inspect_testing/NodeMatcher/at.md)  
+
+
+##### [missingChild](../package-fuchsia_inspect_testing/NodeMatcher/missingChild.md)(String name) void
+
+Asserts that this Node does not have the named child.   
+
+
+##### [noSuchMethod](../package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md)  
+_inherited_
+
+##### [property](../package-fuchsia_inspect_testing/NodeMatcher/property.md)(String name) [PropertyMatcher](../package-fuchsia_inspect_testing/PropertyMatcher-class.md)
+
+Get a PropertyMatcher for a property on this node. [...](../package-fuchsia_inspect_testing/NodeMatcher/property.md)  
+
+
+##### [propertyEquals](../package-fuchsia_inspect_testing/NodeMatcher/propertyEquals.md)(String name, dynamic val) [PropertyMatcher](../package-fuchsia_inspect_testing/PropertyMatcher-class.md)
+
+Checks that a property of this node equals the given value.   
+
+
+##### [propertyNotEquals](../package-fuchsia_inspect_testing/NodeMatcher/propertyNotEquals.md)(String name, dynamic val) [PropertyMatcher](../package-fuchsia_inspect_testing/PropertyMatcher-class.md)
+
+Checks that a property of this node exists but does not equal the given value.   
+
+
+##### [resetErrors](../package-fuchsia_inspect_testing/NodeMatcher/resetErrors.md)() void
+
+Resets the recorded errors from the parent matcher.   
+
+
+##### [toString](../package-fuchsia_inspect_testing/NodeMatcher/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/at.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/at.md
new file mode 100644
index 0000000..6c5fc65
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/at.md
@@ -0,0 +1,42 @@
+
+# at method
+
+    *<Null safety>*
+
+
+[NodeMatcher](../../package-fuchsia_inspect_testing/NodeMatcher-class.md) at
+(List&lt;String> path)
+
+
+<p>Get a NodeMatcher for the node at the given path below this one.</p>
+<p>If any step of the path could not be found or is not a node,
+an error is recorded and an invalid NodeMatcher is returned.</p>
+
+## Implementation
+
+```dart
+NodeMatcher at(List<String> path) {
+  if (!_valid) {
+    // No error, it was already recorded by the creation of this.
+    return NodeMatcher._invalid(_parent);
+  }
+
+  int curIndex = _index;
+  for (var p in path) {
+    int next = _parent._findNamedValue(p, curIndex);
+    if (next == 0) {
+      _parent._addError('Cannot find node $p in $path');
+      return NodeMatcher._invalid(_parent);
+    } else if (Block.read(_parent._holder, next).type !=
+        BlockType.nodeValue) {
+      _parent._addError('Value $p in $path found, but it is not a node');
+      return NodeMatcher._invalid(_parent);
+    }
+
+    curIndex = next;
+  }
+  return NodeMatcher._valid(_parent, curIndex);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/errors.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/errors.md
new file mode 100644
index 0000000..cb1178c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/errors.md
@@ -0,0 +1,20 @@
+
+# errors property
+
+    *<Null safety>*
+
+
+List&lt;String> errors
+  
+
+
+<p>Gets the list of errors.</p>
+
+## Implementation
+
+```dart
+@override
+List<String> get errors => _parent._errors;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/hashCode.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/hashCode.md
new file mode 100644
index 0000000..cd2269b
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_testing/NodeMatcher/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/missingChild.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/missingChild.md
new file mode 100644
index 0000000..2e8e6f3
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/missingChild.md
@@ -0,0 +1,28 @@
+
+# missingChild method
+
+    *<Null safety>*
+
+
+void missingChild
+(String name)
+
+
+<p>Asserts that this Node does not have the named child.</p>
+
+## Implementation
+
+```dart
+void missingChild(String name) {
+  if (!_valid) {
+    return;
+  }
+
+  int next = _parent._findNamedValue(name, _index);
+  if (next != 0) {
+    _parent._addError('Found $name which was expected to be missing');
+  }
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md
new file mode 100644
index 0000000..29ff459
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_testing/NodeMatcher/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md
new file mode 100644
index 0000000..9172596
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_testing/NodeMatcher/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/property.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/property.md
new file mode 100644
index 0000000..68ad317
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/property.md
@@ -0,0 +1,42 @@
+
+# property method
+
+    *<Null safety>*
+
+
+[PropertyMatcher](../../package-fuchsia_inspect_testing/PropertyMatcher-class.md) property
+(String name)
+
+
+<p>Get a PropertyMatcher for a property on this node.</p>
+<p>If the property cannot be found or is not a value type, an invalid
+PropertyMatcher is returned.</p>
+
+## Implementation
+
+```dart
+PropertyMatcher property(String name) {
+  if (!_valid) {
+    // No error, it would have been added creating the node itself.
+    return PropertyMatcher._invalid(_parent);
+  }
+
+  int valueIndex = _parent._findNamedValue(name, _index);
+  if (valueIndex == 0) {
+    _parent._addError('Cannot find property $name');
+    return PropertyMatcher._invalid(_parent);
+  } else if ([
+    BlockType.nodeValue,
+    BlockType.tombstone,
+    BlockType.nameUtf8,
+    BlockType.extent
+  ].contains(Block.read(_parent._holder, valueIndex).type)) {
+    _parent._addError('Value $name found, but it is not a property type');
+    return PropertyMatcher._invalid(_parent);
+  }
+
+  return PropertyMatcher._valid(_parent, valueIndex);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyEquals.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyEquals.md
new file mode 100644
index 0000000..15f9c18
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyEquals.md
@@ -0,0 +1,21 @@
+
+# propertyEquals method
+
+    *<Null safety>*
+
+
+[PropertyMatcher](../../package-fuchsia_inspect_testing/PropertyMatcher-class.md) propertyEquals
+(String name, dynamic val)
+
+
+<p>Checks that a property of this node equals the given value.</p>
+
+## Implementation
+
+```dart
+PropertyMatcher propertyEquals(String name, dynamic val) {
+  return property(name)..equals(val);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyNotEquals.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyNotEquals.md
new file mode 100644
index 0000000..575752e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/propertyNotEquals.md
@@ -0,0 +1,21 @@
+
+# propertyNotEquals method
+
+    *<Null safety>*
+
+
+[PropertyMatcher](../../package-fuchsia_inspect_testing/PropertyMatcher-class.md) propertyNotEquals
+(String name, dynamic val)
+
+
+<p>Checks that a property of this node exists but does not equal the given value.</p>
+
+## Implementation
+
+```dart
+PropertyMatcher propertyNotEquals(String name, dynamic val) {
+  return property(name)..notEquals(val);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/resetErrors.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/resetErrors.md
new file mode 100644
index 0000000..7434b90
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/resetErrors.md
@@ -0,0 +1,23 @@
+
+# resetErrors method
+
+    *<Null safety>*
+
+- @override
+
+void resetErrors
+()
+
+
+<p>Resets the recorded errors from the parent matcher.</p>
+
+## Implementation
+
+```dart
+@override
+void resetErrors() {
+  _parent.resetErrors();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/runtimeType.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/NodeMatcher/toString.md b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/NodeMatcher/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher-class.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher-class.md
new file mode 100644
index 0000000..cf2ec24
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher-class.md
@@ -0,0 +1,68 @@
+
+# PropertyMatcher class
+
+    *<Null safety>*
+
+<p>Matcher for a particular Property in the VMO.</p>
+<p>PropertyMatchers may be valid or invalid, with the semantics of
+NodeMatcher.</p>
+
+
+
+## Properties
+
+##### [errors](../package-fuchsia_inspect_testing/PropertyMatcher/errors.md) &#8594; List&lt;String>
+
+Gets the list of errors.   
+_read-only_
+
+##### [hashCode](../package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_testing/PropertyMatcher/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [equals](../package-fuchsia_inspect_testing/PropertyMatcher/equals.md)(dynamic val) void
+
+Match that this property equals a value.   
+
+
+##### [noSuchMethod](../package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md)  
+_inherited_
+
+##### [notEquals](../package-fuchsia_inspect_testing/PropertyMatcher/notEquals.md)(dynamic val) void
+
+Matches that this property exists but does not equal a value.   
+
+
+##### [resetErrors](../package-fuchsia_inspect_testing/PropertyMatcher/resetErrors.md)() void
+
+Resets the recorded errors from the parent matcher.   
+
+
+##### [toString](../package-fuchsia_inspect_testing/PropertyMatcher/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/equals.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/equals.md
new file mode 100644
index 0000000..215318c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/equals.md
@@ -0,0 +1,19 @@
+
+# equals method
+
+    *<Null safety>*
+
+
+void equals
+(dynamic val)
+
+
+<p>Match that this property equals a value.</p>
+
+## Implementation
+
+```dart
+void equals(dynamic val) => _internalEquals(val, false);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/errors.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/errors.md
new file mode 100644
index 0000000..cb1178c
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/errors.md
@@ -0,0 +1,20 @@
+
+# errors property
+
+    *<Null safety>*
+
+
+List&lt;String> errors
+  
+
+
+<p>Gets the list of errors.</p>
+
+## Implementation
+
+```dart
+@override
+List<String> get errors => _parent._errors;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md
new file mode 100644
index 0000000..0d940fe
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md
new file mode 100644
index 0000000..75f5cde
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/notEquals.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/notEquals.md
new file mode 100644
index 0000000..1d09274
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/notEquals.md
@@ -0,0 +1,19 @@
+
+# notEquals method
+
+    *<Null safety>*
+
+
+void notEquals
+(dynamic val)
+
+
+<p>Matches that this property exists but does not equal a value.</p>
+
+## Implementation
+
+```dart
+void notEquals(dynamic val) => _internalEquals(val, true);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md
new file mode 100644
index 0000000..bb3b3d4
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_testing/PropertyMatcher/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/resetErrors.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/resetErrors.md
new file mode 100644
index 0000000..7434b90
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/resetErrors.md
@@ -0,0 +1,23 @@
+
+# resetErrors method
+
+    *<Null safety>*
+
+- @override
+
+void resetErrors
+()
+
+
+<p>Resets the recorded errors from the parent matcher.</p>
+
+## Implementation
+
+```dart
+@override
+void resetErrors() {
+  _parent.resetErrors();
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/runtimeType.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/toString.md b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/PropertyMatcher/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher-class.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher-class.md
new file mode 100644
index 0000000..b8be593
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher-class.md
@@ -0,0 +1,75 @@
+
+# VmoMatcher class
+
+    *<Null safety>*
+
+<p>A matcher for testing the structure of Inspect data written to a VMO.</p>
+<p>This matcher aggregates errors from attempting to access or match
+values stored in the VMO. The set of aggregated errors may be taken
+and reset using the |errors| getter for the purposes of unit testing an
+Inspect hierarchy.</p>
+<p>Note that this class is not optimized for efficiency, and should only
+be used in tests.</p>
+
+
+## Constructors
+
+[VmoMatcher](../package-fuchsia_inspect_testing/VmoMatcher/VmoMatcher.md) (VmoHolder _holder)
+
+Create a new matcher that matches against the given VmoHolder.   
+ 
+
+
+## Properties
+
+##### [errors](../package-fuchsia_inspect_testing/VmoMatcher/errors.md) &#8594; List&lt;String>
+
+Gets the list of errors.   
+_read-only_
+
+##### [hashCode](../package-fuchsia_inspect_testing/VmoMatcher/hashCode.md) &#8594; int
+
+The hash code for this object. [...](../package-fuchsia_inspect_testing/VmoMatcher/hashCode.md)  
+_read-only, inherited_
+
+##### [runtimeType](../package-fuchsia_inspect_testing/VmoMatcher/runtimeType.md) &#8594; Type
+
+A representation of the runtime type of the object.   
+_read-only, inherited_
+
+
+## Methods
+
+##### [node](../package-fuchsia_inspect_testing/VmoMatcher/node.md)() [NodeMatcher](../package-fuchsia_inspect_testing/NodeMatcher-class.md)
+
+Retrieve the root node matcher, which can be used to match against
+nested properties and children.   
+
+
+##### [noSuchMethod](../package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md)(Invocation invocation) dynamic
+
+Invoked when a non-existent method or property is accessed. [...](../package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md)  
+_inherited_
+
+##### [resetErrors](../package-fuchsia_inspect_testing/VmoMatcher/resetErrors.md)() void
+
+Resets the recorded errors from this VmoMatcher.   
+
+
+##### [toString](../package-fuchsia_inspect_testing/VmoMatcher/toString.md)() String
+
+Returns a string representation of this object.   
+_inherited_
+
+
+## Operators
+
+##### [operator ==](../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md)(Object other) bool
+
+The equality operator. [...](../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md)  
+_inherited_
+
+
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/VmoMatcher.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/VmoMatcher.md
new file mode 100644
index 0000000..9621a70
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/VmoMatcher.md
@@ -0,0 +1,18 @@
+
+# VmoMatcher constructor
+
+    *<Null safety>*
+
+
+
+VmoMatcher(VmoHolder _holder)
+
+<p>Create a new matcher that matches against the given VmoHolder.</p>
+
+## Implementation
+
+```dart
+VmoMatcher(this._holder);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/errors.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/errors.md
new file mode 100644
index 0000000..31717b7
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/errors.md
@@ -0,0 +1,20 @@
+
+# errors property
+
+    *<Null safety>*
+
+
+List&lt;String> errors
+  
+
+
+<p>Gets the list of errors.</p>
+
+## Implementation
+
+```dart
+@override
+List<String> get errors => _errors;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/hashCode.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/hashCode.md
new file mode 100644
index 0000000..47c9a77
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/hashCode.md
@@ -0,0 +1,41 @@
+
+# hashCode property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L92)
+    *<Null safety>*
+
+
+int hashCode
+  
+_inherited_
+
+<p>The hash code for this object.</p>
+<p>A hash code is a single integer which represents the state of the object
+that affects <a href="../../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md">operator ==</a> comparisons.</p>
+<p>All objects have hash codes.
+The default hash code represents only the identity of the object,
+the same way as the default <a href="../../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md">operator ==</a> implementation only considers objects
+equal if they are identical (see <code>identityHashCode</code>).</p>
+<p>If <a href="../../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md">operator ==</a> is overridden to use the object state instead,
+the hash code must also be changed to represent that state.</p>
+<p>Hash codes must be the same for objects that are equal to each other
+according to <a href="../../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md">operator ==</a>.
+The hash code of an object should only change if the object changes
+in a way that affects equality.
+There are no further requirements for the hash codes.
+They need not be consistent between executions of the same program
+and there are no distribution guarantees.</p>
+<p>Objects that are not equal are allowed to have the same hash code,
+it is even technically allowed that all instances have the same hash code,
+but if clashes happen too often, it may reduce the efficiency of hash-based
+data structures like <code>HashSet</code> or <code>HashMap</code>.</p>
+<p>If a subclass overrides <a href="../../package-fuchsia_inspect_testing/VmoMatcher/hashCode.md">hashCode</a>, it should override the
+<a href="../../package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md">operator ==</a> operator as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external int get hashCode;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md
new file mode 100644
index 0000000..5f2e38e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md
@@ -0,0 +1,24 @@
+
+# noSuchMethod method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L109)
+    *<Null safety>*
+
+
+dynamic noSuchMethod
+(Invocation invocation)
+_inherited_
+
+<p>Invoked when a non-existent method or property is accessed.</p>
+<p>Classes can override <a href="../../package-fuchsia_inspect_testing/VmoMatcher/noSuchMethod.md">noSuchMethod</a> to provide custom behavior.</p>
+<p>If a value is returned, it becomes the result of the original invocation.</p>
+<p>The default behavior is to throw a <code>NoSuchMethodError</code>.</p>
+
+## Implementation
+
+```dart
+@pragma("vm:entry-point")
+external dynamic noSuchMethod(Invocation invocation);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/node.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/node.md
new file mode 100644
index 0000000..6f609a8
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/node.md
@@ -0,0 +1,22 @@
+
+# node method
+
+    *<Null safety>*
+
+
+[NodeMatcher](../../package-fuchsia_inspect_testing/NodeMatcher-class.md) node
+()
+
+
+<p>Retrieve the root node matcher, which can be used to match against
+nested properties and children.</p>
+
+## Implementation
+
+```dart
+NodeMatcher node() {
+  return NodeMatcher._valid(this, 0);
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md
new file mode 100644
index 0000000..f9c1ce7
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/operator_equals.md
@@ -0,0 +1,47 @@
+
+# operator == method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L60)
+    *<Null safety>*
+
+
+bool operator ==
+(Object other)
+_inherited_
+
+<p>The equality operator.</p>
+<p>The default behavior for all <code>Object</code>s is to return true if and
+only if <code>this</code> and <code>other</code> are the same object.</p>
+<p>Override this method to specify a different equality relation on
+a class. The overriding method must still be an equivalence relation.
+That is, it must be:</p>
+<ul>
+<li>
+<p>Total: It must return a boolean for all arguments. It should never throw
+or return <code>null</code>.</p>
+</li>
+<li>
+<p>Reflexive: For all objects <code>o</code>, <code>o == o</code> must be true.</p>
+</li>
+<li>
+<p>Symmetric: For all objects <code>o1</code> and <code>o2</code>, <code>o1 == o2</code> and <code>o2 == o1</code> must
+either both be true, or both be false.</p>
+</li>
+<li>
+<p>Transitive: For all objects <code>o1</code>, <code>o2</code>, and <code>o3</code>, if <code>o1 == o2</code> and
+<code>o2 == o3</code> are true, then <code>o1 == o3</code> must be true.</p>
+</li>
+</ul>
+<p>The method should also be consistent over time,
+so whether two objects are equal should only change
+if at least one of the objects was modified.</p>
+<p>If a subclass overrides the equality operator it should override
+the <a href="../../package-fuchsia_inspect_testing/VmoMatcher/hashCode.md">hashCode</a> method as well to maintain consistency.</p>
+
+## Implementation
+
+```dart
+external bool operator ==(Object other);
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/resetErrors.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/resetErrors.md
new file mode 100644
index 0000000..69b973f
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/resetErrors.md
@@ -0,0 +1,23 @@
+
+# resetErrors method
+
+    *<Null safety>*
+
+- @override
+
+void resetErrors
+()
+
+
+<p>Resets the recorded errors from this VmoMatcher.</p>
+
+## Implementation
+
+```dart
+@override
+void resetErrors() {
+  _errors = [];
+}
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/runtimeType.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/runtimeType.md
new file mode 100644
index 0000000..dcc00a5
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/runtimeType.md
@@ -0,0 +1,20 @@
+
+# runtimeType property
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L114)
+    *<Null safety>*
+
+
+Type runtimeType
+  
+_inherited_
+
+<p>A representation of the runtime type of the object.</p>
+
+## Implementation
+
+```dart
+external Type get runtimeType;
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/VmoMatcher/toString.md b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/toString.md
new file mode 100644
index 0000000..07e6f86
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/VmoMatcher/toString.md
@@ -0,0 +1,20 @@
+
+# toString method
+
+[view source](https://github.com/dart-lang/sdk/blob/1a18fff9ad2ee79095f8b92d76f714cb666a3384/sdk/lib/core/object.dart#L97)
+    *<Null safety>*
+
+
+String toString
+()
+_inherited_
+
+<p>Returns a string representation of this object.</p>
+
+## Implementation
+
+```dart
+external String toString();
+```
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/hasNoErrors-constant.md b/all/dart/package-fuchsia_inspect_testing/hasNoErrors-constant.md
new file mode 100644
index 0000000..f13dd7e
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/hasNoErrors-constant.md
@@ -0,0 +1,20 @@
+
+# hasNoErrors top-level constant
+
+    *<Null safety>*
+
+dynamic const hasNoErrors
+  
+
+
+<p>Matcher that asserts a VmoMatcher, NodeMatcher, or PropertyMatcher
+has no recorded errors.</p>
+
+## Implementation
+
+```dart
+const Matcher hasNoErrors = _HasNoErrorsMatcher()
+```
+
+
+
diff --git a/all/dart/package-fuchsia_inspect_testing/package-fuchsia_inspect_testing-library.md b/all/dart/package-fuchsia_inspect_testing/package-fuchsia_inspect_testing-library.md
new file mode 100644
index 0000000..1fdeea7
--- /dev/null
+++ b/all/dart/package-fuchsia_inspect_testing/package-fuchsia_inspect_testing-library.md
@@ -0,0 +1,41 @@
+
+# testing library
+
+    *<Null safety>*
+
+
+## Classes
+
+##### [FakeVmoHolder](../package-fuchsia_inspect_testing/FakeVmoHolder-class.md)
+
+A VmoHolder that simply wraps some ByteData. 
+
+##### [NodeMatcher](../package-fuchsia_inspect_testing/NodeMatcher-class.md)
+
+Matcher for a particular Node in the VMO. [...](../package-fuchsia_inspect_testing/NodeMatcher-class.md)
+
+##### [PropertyMatcher](../package-fuchsia_inspect_testing/PropertyMatcher-class.md)
+
+Matcher for a particular Property in the VMO. [...](../package-fuchsia_inspect_testing/PropertyMatcher-class.md)
+
+##### [VmoMatcher](../package-fuchsia_inspect_testing/VmoMatcher-class.md)
+
+A matcher for testing the structure of Inspect data written to a VMO. [...](../package-fuchsia_inspect_testing/VmoMatcher-class.md)
+
+
+
+
+## Constants
+
+##### [hasNoErrors](../package-fuchsia_inspect_testing/hasNoErrors-constant.md) const dynamic
+
+Matcher that asserts a VmoMatcher, NodeMatcher, or PropertyMatcher
+has no recorded errors.   
+
+
+
+
+
+
+
+
