[dartdoc] Updating dart reference docs
diff --git a/all/dart/_toc.yaml b/all/dart/_toc.yaml
index e174815..137ce6d 100644
--- a/all/dart/_toc.yaml
+++ b/all/dart/_toc.yaml
@@ -274,6 +274,8 @@
       path: /reference/dart/package-fidl_fidl/Decoder/claimHandle.md
     - title: claimMemory
       path: /reference/dart/package-fidl_fidl/Decoder/claimMemory.md
+    - title: claimMemoryComplete
+      path: /reference/dart/package-fidl_fidl/Decoder/claimMemoryComplete.md
     - title: countClaimedHandles
       path: /reference/dart/package-fidl_fidl/Decoder/countClaimedHandles.md
     - title: countUnclaimedHandles
@@ -315,6 +317,8 @@
       path: /reference/dart/package-fidl_fidl/Decoder/handles.md
     - title: hashCode
       path: /reference/dart/package-fidl_fidl/Decoder/hashCode.md
+    - title: nextOutOfLineDepth
+      path: /reference/dart/package-fidl_fidl/Decoder/nextOutOfLineDepth.md
     - title: runtimeType
       path: /reference/dart/package-fidl_fidl/Decoder/runtimeType.md
   - title: Encoder
@@ -328,6 +332,8 @@
       path: /reference/dart/package-fidl_fidl/Encoder/addHandle.md
     - title: alloc
       path: /reference/dart/package-fidl_fidl/Encoder/alloc.md
+    - title: allocComplete
+      path: /reference/dart/package-fidl_fidl/Encoder/allocComplete.md
     - title: countHandles
       path: /reference/dart/package-fidl_fidl/Encoder/countHandles.md
     - title: encodeBool
@@ -369,6 +375,8 @@
       path: /reference/dart/package-fidl_fidl/Encoder/hashCode.md
     - title: message
       path: /reference/dart/package-fidl_fidl/Encoder/message.md
+    - title: nextOutOfLineDepth
+      path: /reference/dart/package-fidl_fidl/Encoder/nextOutOfLineDepth.md
     - title: runtimeType
       path: /reference/dart/package-fidl_fidl/Encoder/runtimeType.md
   - title: Enum
@@ -1461,6 +1469,10 @@
     path: /reference/dart/package-fidl_fidl/decodeMessage.md
   - title: decodeMessageWithCallback
     path: /reference/dart/package-fidl_fidl/decodeMessageWithCallback.md
+  - title: encodeMessage
+    path: /reference/dart/package-fidl_fidl/encodeMessage.md
+  - title: encodeMessageWithCallback
+    path: /reference/dart/package-fidl_fidl/encodeMessageWithCallback.md
   - heading: Top-level Constants
   - title: epitaphOrdinal
     path: /reference/dart/package-fidl_fidl/epitaphOrdinal-constant.md
diff --git a/all/dart/package-fidl_fidl/Decoder-class.md b/all/dart/package-fidl_fidl/Decoder-class.md
index 5207568..d8fd1d3 100644
--- a/all/dart/package-fidl_fidl/Decoder-class.md
+++ b/all/dart/package-fidl_fidl/Decoder-class.md
@@ -35,6 +35,11 @@
 The hash code for this object. [...](../package-fidl_fidl/Decoder/hashCode.md)  
 _read-only, inherited_
 
+##### [nextOutOfLineDepth](../package-fidl_fidl/Decoder/nextOutOfLineDepth.md) → int
+
+   
+_read-only_
+
 ##### [runtimeType](../package-fidl_fidl/Decoder/runtimeType.md) → Type
 
 A representation of the runtime type of the object.   
@@ -53,6 +58,12 @@
    
 
 
+##### [claimMemoryComplete](../package-fidl_fidl/Decoder/claimMemoryComplete.md)() void
+
+This method should be invoked as soon as the out-of-line object defined by
+a call to the claimMemory() method has been fully read.   
+
+
 ##### [countClaimedHandles](../package-fidl_fidl/Decoder/countClaimedHandles.md)() int
 
    
diff --git a/all/dart/package-fidl_fidl/Decoder/claimMemory.md b/all/dart/package-fidl_fidl/Decoder/claimMemory.md
index 8778a51..3c7091c 100644
--- a/all/dart/package-fidl_fidl/Decoder/claimMemory.md
+++ b/all/dart/package-fidl_fidl/Decoder/claimMemory.md
@@ -13,6 +13,11 @@
 
 ```dart
 int claimMemory(int size) {
+  if (_nextOutOfLineDepth > _maxOutOfLineDepth) {
+    throw FidlError('Exceeded maxOutOfLineDepth',
+        FidlErrorCode.fidlExceededMaxOutOfLineDepth);
+  }
+  _nextOutOfLineDepth++;
   final int result = _nextOffset;
   _nextOffset += _align(size);
   if (_nextOffset > data.lengthInBytes) {
diff --git a/all/dart/package-fidl_fidl/Decoder/claimMemoryComplete.md b/all/dart/package-fidl_fidl/Decoder/claimMemoryComplete.md
new file mode 100644
index 0000000..a95a202
--- /dev/null
+++ b/all/dart/package-fidl_fidl/Decoder/claimMemoryComplete.md
@@ -0,0 +1,22 @@
+
+# claimMemoryComplete method
+
+    *<Null safety>*
+
+
+void claimMemoryComplete
+()
+
+
+<p>This method should be invoked as soon as the out-of-line object defined by
+a call to the claimMemory() method has been fully read.</p>
+
+## Implementation
+
+```dart
+void claimMemoryComplete() {
+  _nextOutOfLineDepth--;
+}
+```
+
+
diff --git a/all/dart/package-fidl_fidl/Decoder/nextOutOfLineDepth.md b/all/dart/package-fidl_fidl/Decoder/nextOutOfLineDepth.md
new file mode 100644
index 0000000..c39d4cb
--- /dev/null
+++ b/all/dart/package-fidl_fidl/Decoder/nextOutOfLineDepth.md
@@ -0,0 +1,18 @@
+
+# nextOutOfLineDepth property
+
+    *<Null safety>*
+
+
+int nextOutOfLineDepth
+  
+
+
+
+## Implementation
+
+```dart
+int get nextOutOfLineDepth => _nextOutOfLineDepth;
+```
+
+
diff --git a/all/dart/package-fidl_fidl/Encoder-class.md b/all/dart/package-fidl_fidl/Encoder-class.md
index 04c73c3..45106cf 100644
--- a/all/dart/package-fidl_fidl/Encoder-class.md
+++ b/all/dart/package-fidl_fidl/Encoder-class.md
@@ -30,6 +30,11 @@
    
 _read-only_
 
+##### [nextOutOfLineDepth](../package-fidl_fidl/Encoder/nextOutOfLineDepth.md) &#8594; int
+
+   
+_read-only_
+
 ##### [runtimeType](../package-fidl_fidl/Encoder/runtimeType.md) &#8594; Type
 
 A representation of the runtime type of the object.   
@@ -48,6 +53,12 @@
    
 
 
+##### [allocComplete](../package-fidl_fidl/Encoder/allocComplete.md)() void
+
+This method should be invoked as soon as the out-of-line object created by
+a call to the alloc() method has been fully written.   
+
+
 ##### [countHandles](../package-fidl_fidl/Encoder/countHandles.md)() int
 
    
diff --git a/all/dart/package-fidl_fidl/Encoder/alloc.md b/all/dart/package-fidl_fidl/Encoder/alloc.md
index fb6b0c7..2ef7d9e 100644
--- a/all/dart/package-fidl_fidl/Encoder/alloc.md
+++ b/all/dart/package-fidl_fidl/Encoder/alloc.md
@@ -13,6 +13,11 @@
 
 ```dart
 int alloc(int size) {
+  if (_nextOutOfLineDepth > _maxOutOfLineDepth) {
+    throw FidlError('Exceeded maxOutOfLineDepth',
+        FidlErrorCode.fidlExceededMaxOutOfLineDepth);
+  }
+  _nextOutOfLineDepth++;
   int offset = _extent;
   _claimMemory(_align(size));
   return offset;
diff --git a/all/dart/package-fidl_fidl/Encoder/allocComplete.md b/all/dart/package-fidl_fidl/Encoder/allocComplete.md
new file mode 100644
index 0000000..5239ef6
--- /dev/null
+++ b/all/dart/package-fidl_fidl/Encoder/allocComplete.md
@@ -0,0 +1,22 @@
+
+# allocComplete method
+
+    *<Null safety>*
+
+
+void allocComplete
+()
+
+
+<p>This method should be invoked as soon as the out-of-line object created by
+a call to the alloc() method has been fully written.</p>
+
+## Implementation
+
+```dart
+void allocComplete() {
+  _nextOutOfLineDepth--;
+}
+```
+
+
diff --git a/all/dart/package-fidl_fidl/Encoder/encodeMessageHeader.md b/all/dart/package-fidl_fidl/Encoder/encodeMessageHeader.md
index 286feb0..4d8d28d 100644
--- a/all/dart/package-fidl_fidl/Encoder/encodeMessageHeader.md
+++ b/all/dart/package-fidl_fidl/Encoder/encodeMessageHeader.md
@@ -20,6 +20,7 @@
   encodeUint8(0, kMessageFlagOffset + 2);
   encodeUint8(kMagicNumberInitial, kMessageMagicOffset);
   encodeUint64(ordinal, kMessageOrdinalOffset);
+  allocComplete();
 }
 ```
 
diff --git a/all/dart/package-fidl_fidl/Encoder/nextOutOfLineDepth.md b/all/dart/package-fidl_fidl/Encoder/nextOutOfLineDepth.md
new file mode 100644
index 0000000..c39d4cb
--- /dev/null
+++ b/all/dart/package-fidl_fidl/Encoder/nextOutOfLineDepth.md
@@ -0,0 +1,18 @@
+
+# nextOutOfLineDepth property
+
+    *<Null safety>*
+
+
+int nextOutOfLineDepth
+  
+
+
+
+## Implementation
+
+```dart
+int get nextOutOfLineDepth => _nextOutOfLineDepth;
+```
+
+
diff --git a/all/dart/package-fidl_fidl/FidlErrorCode-class.md b/all/dart/package-fidl_fidl/FidlErrorCode-class.md
index f99bb3d..ffa18ed 100644
--- a/all/dart/package-fidl_fidl/FidlErrorCode-class.md
+++ b/all/dart/package-fidl_fidl/FidlErrorCode-class.md
@@ -7,6 +7,11 @@
 
 ## Constants
 
+##### fidlExceededMaxOutOfLineDepth const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode-class.md)
+
+   
+
+
 ##### fidlIntOutOfRange const [FidlErrorCode](../package-fidl_fidl/FidlErrorCode-class.md)
 
    
diff --git a/all/dart/package-fidl_fidl/PointerType/decode.md b/all/dart/package-fidl_fidl/PointerType/decode.md
index 2731755..46dd064 100644
--- a/all/dart/package-fidl_fidl/PointerType/decode.md
+++ b/all/dart/package-fidl_fidl/PointerType/decode.md
@@ -20,8 +20,10 @@
   if (data == kAllocAbsent) {
     return null;
   }
-  return element.decode(
+  T? decoded = element.decode(
       decoder, decoder.claimMemory(element.decodingInlineSize()));
+  decoder.claimMemoryComplete();
+  return decoded;
 }
 ```
 
diff --git a/all/dart/package-fidl_fidl/PointerType/encode.md b/all/dart/package-fidl_fidl/PointerType/encode.md
index a4410cf..ffcfbac 100644
--- a/all/dart/package-fidl_fidl/PointerType/encode.md
+++ b/all/dart/package-fidl_fidl/PointerType/encode.md
@@ -21,6 +21,7 @@
     encoder.encodeUint64(kAllocPresent, offset);
     int childOffset = encoder.alloc(element.encodingInlineSize());
     element.encode(encoder, value, childOffset);
+    encoder.allocComplete();
   }
 }
 ```
diff --git a/all/dart/package-fidl_fidl/TableType/decode.md b/all/dart/package-fidl_fidl/TableType/decode.md
index 76cad0e..6c29ef6 100644
--- a/all/dart/package-fidl_fidl/TableType/decode.md
+++ b/all/dart/package-fidl_fidl/TableType/decode.md
@@ -64,6 +64,7 @@
     }
     envelopeOffset += _kEnvelopeSize;
   }
+  decoder.claimMemoryComplete();
 
   return ctor(argv, unknownData);
 }
diff --git a/all/dart/package-fidl_fidl/TableType/encode.md b/all/dart/package-fidl_fidl/TableType/encode.md
index cd9645c..c598445 100644
--- a/all/dart/package-fidl_fidl/TableType/encode.md
+++ b/all/dart/package-fidl_fidl/TableType/encode.md
@@ -67,6 +67,7 @@
     }
     envelopeOffset += _kEnvelopeSize;
   }
+  encoder.allocComplete();
 }
 ```
 
diff --git a/all/dart/package-fidl_fidl/decodeMessage.md b/all/dart/package-fidl_fidl/decodeMessage.md
index 7cab3d8..3c492f0 100644
--- a/all/dart/package-fidl_fidl/decodeMessage.md
+++ b/all/dart/package-fidl_fidl/decodeMessage.md
@@ -18,6 +18,7 @@
   final Decoder decoder = Decoder(message)
     ..claimMemory(kMessageHeaderSize + inlineSize);
   T decoded = typ.decode(decoder, kMessageHeaderSize);
+  decoder.claimMemoryComplete();
   _validateDecoding(decoder);
   return decoded;
 }
diff --git a/all/dart/package-fidl_fidl/decodeMessageWithCallback.md b/all/dart/package-fidl_fidl/decodeMessageWithCallback.md
index 6da6110..5971867 100644
--- a/all/dart/package-fidl_fidl/decodeMessageWithCallback.md
+++ b/all/dart/package-fidl_fidl/decodeMessageWithCallback.md
@@ -20,6 +20,7 @@
   final Decoder decoder = Decoder(message)
     ..claimMemory(kMessageHeaderSize + inlineSize);
   A out = f(decoder);
+  decoder.claimMemoryComplete();
   _validateDecoding(decoder);
   return out;
 }
diff --git a/all/dart/package-fidl_fidl/encodeMessage.md b/all/dart/package-fidl_fidl/encodeMessage.md
new file mode 100644
index 0000000..afc2f9a
--- /dev/null
+++ b/all/dart/package-fidl_fidl/encodeMessage.md
@@ -0,0 +1,23 @@
+
+# encodeMessage&lt;T> function
+
+    *<Null safety>*
+
+
+void encodeMessage
+&lt;T>([Encoder](../package-fidl_fidl/Encoder-class.md) encoder, int inlineSize, [MemberType](../package-fidl_fidl/MemberType-class.md) typ, T value)
+
+
+## Implementation
+
+```dart
+void encodeMessage<T>(
+    Encoder encoder, int inlineSize, MemberType typ, T value) {
+  encoder.alloc(inlineSize);
+  typ.encode(encoder, value, kMessageHeaderSize);
+  encoder.allocComplete();
+  _validateEncoding(encoder);
+}
+```
+
+
diff --git a/all/dart/package-fidl_fidl/encodeMessageWithCallback.md b/all/dart/package-fidl_fidl/encodeMessageWithCallback.md
new file mode 100644
index 0000000..40a7f58
--- /dev/null
+++ b/all/dart/package-fidl_fidl/encodeMessageWithCallback.md
@@ -0,0 +1,22 @@
+
+# encodeMessageWithCallback function
+
+    *<Null safety>*
+
+
+void encodeMessageWithCallback
+([Encoder](../package-fidl_fidl/Encoder-class.md) encoder, int inlineSize, dynamic f())
+
+
+## Implementation
+
+```dart
+void encodeMessageWithCallback(Encoder encoder, int inlineSize, Function() f) {
+  encoder.alloc(inlineSize);
+  f();
+  encoder.allocComplete();
+  _validateEncoding(encoder);
+}
+```
+
+
diff --git a/all/dart/package-fidl_fidl/package-fidl_fidl-library.md b/all/dart/package-fidl_fidl/package-fidl_fidl-library.md
index 421300f..2cb9784 100644
--- a/all/dart/package-fidl_fidl/package-fidl_fidl-library.md
+++ b/all/dart/package-fidl_fidl/package-fidl_fidl-library.md
@@ -349,6 +349,16 @@
 parameter types into a single "Async___Class" inside the callback function.   
 
 
+##### [encodeMessage](../package-fidl_fidl/encodeMessage.md)&lt;T>([Encoder](../package-fidl_fidl/Encoder-class.md) encoder, int inlineSize, [MemberType](../package-fidl_fidl/MemberType-class.md) typ, T value) void
+
+   
+
+
+##### [encodeMessageWithCallback](../package-fidl_fidl/encodeMessageWithCallback.md)([Encoder](../package-fidl_fidl/Encoder-class.md) encoder, int inlineSize, dynamic f()) void
+
+   
+
+
 
 ## Enums