Convert idl.dart to triple-slash comment style.

Change-Id: If16a8ea5da0f2cd805d3360e1d70cd19be8066a8
Reviewed-on: https://dart-review.googlesource.com/c/78621
Commit-Queue: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index cda912f..476923c 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -211,9 +211,7 @@
   @override
   String get exception => _exception ??= '';
 
-  /**
-   * The exception string.
-   */
+  /// The exception string.
   void set exception(String value) {
     this._exception = value;
   }
@@ -222,9 +220,7 @@
   List<AnalysisDriverExceptionFileBuilder> get files =>
       _files ??= <AnalysisDriverExceptionFileBuilder>[];
 
-  /**
-   * The state of files when the exception happened.
-   */
+  /// The state of files when the exception happened.
   void set files(List<AnalysisDriverExceptionFileBuilder> value) {
     this._files = value;
   }
@@ -232,9 +228,7 @@
   @override
   String get path => _path ??= '';
 
-  /**
-   * The path of the file being analyzed when the exception happened.
-   */
+  /// The path of the file being analyzed when the exception happened.
   void set path(String value) {
     this._path = value;
   }
@@ -242,9 +236,7 @@
   @override
   String get stackTrace => _stackTrace ??= '';
 
-  /**
-   * The exception stack trace string.
-   */
+  /// The exception stack trace string.
   void set stackTrace(String value) {
     this._stackTrace = value;
   }
@@ -414,9 +406,7 @@
   @override
   String get content => _content ??= '';
 
-  /**
-   * The content of the file.
-   */
+  /// The content of the file.
   void set content(String value) {
     this._content = value;
   }
@@ -424,9 +414,7 @@
   @override
   String get path => _path ??= '';
 
-  /**
-   * The path of the file.
-   */
+  /// The path of the file.
   void set path(String value) {
     this._path = value;
   }
@@ -532,9 +520,7 @@
   List<AnalysisDriverUnitErrorBuilder> get errors =>
       _errors ??= <AnalysisDriverUnitErrorBuilder>[];
 
-  /**
-   * The full list of analysis errors, both syntactic and semantic.
-   */
+  /// The full list of analysis errors, both syntactic and semantic.
   void set errors(List<AnalysisDriverUnitErrorBuilder> value) {
     this._errors = value;
   }
@@ -542,9 +528,7 @@
   @override
   AnalysisDriverUnitIndexBuilder get index => _index;
 
-  /**
-   * The index of the unit.
-   */
+  /// The index of the unit.
   void set index(AnalysisDriverUnitIndexBuilder value) {
     this._index = value;
   }
@@ -678,11 +662,9 @@
   @override
   List<int> get members => _members ??= <int>[];
 
-  /**
-   * The names of defined instance members.
-   * They are indexes into [AnalysisDriverUnitError.strings] list.
-   * The list is sorted in ascending order.
-   */
+  /// The names of defined instance members.
+  /// They are indexes into [AnalysisDriverUnitError.strings] list.
+  /// The list is sorted in ascending order.
   void set members(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._members = value;
@@ -691,10 +673,8 @@
   @override
   int get name => _name ??= 0;
 
-  /**
-   * The name of the class.
-   * It is an index into [AnalysisDriverUnitError.strings] list.
-   */
+  /// The name of the class.
+  /// It is an index into [AnalysisDriverUnitError.strings] list.
   void set name(int value) {
     assert(value == null || value >= 0);
     this._name = value;
@@ -806,9 +786,7 @@
   @override
   String get correction => _correction ??= '';
 
-  /**
-   * The optional correction hint for the error.
-   */
+  /// The optional correction hint for the error.
   void set correction(String value) {
     this._correction = value;
   }
@@ -816,9 +794,7 @@
   @override
   int get length => _length ??= 0;
 
-  /**
-   * The length of the error in the file.
-   */
+  /// The length of the error in the file.
   void set length(int value) {
     assert(value == null || value >= 0);
     this._length = value;
@@ -827,9 +803,7 @@
   @override
   String get message => _message ??= '';
 
-  /**
-   * The message of the error.
-   */
+  /// The message of the error.
   void set message(String value) {
     this._message = value;
   }
@@ -837,9 +811,7 @@
   @override
   int get offset => _offset ??= 0;
 
-  /**
-   * The offset from the beginning of the file.
-   */
+  /// The offset from the beginning of the file.
   void set offset(int value) {
     assert(value == null || value >= 0);
     this._offset = value;
@@ -848,9 +820,7 @@
   @override
   String get uniqueName => _uniqueName ??= '';
 
-  /**
-   * The unique name of the error code.
-   */
+  /// The unique name of the error code.
   void set uniqueName(String value) {
     this._uniqueName = value;
   }
@@ -1024,10 +994,8 @@
   List<idl.IndexSyntheticElementKind> get elementKinds =>
       _elementKinds ??= <idl.IndexSyntheticElementKind>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   void set elementKinds(List<idl.IndexSyntheticElementKind> value) {
     this._elementKinds = value;
   }
@@ -1036,12 +1004,11 @@
   List<int> get elementNameClassMemberIds =>
       _elementNameClassMemberIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// index.
   void set elementNameClassMemberIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameClassMemberIds = value;
@@ -1050,12 +1017,10 @@
   @override
   List<int> get elementNameParameterIds => _elementNameParameterIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this index.
   void set elementNameParameterIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameParameterIds = value;
@@ -1065,12 +1030,10 @@
   List<int> get elementNameUnitMemberIds =>
       _elementNameUnitMemberIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this index.
   void set elementNameUnitMemberIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameUnitMemberIds = value;
@@ -1079,11 +1042,9 @@
   @override
   List<int> get elementUnits => _elementUnits ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   void set elementUnits(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementUnits = value;
@@ -1092,9 +1053,7 @@
   @override
   int get nullStringId => _nullStringId ??= 0;
 
-  /**
-   * Identifier of the null string in [strings].
-   */
+  /// Identifier of the null string in [strings].
   void set nullStringId(int value) {
     assert(value == null || value >= 0);
     this._nullStringId = value;
@@ -1103,11 +1062,9 @@
   @override
   List<String> get strings => _strings ??= <String>[];
 
-  /**
-   * List of unique element strings used in this index.  The list is sorted in
-   * ascending order, so that the client can quickly check the presence of a
-   * string in this index.
-   */
+  /// List of unique element strings used in this index.  The list is sorted in
+  /// ascending order, so that the client can quickly check the presence of a
+  /// string in this index.
   void set strings(List<String> value) {
     this._strings = value;
   }
@@ -1116,9 +1073,7 @@
   List<AnalysisDriverSubtypeBuilder> get subtypes =>
       _subtypes ??= <AnalysisDriverSubtypeBuilder>[];
 
-  /**
-   * The list of classes declared in the unit.
-   */
+  /// The list of classes declared in the unit.
   void set subtypes(List<AnalysisDriverSubtypeBuilder> value) {
     this._subtypes = value;
   }
@@ -1126,12 +1081,10 @@
   @override
   List<int> get supertypes => _supertypes ??= <int>[];
 
-  /**
-   * The identifiers of supertypes of elements at corresponding indexes
-   * in [subtypes].  They are indexes into [strings] list. The list is sorted
-   * in ascending order.  There might be more than one element with the same
-   * value if there is more than one subtype of this supertype.
-   */
+  /// The identifiers of supertypes of elements at corresponding indexes
+  /// in [subtypes].  They are indexes into [strings] list. The list is sorted
+  /// in ascending order.  There might be more than one element with the same
+  /// value if there is more than one subtype of this supertype.
   void set supertypes(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._supertypes = value;
@@ -1140,10 +1093,9 @@
   @override
   List<int> get unitLibraryUris => _unitLibraryUris ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   void set unitLibraryUris(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._unitLibraryUris = value;
@@ -1152,10 +1104,9 @@
   @override
   List<int> get unitUnitUris => _unitUnitUris ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   void set unitUnitUris(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._unitUnitUris = value;
@@ -1165,10 +1116,8 @@
   List<bool> get usedElementIsQualifiedFlags =>
       _usedElementIsQualifiedFlags ??= <bool>[];
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   void set usedElementIsQualifiedFlags(List<bool> value) {
     this._usedElementIsQualifiedFlags = value;
   }
@@ -1177,9 +1126,7 @@
   List<idl.IndexRelationKind> get usedElementKinds =>
       _usedElementKinds ??= <idl.IndexRelationKind>[];
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   void set usedElementKinds(List<idl.IndexRelationKind> value) {
     this._usedElementKinds = value;
   }
@@ -1187,9 +1134,7 @@
   @override
   List<int> get usedElementLengths => _usedElementLengths ??= <int>[];
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   void set usedElementLengths(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElementLengths = value;
@@ -1198,10 +1143,8 @@
   @override
   List<int> get usedElementOffsets => _usedElementOffsets ??= <int>[];
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   void set usedElementOffsets(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElementOffsets = value;
@@ -1210,12 +1153,10 @@
   @override
   List<int> get usedElements => _usedElements ??= <int>[];
 
-  /**
-   * Each item of this list is the index into [elementUnits],
-   * [elementNameUnitMemberIds], [elementNameClassMemberIds] and
-   * [elementNameParameterIds].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this index.
-   */
+  /// Each item of this list is the index into [elementUnits],
+  /// [elementNameUnitMemberIds], [elementNameClassMemberIds] and
+  /// [elementNameParameterIds].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this index.
   void set usedElements(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElements = value;
@@ -1225,10 +1166,8 @@
   List<bool> get usedNameIsQualifiedFlags =>
       _usedNameIsQualifiedFlags ??= <bool>[];
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   void set usedNameIsQualifiedFlags(List<bool> value) {
     this._usedNameIsQualifiedFlags = value;
   }
@@ -1237,9 +1176,7 @@
   List<idl.IndexRelationKind> get usedNameKinds =>
       _usedNameKinds ??= <idl.IndexRelationKind>[];
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   void set usedNameKinds(List<idl.IndexRelationKind> value) {
     this._usedNameKinds = value;
   }
@@ -1247,10 +1184,8 @@
   @override
   List<int> get usedNameOffsets => _usedNameOffsets ??= <int>[];
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   void set usedNameOffsets(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedNameOffsets = value;
@@ -1259,11 +1194,9 @@
   @override
   List<int> get usedNames => _usedNames ??= <int>[];
 
-  /**
-   * Each item of this list is the index into [strings] for a used name.  The
-   * list is sorted in ascending order, so that the client can quickly find
-   * whether a name is used in this index.
-   */
+  /// Each item of this list is the index into [strings] for a used name.  The
+  /// list is sorted in ascending order, so that the client can quickly find
+  /// whether a name is used in this index.
   void set usedNames(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedNames = value;
@@ -1916,9 +1849,7 @@
   List<String> get definedClassMemberNames =>
       _definedClassMemberNames ??= <String>[];
 
-  /**
-   * List of class member names defined by the unit.
-   */
+  /// List of class member names defined by the unit.
   void set definedClassMemberNames(List<String> value) {
     this._definedClassMemberNames = value;
   }
@@ -1926,9 +1857,7 @@
   @override
   List<String> get definedTopLevelNames => _definedTopLevelNames ??= <String>[];
 
-  /**
-   * List of top-level names defined by the unit.
-   */
+  /// List of top-level names defined by the unit.
   void set definedTopLevelNames(List<String> value) {
     this._definedTopLevelNames = value;
   }
@@ -1936,9 +1865,7 @@
   @override
   List<String> get referencedNames => _referencedNames ??= <String>[];
 
-  /**
-   * List of external names referenced by the unit.
-   */
+  /// List of external names referenced by the unit.
   void set referencedNames(List<String> value) {
     this._referencedNames = value;
   }
@@ -1946,10 +1873,8 @@
   @override
   List<String> get subtypedNames => _subtypedNames ??= <String>[];
 
-  /**
-   * List of names which are used in `extends`, `with` or `implements` clauses
-   * in the file. Import prefixes and type arguments are not included.
-   */
+  /// List of names which are used in `extends`, `with` or `implements` clauses
+  /// in the file. Import prefixes and type arguments are not included.
   void set subtypedNames(List<String> value) {
     this._subtypedNames = value;
   }
@@ -1957,9 +1882,7 @@
   @override
   UnlinkedUnitBuilder get unit => _unit;
 
-  /**
-   * Unlinked information for the unit.
-   */
+  /// Unlinked information for the unit.
   void set unit(UnlinkedUnitBuilder value) {
     this._unit = value;
   }
@@ -2181,9 +2104,7 @@
   @override
   int get length => _length ??= 0;
 
-  /**
-   * Length of the element code.
-   */
+  /// Length of the element code.
   void set length(int value) {
     assert(value == null || value >= 0);
     this._length = value;
@@ -2192,9 +2113,7 @@
   @override
   int get offset => _offset ??= 0;
 
-  /**
-   * Offset of the element code relative to the beginning of the file.
-   */
+  /// Offset of the element code relative to the beginning of the file.
   void set offset(int value) {
     assert(value == null || value >= 0);
     this._offset = value;
@@ -2297,9 +2216,7 @@
   @override
   idl.EntityRefKind get entityKind => _entityKind ??= idl.EntityRefKind.named;
 
-  /**
-   * The kind of entity being represented.
-   */
+  /// The kind of entity being represented.
   void set entityKind(idl.EntityRefKind value) {
     this._entityKind = value;
   }
@@ -2308,34 +2225,32 @@
   List<int> get implicitFunctionTypeIndices =>
       _implicitFunctionTypeIndices ??= <int>[];
 
-  /**
-   * Notice: This will be deprecated. However, its not deprecated yet, as we're
-   * keeping it for backwards compatibilty, and marking it deprecated makes it
-   * unreadable.
-   *
-   * TODO(mfairhurst) mark this deprecated, and remove its logic.
-   *
-   * If this is a reference to a function type implicitly defined by a
-   * function-typed parameter, a list of zero-based indices indicating the path
-   * from the entity referred to by [reference] to the appropriate type
-   * parameter.  Otherwise the empty list.
-   *
-   * If there are N indices in this list, then the entity being referred to is
-   * the function type implicitly defined by a function-typed parameter of a
-   * function-typed parameter, to N levels of nesting.  The first index in the
-   * list refers to the outermost level of nesting; for example if [reference]
-   * refers to the entity defined by:
-   *
-   *     void f(x, void g(y, z, int h(String w))) { ... }
-   *
-   * Then to refer to the function type implicitly defined by parameter `h`
-   * (which is parameter 2 of parameter 1 of `f`), then
-   * [implicitFunctionTypeIndices] should be [1, 2].
-   *
-   * Note that if the entity being referred to is a generic method inside a
-   * generic class, then the type arguments in [typeArguments] are applied
-   * first to the class and then to the method.
-   */
+  /// Notice: This will be deprecated. However, its not deprecated yet, as we're
+  /// keeping it for backwards compatibilty, and marking it deprecated makes it
+  /// unreadable.
+  ///
+  /// TODO(mfairhurst) mark this deprecated, and remove its logic.
+  ///
+  /// If this is a reference to a function type implicitly defined by a
+  /// function-typed parameter, a list of zero-based indices indicating the path
+  /// from the entity referred to by [reference] to the appropriate type
+  /// parameter.  Otherwise the empty list.
+  ///
+  /// If there are N indices in this list, then the entity being referred to is
+  /// the function type implicitly defined by a function-typed parameter of a
+  /// function-typed parameter, to N levels of nesting.  The first index in the
+  /// list refers to the outermost level of nesting; for example if [reference]
+  /// refers to the entity defined by:
+  ///
+  ///     void f(x, void g(y, z, int h(String w))) { ... }
+  ///
+  /// Then to refer to the function type implicitly defined by parameter `h`
+  /// (which is parameter 2 of parameter 1 of `f`), then
+  /// [implicitFunctionTypeIndices] should be [1, 2].
+  ///
+  /// Note that if the entity being referred to is a generic method inside a
+  /// generic class, then the type arguments in [typeArguments] are applied
+  /// first to the class and then to the method.
   void set implicitFunctionTypeIndices(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._implicitFunctionTypeIndices = value;
@@ -2344,25 +2259,23 @@
   @override
   int get paramReference => _paramReference ??= 0;
 
-  /**
-   * If this is a reference to a type parameter, one-based index into the list
-   * of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
-   * Bruijn index conventions; that is, innermost parameters come first, and
-   * if a class or method has multiple parameters, they are indexed from right
-   * to left.  So for instance, if the enclosing declaration is
-   *
-   *     class C<T,U> {
-   *       m<V,W> {
-   *         ...
-   *       }
-   *     }
-   *
-   * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
-   * respectively.
-   *
-   * If the type being referred to is not a type parameter, [paramReference] is
-   * zero.
-   */
+  /// If this is a reference to a type parameter, one-based index into the list
+  /// of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
+  /// Bruijn index conventions; that is, innermost parameters come first, and
+  /// if a class or method has multiple parameters, they are indexed from right
+  /// to left.  So for instance, if the enclosing declaration is
+  ///
+  ///     class C<T,U> {
+  ///       m<V,W> {
+  ///         ...
+  ///       }
+  ///     }
+  ///
+  /// Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
+  /// respectively.
+  ///
+  /// If the type being referred to is not a type parameter, [paramReference] is
+  /// zero.
   void set paramReference(int value) {
     assert(value == null || value >= 0);
     this._paramReference = value;
@@ -2371,10 +2284,8 @@
   @override
   int get reference => _reference ??= 0;
 
-  /**
-   * Index into [UnlinkedUnit.references] for the entity being referred to, or
-   * zero if this is a reference to a type parameter.
-   */
+  /// Index into [UnlinkedUnit.references] for the entity being referred to, or
+  /// zero if this is a reference to a type parameter.
   void set reference(int value) {
     assert(value == null || value >= 0);
     this._reference = value;
@@ -2383,17 +2294,16 @@
   @override
   int get refinedSlot => _refinedSlot ??= 0;
 
-  /**
-   * If this [EntityRef] appears in a syntactic context where its type arguments
-   * might need to be inferred by a method other than instantiate-to-bounds,
-   * and [typeArguments] is empty, a slot id (which is unique within the
-   * compilation unit).  If an entry appears in [LinkedUnit.types] whose [slot]
-   * matches this value, that entry will contain the complete inferred type.
-   *
-   * This is called `refinedSlot` to clarify that if it points to an inferred
-   * type, it points to a type that is a "refinement" of this one (one in which
-   * some type arguments have been inferred).
-   */
+  /// If this [EntityRef] appears in a syntactic context where its type
+  /// arguments might need to be inferred by a method other than
+  /// instantiate-to-bounds, and [typeArguments] is empty, a slot id (which is
+  /// unique within the compilation unit).  If an entry appears in
+  /// [LinkedUnit.types] whose [slot] matches this value, that entry will
+  /// contain the complete inferred type.
+  ///
+  /// This is called `refinedSlot` to clarify that if it points to an inferred
+  /// type, it points to a type that is a "refinement" of this one (one in which
+  /// some type arguments have been inferred).
   void set refinedSlot(int value) {
     assert(value == null || value >= 0);
     this._refinedSlot = value;
@@ -2402,13 +2312,11 @@
   @override
   int get slot => _slot ??= 0;
 
-  /**
-   * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
-   * is unique within the compilation unit) identifying the target of type
-   * propagation or type inference with which this [EntityRef] is associated.
-   *
-   * Otherwise zero.
-   */
+  /// If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
+  /// is unique within the compilation unit) identifying the target of type
+  /// propagation or type inference with which this [EntityRef] is associated.
+  ///
+  /// Otherwise zero.
   void set slot(int value) {
     assert(value == null || value >= 0);
     this._slot = value;
@@ -2418,12 +2326,10 @@
   List<UnlinkedParamBuilder> get syntheticParams =>
       _syntheticParams ??= <UnlinkedParamBuilder>[];
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the function parameters.  Otherwise
-   * empty.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the function parameters.  Otherwise
+  /// empty.
   void set syntheticParams(List<UnlinkedParamBuilder> value) {
     this._syntheticParams = value;
   }
@@ -2431,12 +2337,10 @@
   @override
   EntityRefBuilder get syntheticReturnType => _syntheticReturnType;
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the return type of the function.
-   * Otherwise `null`.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the return type of the function.
+  /// Otherwise `null`.
   void set syntheticReturnType(EntityRefBuilder value) {
     this._syntheticReturnType = value;
   }
@@ -2445,10 +2349,8 @@
   List<EntityRefBuilder> get typeArguments =>
       _typeArguments ??= <EntityRefBuilder>[];
 
-  /**
-   * If this is an instantiation of a generic type or generic executable, the
-   * type arguments used to instantiate it (if any).
-   */
+  /// If this is an instantiation of a generic type or generic executable, the
+  /// type arguments used to instantiate it (if any).
   void set typeArguments(List<EntityRefBuilder> value) {
     this._typeArguments = value;
   }
@@ -2457,10 +2359,8 @@
   List<UnlinkedTypeParamBuilder> get typeParameters =>
       _typeParameters ??= <UnlinkedTypeParamBuilder>[];
 
-  /**
-   * If this is a function type, the type parameters defined for the function
-   * type (if any).
-   */
+  /// If this is a function type, the type parameters defined for the function
+  /// type (if any).
   void set typeParameters(List<UnlinkedTypeParamBuilder> value) {
     this._typeParameters = value;
   }
@@ -2753,10 +2653,8 @@
   @override
   List<String> get parts => _parts ??= <String>[];
 
-  /**
-   * Absolute URI for the compilation units listed in the library's `part`
-   * declarations, empty string for invalid URI.
-   */
+  /// Absolute URI for the compilation units listed in the library's `part`
+  /// declarations, empty string for invalid URI.
   void set parts(List<String> value) {
     this._parts = value;
   }
@@ -2764,9 +2662,7 @@
   @override
   String get uri => _uri ??= '';
 
-  /**
-   * The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
-   */
+  /// The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
   void set uri(String value) {
     this._uri = value;
   }
@@ -2879,10 +2775,8 @@
   @override
   int get dependency => _dependency ??= 0;
 
-  /**
-   * Index into [LinkedLibrary.dependencies] for the library in which the
-   * entity is defined.
-   */
+  /// Index into [LinkedLibrary.dependencies] for the library in which the
+  /// entity is defined.
   void set dependency(int value) {
     assert(value == null || value >= 0);
     this._dependency = value;
@@ -2891,9 +2785,7 @@
   @override
   idl.ReferenceKind get kind => _kind ??= idl.ReferenceKind.classOrEnum;
 
-  /**
-   * The kind of the entity being referred to.
-   */
+  /// The kind of the entity being referred to.
   void set kind(idl.ReferenceKind value) {
     this._kind = value;
   }
@@ -2901,10 +2793,8 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the exported entity.  For an exported setter, this name includes
-   * the trailing '='.
-   */
+  /// Name of the exported entity.  For an exported setter, this name includes
+  /// the trailing '='.
   void set name(String value) {
     this._name = value;
   }
@@ -2912,12 +2802,10 @@
   @override
   int get unit => _unit ??= 0;
 
-  /**
-   * Integer index indicating which unit in the exported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   */
+  /// Integer index indicating which unit in the exported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
   void set unit(int value) {
     assert(value == null || value >= 0);
     this._unit = value;
@@ -3052,22 +2940,20 @@
   List<LinkedDependencyBuilder> get dependencies =>
       _dependencies ??= <LinkedDependencyBuilder>[];
 
-  /**
-   * The libraries that this library depends on (either via an explicit import
-   * statement or via the implicit dependencies on `dart:core` and
-   * `dart:async`).  The first element of this array is a pseudo-dependency
-   * representing the library itself (it is also used for `dynamic` and
-   * `void`).  This is followed by elements representing "prelinked"
-   * dependencies (direct imports and the transitive closure of exports).
-   * After the prelinked dependencies are elements representing "linked"
-   * dependencies.
-   *
-   * A library is only included as a "linked" dependency if it is a true
-   * dependency (e.g. a propagated or inferred type or constant value
-   * implicitly refers to an element declared in the library) or
-   * anti-dependency (e.g. the result of type propagation or type inference
-   * depends on the lack of a certain declaration in the library).
-   */
+  /// The libraries that this library depends on (either via an explicit import
+  /// statement or via the implicit dependencies on `dart:core` and
+  /// `dart:async`).  The first element of this array is a pseudo-dependency
+  /// representing the library itself (it is also used for `dynamic` and
+  /// `void`).  This is followed by elements representing "prelinked"
+  /// dependencies (direct imports and the transitive closure of exports).
+  /// After the prelinked dependencies are elements representing "linked"
+  /// dependencies.
+  ///
+  /// A library is only included as a "linked" dependency if it is a true
+  /// dependency (e.g. a propagated or inferred type or constant value
+  /// implicitly refers to an element declared in the library) or
+  /// anti-dependency (e.g. the result of type propagation or type inference
+  /// depends on the lack of a certain declaration in the library).
   void set dependencies(List<LinkedDependencyBuilder> value) {
     this._dependencies = value;
   }
@@ -3075,10 +2961,8 @@
   @override
   List<int> get exportDependencies => _exportDependencies ??= <int>[];
 
-  /**
-   * For each export in [UnlinkedUnit.exports], an index into [dependencies]
-   * of the library being exported.
-   */
+  /// For each export in [UnlinkedUnit.exports], an index into [dependencies]
+  /// of the library being exported.
   void set exportDependencies(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._exportDependencies = value;
@@ -3088,13 +2972,11 @@
   List<LinkedExportNameBuilder> get exportNames =>
       _exportNames ??= <LinkedExportNameBuilder>[];
 
-  /**
-   * Information about entities in the export namespace of the library that are
-   * not in the public namespace of the library (that is, entities that are
-   * brought into the namespace via `export` directives).
-   *
-   * Sorted by name.
-   */
+  /// Information about entities in the export namespace of the library that are
+  /// not in the public namespace of the library (that is, entities that are
+  /// brought into the namespace via `export` directives).
+  ///
+  /// Sorted by name.
   void set exportNames(List<LinkedExportNameBuilder> value) {
     this._exportNames = value;
   }
@@ -3106,10 +2988,8 @@
   @override
   List<int> get importDependencies => _importDependencies ??= <int>[];
 
-  /**
-   * For each import in [UnlinkedUnit.imports], an index into [dependencies]
-   * of the library being imported.
-   */
+  /// For each import in [UnlinkedUnit.imports], an index into [dependencies]
+  /// of the library being imported.
   void set importDependencies(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._importDependencies = value;
@@ -3118,11 +2998,9 @@
   @override
   int get numPrelinkedDependencies => _numPrelinkedDependencies ??= 0;
 
-  /**
-   * The number of elements in [dependencies] which are not "linked"
-   * dependencies (that is, the number of libraries in the direct imports plus
-   * the transitive closure of exports, plus the library itself).
-   */
+  /// The number of elements in [dependencies] which are not "linked"
+  /// dependencies (that is, the number of libraries in the direct imports plus
+  /// the transitive closure of exports, plus the library itself).
   void set numPrelinkedDependencies(int value) {
     assert(value == null || value >= 0);
     this._numPrelinkedDependencies = value;
@@ -3131,12 +3009,10 @@
   @override
   List<LinkedUnitBuilder> get units => _units ??= <LinkedUnitBuilder>[];
 
-  /**
-   * The linked summary of all the compilation units constituting the
-   * library.  The summary of the defining compilation unit is listed first,
-   * followed by the summary of each part, in the order of the `part`
-   * declarations in the defining compilation unit.
-   */
+  /// The linked summary of all the compilation units constituting the
+  /// library.  The summary of the defining compilation unit is listed first,
+  /// followed by the summary of each part, in the order of the `part`
+  /// declarations in the defining compilation unit.
   void set units(List<LinkedUnitBuilder> value) {
     this._units = value;
   }
@@ -3390,17 +3266,15 @@
   @override
   int get containingReference => _containingReference ??= 0;
 
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * and the entity being referred to is contained within another entity, index
-   * of the containing entity.  This behaves similarly to
-   * [UnlinkedReference.prefixReference], however it is only used for class
-   * members, not for prefixed imports.
-   *
-   * Containing references must always point backward; that is, for all i, if
-   * LinkedUnit.references[i].containingReference != 0, then
-   * LinkedUnit.references[i].containingReference < i.
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// and the entity being referred to is contained within another entity, index
+  /// of the containing entity.  This behaves similarly to
+  /// [UnlinkedReference.prefixReference], however it is only used for class
+  /// members, not for prefixed imports.
+  ///
+  /// Containing references must always point backward; that is, for all i, if
+  /// LinkedUnit.references[i].containingReference != 0, then
+  /// LinkedUnit.references[i].containingReference < i.
   void set containingReference(int value) {
     assert(value == null || value >= 0);
     this._containingReference = value;
@@ -3409,13 +3283,11 @@
   @override
   int get dependency => _dependency ??= 0;
 
-  /**
-   * Index into [LinkedLibrary.dependencies] indicating which imported library
-   * declares the entity being referred to.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member), or if [kind] is [ReferenceKind.prefix].
-   */
+  /// Index into [LinkedLibrary.dependencies] indicating which imported library
+  /// declares the entity being referred to.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member), or if [kind] is [ReferenceKind.prefix].
   void set dependency(int value) {
     assert(value == null || value >= 0);
     this._dependency = value;
@@ -3424,10 +3296,8 @@
   @override
   idl.ReferenceKind get kind => _kind ??= idl.ReferenceKind.classOrEnum;
 
-  /**
-   * The kind of the entity being referred to.  For the pseudo-types `dynamic`
-   * and `void`, the kind is [ReferenceKind.classOrEnum].
-   */
+  /// The kind of the entity being referred to.  For the pseudo-types `dynamic`
+  /// and `void`, the kind is [ReferenceKind.classOrEnum].
   void set kind(idl.ReferenceKind value) {
     this._kind = value;
   }
@@ -3439,11 +3309,9 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
   void set name(String value) {
     this._name = value;
   }
@@ -3451,11 +3319,9 @@
   @override
   int get numTypeParameters => _numTypeParameters ??= 0;
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it declares (does not include type parameters of enclosing entities).
-   * Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it declares (does not include type parameters of enclosing entities).
+  /// Otherwise zero.
   void set numTypeParameters(int value) {
     assert(value == null || value >= 0);
     this._numTypeParameters = value;
@@ -3464,15 +3330,13 @@
   @override
   int get unit => _unit ??= 0;
 
-  /**
-   * Integer index indicating which unit in the imported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member).
-   */
+  /// Integer index indicating which unit in the imported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member).
   void set unit(int value) {
     assert(value == null || value >= 0);
     this._unit = value;
@@ -3646,10 +3510,8 @@
   @override
   List<int> get constCycles => _constCycles ??= <int>[];
 
-  /**
-   * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
-   * corresponding to const constructors that are part of cycles.
-   */
+  /// List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
+  /// corresponding to const constructors that are part of cycles.
   void set constCycles(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._constCycles = value;
@@ -3659,11 +3521,9 @@
   List<int> get parametersInheritingCovariant =>
       _parametersInheritingCovariant ??= <int>[];
 
-  /**
-   * List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
-   * [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
-   * that inherit `@covariant` behavior from a base class.
-   */
+  /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
+  /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
+  /// that inherit `@covariant` behavior from a base class.
   void set parametersInheritingCovariant(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._parametersInheritingCovariant = value;
@@ -3673,14 +3533,12 @@
   List<LinkedReferenceBuilder> get references =>
       _references ??= <LinkedReferenceBuilder>[];
 
-  /**
-   * Information about the resolution of references within the compilation
-   * unit.  Each element of [UnlinkedUnit.references] has a corresponding
-   * element in this list (at the same index).  If this list has additional
-   * elements beyond the number of elements in [UnlinkedUnit.references], those
-   * additional elements are references that are only referred to implicitly
-   * (e.g. elements involved in inferred or propagated types).
-   */
+  /// Information about the resolution of references within the compilation
+  /// unit.  Each element of [UnlinkedUnit.references] has a corresponding
+  /// element in this list (at the same index).  If this list has additional
+  /// elements beyond the number of elements in [UnlinkedUnit.references], those
+  /// additional elements are references that are only referred to implicitly
+  /// (e.g. elements involved in inferred or propagated types).
   void set references(List<LinkedReferenceBuilder> value) {
     this._references = value;
   }
@@ -3689,9 +3547,7 @@
   List<TopLevelInferenceErrorBuilder> get topLevelInferenceErrors =>
       _topLevelInferenceErrors ??= <TopLevelInferenceErrorBuilder>[];
 
-  /**
-   * The list of type inference errors.
-   */
+  /// The list of type inference errors.
   void set topLevelInferenceErrors(List<TopLevelInferenceErrorBuilder> value) {
     this._topLevelInferenceErrors = value;
   }
@@ -3699,10 +3555,8 @@
   @override
   List<EntityRefBuilder> get types => _types ??= <EntityRefBuilder>[];
 
-  /**
-   * List associating slot ids found inside the unlinked summary for the
-   * compilation unit with propagated and inferred types.
-   */
+  /// List associating slot ids found inside the unlinked summary for the
+  /// compilation unit with propagated and inferred types.
   void set types(List<EntityRefBuilder> value) {
     this._types = value;
   }
@@ -3935,9 +3789,7 @@
   List<LinkedLibraryBuilder> get linkedLibraries =>
       _linkedLibraries ??= <LinkedLibraryBuilder>[];
 
-  /**
-   * Linked libraries.
-   */
+  /// Linked libraries.
   void set linkedLibraries(List<LinkedLibraryBuilder> value) {
     this._linkedLibraries = value;
   }
@@ -3945,10 +3797,8 @@
   @override
   List<String> get linkedLibraryUris => _linkedLibraryUris ??= <String>[];
 
-  /**
-   * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
-   * `package:foo/bar.dart`.
-   */
+  /// The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
+  /// `package:foo/bar.dart`.
   void set linkedLibraryUris(List<String> value) {
     this._linkedLibraryUris = value;
   }
@@ -3956,10 +3806,8 @@
   @override
   int get majorVersion => _majorVersion ??= 0;
 
-  /**
-   * Major version of the summary format.  See
-   * [PackageBundleAssembler.currentMajorVersion].
-   */
+  /// Major version of the summary format.  See
+  /// [PackageBundleAssembler.currentMajorVersion].
   void set majorVersion(int value) {
     assert(value == null || value >= 0);
     this._majorVersion = value;
@@ -3968,10 +3816,8 @@
   @override
   int get minorVersion => _minorVersion ??= 0;
 
-  /**
-   * Minor version of the summary format.  See
-   * [PackageBundleAssembler.currentMinorVersion].
-   */
+  /// Minor version of the summary format.  See
+  /// [PackageBundleAssembler.currentMinorVersion].
   void set minorVersion(int value) {
     assert(value == null || value >= 0);
     this._minorVersion = value;
@@ -3985,9 +3831,7 @@
   List<UnlinkedUnitBuilder> get unlinkedUnits =>
       _unlinkedUnits ??= <UnlinkedUnitBuilder>[];
 
-  /**
-   * Unlinked information for the compilation units constituting the package.
-   */
+  /// Unlinked information for the compilation units constituting the package.
   void set unlinkedUnits(List<UnlinkedUnitBuilder> value) {
     this._unlinkedUnits = value;
   }
@@ -3995,9 +3839,7 @@
   @override
   List<String> get unlinkedUnitUris => _unlinkedUnitUris ??= <String>[];
 
-  /**
-   * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
-   */
+  /// The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
   void set unlinkedUnitUris(List<String> value) {
     this._unlinkedUnitUris = value;
   }
@@ -4246,10 +4088,8 @@
   List<idl.IndexSyntheticElementKind> get elementKinds =>
       _elementKinds ??= <idl.IndexSyntheticElementKind>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   void set elementKinds(List<idl.IndexSyntheticElementKind> value) {
     this._elementKinds = value;
   }
@@ -4258,13 +4098,11 @@
   List<int> get elementNameClassMemberIds =>
       _elementNameClassMemberIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   void set elementNameClassMemberIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameClassMemberIds = value;
@@ -4273,13 +4111,11 @@
   @override
   List<int> get elementNameParameterIds => _elementNameParameterIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   void set elementNameParameterIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameParameterIds = value;
@@ -4289,12 +4125,10 @@
   List<int> get elementNameUnitMemberIds =>
       _elementNameUnitMemberIds ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this [PackageIndex].
   void set elementNameUnitMemberIds(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementNameUnitMemberIds = value;
@@ -4303,11 +4137,9 @@
   @override
   List<int> get elementUnits => _elementUnits ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   void set elementUnits(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._elementUnits = value;
@@ -4316,11 +4148,9 @@
   @override
   List<String> get strings => _strings ??= <String>[];
 
-  /**
-   * List of unique element strings used in this [PackageIndex].  The list is
-   * sorted in ascending order, so that the client can quickly check the
-   * presence of a string in this [PackageIndex].
-   */
+  /// List of unique element strings used in this [PackageIndex].  The list is
+  /// sorted in ascending order, so that the client can quickly check the
+  /// presence of a string in this [PackageIndex].
   void set strings(List<String> value) {
     this._strings = value;
   }
@@ -4328,11 +4158,9 @@
   @override
   List<int> get unitLibraryUris => _unitLibraryUris ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   void set unitLibraryUris(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._unitLibraryUris = value;
@@ -4341,9 +4169,7 @@
   @override
   List<UnitIndexBuilder> get units => _units ??= <UnitIndexBuilder>[];
 
-  /**
-   * List of indexes of each unit in this [PackageIndex].
-   */
+  /// List of indexes of each unit in this [PackageIndex].
   void set units(List<UnitIndexBuilder> value) {
     this._units = value;
   }
@@ -4351,11 +4177,9 @@
   @override
   List<int> get unitUnitUris => _unitUnitUris ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   void set unitUnitUris(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._unitUnitUris = value;
@@ -4696,9 +4520,7 @@
   @override
   List<String> get arguments => _arguments ??= <String>[];
 
-  /**
-   * The [kind] specific arguments.
-   */
+  /// The [kind] specific arguments.
   void set arguments(List<String> value) {
     this._arguments = value;
   }
@@ -4707,9 +4529,7 @@
   idl.TopLevelInferenceErrorKind get kind =>
       _kind ??= idl.TopLevelInferenceErrorKind.assignment;
 
-  /**
-   * The kind of the error.
-   */
+  /// The kind of the error.
   void set kind(idl.TopLevelInferenceErrorKind value) {
     this._kind = value;
   }
@@ -4717,11 +4537,9 @@
   @override
   int get slot => _slot ??= 0;
 
-  /**
-   * The slot id (which is unique within the compilation unit) identifying the
-   * target of type inference with which this [TopLevelInferenceError] is
-   * associated.
-   */
+  /// The slot id (which is unique within the compilation unit) identifying the
+  /// target of type inference with which this [TopLevelInferenceError] is
+  /// associated.
   void set slot(int value) {
     assert(value == null || value >= 0);
     this._slot = value;
@@ -4860,9 +4678,7 @@
   List<idl.IndexNameKind> get definedNameKinds =>
       _definedNameKinds ??= <idl.IndexNameKind>[];
 
-  /**
-   * Each item of this list is the kind of an element defined in this unit.
-   */
+  /// Each item of this list is the kind of an element defined in this unit.
   void set definedNameKinds(List<idl.IndexNameKind> value) {
     this._definedNameKinds = value;
   }
@@ -4870,10 +4686,8 @@
   @override
   List<int> get definedNameOffsets => _definedNameOffsets ??= <int>[];
 
-  /**
-   * Each item of this list is the name offset of an element defined in this
-   * unit relative to the beginning of the file.
-   */
+  /// Each item of this list is the name offset of an element defined in this
+  /// unit relative to the beginning of the file.
   void set definedNameOffsets(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._definedNameOffsets = value;
@@ -4882,12 +4696,10 @@
   @override
   List<int> get definedNames => _definedNames ??= <int>[];
 
-  /**
-   * Each item of this list corresponds to an element defined in this unit.  It
-   * is an index into [PackageIndex.strings] list.  The list is sorted in
-   * ascending order, so that the client can quickly find name definitions in
-   * this [UnitIndex].
-   */
+  /// Each item of this list corresponds to an element defined in this unit.  It
+  /// is an index into [PackageIndex.strings] list.  The list is sorted in
+  /// ascending order, so that the client can quickly find name definitions in
+  /// this [UnitIndex].
   void set definedNames(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._definedNames = value;
@@ -4896,10 +4708,8 @@
   @override
   int get unit => _unit ??= 0;
 
-  /**
-   * Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
-   * for the library specific unit that corresponds to this [UnitIndex].
-   */
+  /// Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
+  /// for the library specific unit that corresponds to this [UnitIndex].
   void set unit(int value) {
     assert(value == null || value >= 0);
     this._unit = value;
@@ -4909,10 +4719,8 @@
   List<bool> get usedElementIsQualifiedFlags =>
       _usedElementIsQualifiedFlags ??= <bool>[];
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   void set usedElementIsQualifiedFlags(List<bool> value) {
     this._usedElementIsQualifiedFlags = value;
   }
@@ -4921,9 +4729,7 @@
   List<idl.IndexRelationKind> get usedElementKinds =>
       _usedElementKinds ??= <idl.IndexRelationKind>[];
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   void set usedElementKinds(List<idl.IndexRelationKind> value) {
     this._usedElementKinds = value;
   }
@@ -4931,9 +4737,7 @@
   @override
   List<int> get usedElementLengths => _usedElementLengths ??= <int>[];
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   void set usedElementLengths(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElementLengths = value;
@@ -4942,10 +4746,8 @@
   @override
   List<int> get usedElementOffsets => _usedElementOffsets ??= <int>[];
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   void set usedElementOffsets(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElementOffsets = value;
@@ -4954,11 +4756,9 @@
   @override
   List<int> get usedElements => _usedElements ??= <int>[];
 
-  /**
-   * Each item of this list is the index into [PackageIndex.elementUnits] and
-   * [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.elementUnits] and
+  /// [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this [UnitIndex].
   void set usedElements(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedElements = value;
@@ -4968,10 +4768,8 @@
   List<bool> get usedNameIsQualifiedFlags =>
       _usedNameIsQualifiedFlags ??= <bool>[];
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   void set usedNameIsQualifiedFlags(List<bool> value) {
     this._usedNameIsQualifiedFlags = value;
   }
@@ -4980,9 +4778,7 @@
   List<idl.IndexRelationKind> get usedNameKinds =>
       _usedNameKinds ??= <idl.IndexRelationKind>[];
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   void set usedNameKinds(List<idl.IndexRelationKind> value) {
     this._usedNameKinds = value;
   }
@@ -4990,10 +4786,8 @@
   @override
   List<int> get usedNameOffsets => _usedNameOffsets ??= <int>[];
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   void set usedNameOffsets(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedNameOffsets = value;
@@ -5002,11 +4796,9 @@
   @override
   List<int> get usedNames => _usedNames ??= <int>[];
 
-  /**
-   * Each item of this list is the index into [PackageIndex.strings] for a
-   * used name.  The list is sorted in ascending order, so that the client can
-   * quickly find name uses in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.strings] for a
+  /// used name.  The list is sorted in ascending order, so that the client can
+  /// quickly find name uses in this [UnitIndex].
   void set usedNames(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._usedNames = value;
@@ -5455,9 +5247,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this class.
-   */
+  /// Annotations for this class.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -5465,9 +5255,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the class.
-   */
+  /// Code range of the class.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -5476,10 +5264,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the class, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the class, or `null` if there is no
+  /// documentation comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -5488,9 +5274,7 @@
   List<UnlinkedExecutableBuilder> get executables =>
       _executables ??= <UnlinkedExecutableBuilder>[];
 
-  /**
-   * Executable objects (methods, getters, and setters) contained in the class.
-   */
+  /// Executable objects (methods, getters, and setters) contained in the class.
   void set executables(List<UnlinkedExecutableBuilder> value) {
     this._executables = value;
   }
@@ -5499,9 +5283,7 @@
   List<UnlinkedVariableBuilder> get fields =>
       _fields ??= <UnlinkedVariableBuilder>[];
 
-  /**
-   * Field declarations contained in the class.
-   */
+  /// Field declarations contained in the class.
   void set fields(List<UnlinkedVariableBuilder> value) {
     this._fields = value;
   }
@@ -5509,10 +5291,8 @@
   @override
   bool get hasNoSupertype => _hasNoSupertype ??= false;
 
-  /**
-   * Indicates whether this class is the core "Object" class (and hence has no
-   * supertype)
-   */
+  /// Indicates whether this class is the core "Object" class (and hence has no
+  /// supertype)
   void set hasNoSupertype(bool value) {
     this._hasNoSupertype = value;
   }
@@ -5520,9 +5300,7 @@
   @override
   List<EntityRefBuilder> get interfaces => _interfaces ??= <EntityRefBuilder>[];
 
-  /**
-   * Interfaces appearing in an `implements` clause, if any.
-   */
+  /// Interfaces appearing in an `implements` clause, if any.
   void set interfaces(List<EntityRefBuilder> value) {
     this._interfaces = value;
   }
@@ -5530,9 +5308,7 @@
   @override
   bool get isAbstract => _isAbstract ??= false;
 
-  /**
-   * Indicates whether the class is declared with the `abstract` keyword.
-   */
+  /// Indicates whether the class is declared with the `abstract` keyword.
   void set isAbstract(bool value) {
     this._isAbstract = value;
   }
@@ -5540,9 +5316,7 @@
   @override
   bool get isMixinApplication => _isMixinApplication ??= false;
 
-  /**
-   * Indicates whether the class is declared using mixin application syntax.
-   */
+  /// Indicates whether the class is declared using mixin application syntax.
   void set isMixinApplication(bool value) {
     this._isMixinApplication = value;
   }
@@ -5550,9 +5324,7 @@
   @override
   List<EntityRefBuilder> get mixins => _mixins ??= <EntityRefBuilder>[];
 
-  /**
-   * Mixins appearing in a `with` clause, if any.
-   */
+  /// Mixins appearing in a `with` clause, if any.
   void set mixins(List<EntityRefBuilder> value) {
     this._mixins = value;
   }
@@ -5560,9 +5332,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the class.
-   */
+  /// Name of the class.
   void set name(String value) {
     this._name = value;
   }
@@ -5570,9 +5340,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the class name relative to the beginning of the file.
-   */
+  /// Offset of the class name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -5582,11 +5350,9 @@
   List<EntityRefBuilder> get superclassConstraints =>
       _superclassConstraints ??= <EntityRefBuilder>[];
 
-  /**
-   * Superclass constraints for this mixin declaration. The list will be empty
-   * if this class is not a mixin declaration, or if the declaration does not
-   * have an `on` clause (in which case the type `Object` is implied).
-   */
+  /// Superclass constraints for this mixin declaration. The list will be empty
+  /// if this class is not a mixin declaration, or if the declaration does not
+  /// have an `on` clause (in which case the type `Object` is implied).
   void set superclassConstraints(List<EntityRefBuilder> value) {
     this._superclassConstraints = value;
   }
@@ -5594,11 +5360,9 @@
   @override
   List<String> get superInvokedNames => _superInvokedNames ??= <String>[];
 
-  /**
-   * Names of methods, getters, setters, and operators that this mixin
-   * declaration super-invokes.  For setters this includes the trailing "=".
-   * The list will be empty if this class is not a mixin declaration.
-   */
+  /// Names of methods, getters, setters, and operators that this mixin
+  /// declaration super-invokes.  For setters this includes the trailing "=".
+  /// The list will be empty if this class is not a mixin declaration.
   void set superInvokedNames(List<String> value) {
     this._superInvokedNames = value;
   }
@@ -5606,11 +5370,9 @@
   @override
   EntityRefBuilder get supertype => _supertype;
 
-  /**
-   * Supertype of the class, or `null` if either (a) the class doesn't
-   * explicitly declare a supertype (and hence has supertype `Object`), or (b)
-   * the class *is* `Object` (and hence has no supertype).
-   */
+  /// Supertype of the class, or `null` if either (a) the class doesn't
+  /// explicitly declare a supertype (and hence has supertype `Object`), or (b)
+  /// the class *is* `Object` (and hence has no supertype).
   void set supertype(EntityRefBuilder value) {
     this._supertype = value;
   }
@@ -5619,9 +5381,7 @@
   List<UnlinkedTypeParamBuilder> get typeParameters =>
       _typeParameters ??= <UnlinkedTypeParamBuilder>[];
 
-  /**
-   * Type parameters of the class, if any.
-   */
+  /// Type parameters of the class, if any.
   void set typeParameters(List<UnlinkedTypeParamBuilder> value) {
     this._typeParameters = value;
   }
@@ -6082,10 +5842,8 @@
   @override
   int get end => _end ??= 0;
 
-  /**
-   * If this is a `show` combinator, offset of the end of the list of shown
-   * names.  Otherwise zero.
-   */
+  /// If this is a `show` combinator, offset of the end of the list of shown
+  /// names.  Otherwise zero.
   void set end(int value) {
     assert(value == null || value >= 0);
     this._end = value;
@@ -6094,9 +5852,7 @@
   @override
   List<String> get hides => _hides ??= <String>[];
 
-  /**
-   * List of names which are hidden.  Empty if this is a `show` combinator.
-   */
+  /// List of names which are hidden.  Empty if this is a `show` combinator.
   void set hides(List<String> value) {
     this._hides = value;
   }
@@ -6104,10 +5860,8 @@
   @override
   int get offset => _offset ??= 0;
 
-  /**
-   * If this is a `show` combinator, offset of the `show` keyword.  Otherwise
-   * zero.
-   */
+  /// If this is a `show` combinator, offset of the `show` keyword.  Otherwise
+  /// zero.
   void set offset(int value) {
     assert(value == null || value >= 0);
     this._offset = value;
@@ -6116,9 +5870,7 @@
   @override
   List<String> get shows => _shows ??= <String>[];
 
-  /**
-   * List of names which are shown.  Empty if this is a `hide` combinator.
-   */
+  /// List of names which are shown.  Empty if this is a `hide` combinator.
   void set shows(List<String> value) {
     this._shows = value;
   }
@@ -6270,10 +6022,8 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * The name of the declared variable whose value is being used in the
-   * condition.
-   */
+  /// The name of the declared variable whose value is being used in the
+  /// condition.
   void set name(String value) {
     this._name = value;
   }
@@ -6281,9 +6031,7 @@
   @override
   String get uri => _uri ??= '';
 
-  /**
-   * The URI of the implementation library to be used if the condition is true.
-   */
+  /// The URI of the implementation library to be used if the condition is true.
   void set uri(String value) {
     this._uri = value;
   }
@@ -6291,10 +6039,8 @@
   @override
   String get value => _value ??= '';
 
-  /**
-   * The value to which the value of the declared variable will be compared,
-   * or `true` if the condition does not include an equality test.
-   */
+  /// The value to which the value of the declared variable will be compared,
+  /// or `true` if the condition does not include an equality test.
   void set value(String value) {
     this._value = value;
   }
@@ -6419,11 +6165,9 @@
   @override
   List<String> get argumentNames => _argumentNames ??= <String>[];
 
-  /**
-   * If there are `m` [arguments] and `n` [argumentNames], then each argument
-   * from [arguments] with index `i` such that `n + i - m >= 0`, should be used
-   * with the name at `n + i - m`.
-   */
+  /// If there are `m` [arguments] and `n` [argumentNames], then each argument
+  /// from [arguments] with index `i` such that `n + i - m >= 0`, should be used
+  /// with the name at `n + i - m`.
   void set argumentNames(List<String> value) {
     this._argumentNames = value;
   }
@@ -6432,10 +6176,8 @@
   List<UnlinkedExprBuilder> get arguments =>
       _arguments ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
-   * invocation.  Otherwise empty.
-   */
+  /// If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
+  /// invocation.  Otherwise empty.
   void set arguments(List<UnlinkedExprBuilder> value) {
     this._arguments = value;
   }
@@ -6443,10 +6185,8 @@
   @override
   UnlinkedExprBuilder get expression => _expression;
 
-  /**
-   * If [kind] is `field`, the expression of the field initializer.
-   * Otherwise `null`.
-   */
+  /// If [kind] is `field`, the expression of the field initializer.
+  /// Otherwise `null`.
   void set expression(UnlinkedExprBuilder value) {
     this._expression = value;
   }
@@ -6455,9 +6195,7 @@
   idl.UnlinkedConstructorInitializerKind get kind =>
       _kind ??= idl.UnlinkedConstructorInitializerKind.field;
 
-  /**
-   * The kind of the constructor initializer (field, redirect, super).
-   */
+  /// The kind of the constructor initializer (field, redirect, super).
   void set kind(idl.UnlinkedConstructorInitializerKind value) {
     this._kind = value;
   }
@@ -6465,12 +6203,10 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * If [kind] is `field`, the name of the field declared in the class.  If
-   * [kind] is `thisInvocation`, the name of the constructor, declared in this
-   * class, to redirect to.  If [kind] is `superInvocation`, the name of the
-   * constructor, declared in the superclass, to invoke.
-   */
+  /// If [kind] is `field`, the name of the field declared in the class.  If
+  /// [kind] is `thisInvocation`, the name of the constructor, declared in this
+  /// class, to redirect to.  If [kind] is `superInvocation`, the name of the
+  /// constructor, declared in the superclass, to invoke.
   void set name(String value) {
     this._name = value;
   }
@@ -6666,12 +6402,10 @@
   @override
   String get text => _text ??= '';
 
-  /**
-   * Text of the documentation comment, with '\r\n' replaced by '\n'.
-   *
-   * References appearing within the doc comment in square brackets are not
-   * specially encoded.
-   */
+  /// Text of the documentation comment, with '\r\n' replaced by '\n'.
+  ///
+  /// References appearing within the doc comment in square brackets are not
+  /// specially encoded.
   void set text(String value) {
     this._text = value;
   }
@@ -6770,9 +6504,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this enum.
-   */
+  /// Annotations for this enum.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -6780,9 +6512,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the enum.
-   */
+  /// Code range of the enum.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -6791,10 +6521,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the enum, or `null` if there is no documentation
-   * comment.
-   */
+  /// Documentation comment for the enum, or `null` if there is no documentation
+  /// comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -6802,9 +6530,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the enum type.
-   */
+  /// Name of the enum type.
   void set name(String value) {
     this._name = value;
   }
@@ -6812,9 +6538,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the enum name relative to the beginning of the file.
-   */
+  /// Offset of the enum name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -6824,9 +6548,7 @@
   List<UnlinkedEnumValueBuilder> get values =>
       _values ??= <UnlinkedEnumValueBuilder>[];
 
-  /**
-   * Values listed in the enum declaration, in declaration order.
-   */
+  /// Values listed in the enum declaration, in declaration order.
   void set values(List<UnlinkedEnumValueBuilder> value) {
     this._values = value;
   }
@@ -7033,9 +6755,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this value.
-   */
+  /// Annotations for this value.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -7044,10 +6764,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the enum value, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the enum value, or `null` if there is no
+  /// documentation comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -7055,9 +6773,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the enumerated value.
-   */
+  /// Name of the enumerated value.
   void set name(String value) {
     this._name = value;
   }
@@ -7065,9 +6781,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the enum value name relative to the beginning of the file.
-   */
+  /// Offset of the enum value name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -7249,9 +6963,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this executable.
-   */
+  /// Annotations for this executable.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -7259,11 +6971,9 @@
   @override
   UnlinkedExprBuilder get bodyExpr => _bodyExpr;
 
-  /**
-   * If this executable's function body is declared using `=>`, the expression
-   * to the right of the `=>`.  May be omitted if neither type inference nor
-   * constant evaluation depends on the function body.
-   */
+  /// If this executable's function body is declared using `=>`, the expression
+  /// to the right of the `=>`.  May be omitted if neither type inference nor
+  /// constant evaluation depends on the function body.
   void set bodyExpr(UnlinkedExprBuilder value) {
     this._bodyExpr = value;
   }
@@ -7271,9 +6981,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the executable.
-   */
+  /// Code range of the executable.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -7282,10 +6990,8 @@
   List<UnlinkedConstructorInitializerBuilder> get constantInitializers =>
       _constantInitializers ??= <UnlinkedConstructorInitializerBuilder>[];
 
-  /**
-   * If a constant [UnlinkedExecutableKind.constructor], the constructor
-   * initializers.  Otherwise empty.
-   */
+  /// If a constant [UnlinkedExecutableKind.constructor], the constructor
+  /// initializers.  Otherwise empty.
   void set constantInitializers(
       List<UnlinkedConstructorInitializerBuilder> value) {
     this._constantInitializers = value;
@@ -7294,14 +7000,12 @@
   @override
   int get constCycleSlot => _constCycleSlot ??= 0;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
-   * a nonzero slot id which is unique within this compilation unit.  If this id
-   * is found in [LinkedUnit.constCycles], then this constructor is part of a
-   * cycle.
-   *
-   * Otherwise, zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
+  /// a nonzero slot id which is unique within this compilation unit.  If this
+  /// id is found in [LinkedUnit.constCycles], then this constructor is part of
+  /// a cycle.
+  ///
+  /// Otherwise, zero.
   void set constCycleSlot(int value) {
     assert(value == null || value >= 0);
     this._constCycleSlot = value;
@@ -7311,10 +7015,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the executable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the executable, or `null` if there is no
+  /// documentation comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -7322,13 +7024,11 @@
   @override
   int get inferredReturnTypeSlot => _inferredReturnTypeSlot ??= 0;
 
-  /**
-   * If this executable's return type is inferable, nonzero slot id
-   * identifying which entry in [LinkedUnit.types] contains the inferred
-   * return type.  If there is no matching entry in [LinkedUnit.types], then
-   * no return type was inferred for this variable, so its static type is
-   * `dynamic`.
-   */
+  /// If this executable's return type is inferable, nonzero slot id
+  /// identifying which entry in [LinkedUnit.types] contains the inferred
+  /// return type.  If there is no matching entry in [LinkedUnit.types], then
+  /// no return type was inferred for this variable, so its static type is
+  /// `dynamic`.
   void set inferredReturnTypeSlot(int value) {
     assert(value == null || value >= 0);
     this._inferredReturnTypeSlot = value;
@@ -7337,9 +7037,7 @@
   @override
   bool get isAbstract => _isAbstract ??= false;
 
-  /**
-   * Indicates whether the executable is declared using the `abstract` keyword.
-   */
+  /// Indicates whether the executable is declared using the `abstract` keyword.
   void set isAbstract(bool value) {
     this._isAbstract = value;
   }
@@ -7347,9 +7045,7 @@
   @override
   bool get isAsynchronous => _isAsynchronous ??= false;
 
-  /**
-   * Indicates whether the executable has body marked as being asynchronous.
-   */
+  /// Indicates whether the executable has body marked as being asynchronous.
   void set isAsynchronous(bool value) {
     this._isAsynchronous = value;
   }
@@ -7357,9 +7053,7 @@
   @override
   bool get isConst => _isConst ??= false;
 
-  /**
-   * Indicates whether the executable is declared using the `const` keyword.
-   */
+  /// Indicates whether the executable is declared using the `const` keyword.
   void set isConst(bool value) {
     this._isConst = value;
   }
@@ -7367,9 +7061,7 @@
   @override
   bool get isExternal => _isExternal ??= false;
 
-  /**
-   * Indicates whether the executable is declared using the `external` keyword.
-   */
+  /// Indicates whether the executable is declared using the `external` keyword.
   void set isExternal(bool value) {
     this._isExternal = value;
   }
@@ -7377,9 +7069,7 @@
   @override
   bool get isFactory => _isFactory ??= false;
 
-  /**
-   * Indicates whether the executable is declared using the `factory` keyword.
-   */
+  /// Indicates whether the executable is declared using the `factory` keyword.
   void set isFactory(bool value) {
     this._isFactory = value;
   }
@@ -7387,9 +7077,7 @@
   @override
   bool get isGenerator => _isGenerator ??= false;
 
-  /**
-   * Indicates whether the executable has body marked as being a generator.
-   */
+  /// Indicates whether the executable has body marked as being a generator.
   void set isGenerator(bool value) {
     this._isGenerator = value;
   }
@@ -7397,9 +7085,7 @@
   @override
   bool get isRedirectedConstructor => _isRedirectedConstructor ??= false;
 
-  /**
-   * Indicates whether the executable is a redirected constructor.
-   */
+  /// Indicates whether the executable is a redirected constructor.
   void set isRedirectedConstructor(bool value) {
     this._isRedirectedConstructor = value;
   }
@@ -7407,13 +7093,11 @@
   @override
   bool get isStatic => _isStatic ??= false;
 
-  /**
-   * Indicates whether the executable is declared using the `static` keyword.
-   *
-   * Note that for top level executables, this flag is false, since they are
-   * not declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the executable is declared using the `static` keyword.
+  ///
+  /// Note that for top level executables, this flag is false, since they are
+  /// not declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   void set isStatic(bool value) {
     this._isStatic = value;
   }
@@ -7422,10 +7106,8 @@
   idl.UnlinkedExecutableKind get kind =>
       _kind ??= idl.UnlinkedExecutableKind.functionOrMethod;
 
-  /**
-   * The kind of the executable (function/method, getter, setter, or
-   * constructor).
-   */
+  /// The kind of the executable (function/method, getter, setter, or
+  /// constructor).
   void set kind(idl.UnlinkedExecutableKind value) {
     this._kind = value;
   }
@@ -7434,9 +7116,7 @@
   List<UnlinkedExecutableBuilder> get localFunctions =>
       _localFunctions ??= <UnlinkedExecutableBuilder>[];
 
-  /**
-   * The list of local functions.
-   */
+  /// The list of local functions.
   void set localFunctions(List<UnlinkedExecutableBuilder> value) {
     this._localFunctions = value;
   }
@@ -7452,11 +7132,9 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the executable.  For setters, this includes the trailing "=".  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the empty string.
-   */
+  /// Name of the executable.  For setters, this includes the trailing "=".  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the empty string.
   void set name(String value) {
     this._name = value;
   }
@@ -7464,10 +7142,8 @@
   @override
   int get nameEnd => _nameEnd ??= 0;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the end of the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the end of the constructor name.  Otherwise zero.
   void set nameEnd(int value) {
     assert(value == null || value >= 0);
     this._nameEnd = value;
@@ -7476,12 +7152,10 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the executable name relative to the beginning of the file.  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the offset of the class name (i.e. the
-   * offset of the second "C" in "class C { C(); }").
-   */
+  /// Offset of the executable name relative to the beginning of the file.  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the offset of the class name (i.e. the
+  /// offset of the second "C" in "class C { C(); }").
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -7491,11 +7165,9 @@
   List<UnlinkedParamBuilder> get parameters =>
       _parameters ??= <UnlinkedParamBuilder>[];
 
-  /**
-   * Parameters of the executable, if any.  Note that getters have no
-   * parameters (hence this will be the empty list), and setters have a single
-   * parameter.
-   */
+  /// Parameters of the executable, if any.  Note that getters have no
+  /// parameters (hence this will be the empty list), and setters have a single
+  /// parameter.
   void set parameters(List<UnlinkedParamBuilder> value) {
     this._parameters = value;
   }
@@ -7503,10 +7175,8 @@
   @override
   int get periodOffset => _periodOffset ??= 0;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the period before the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the period before the constructor name.  Otherwise zero.
   void set periodOffset(int value) {
     assert(value == null || value >= 0);
     this._periodOffset = value;
@@ -7515,10 +7185,8 @@
   @override
   EntityRefBuilder get redirectedConstructor => _redirectedConstructor;
 
-  /**
-   * If [isRedirectedConstructor] and [isFactory] are both `true`, the
-   * constructor to which this constructor redirects; otherwise empty.
-   */
+  /// If [isRedirectedConstructor] and [isFactory] are both `true`, the
+  /// constructor to which this constructor redirects; otherwise empty.
   void set redirectedConstructor(EntityRefBuilder value) {
     this._redirectedConstructor = value;
   }
@@ -7526,11 +7194,9 @@
   @override
   String get redirectedConstructorName => _redirectedConstructorName ??= '';
 
-  /**
-   * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
-   * name of the constructor that this constructor redirects to; otherwise
-   * empty.
-   */
+  /// If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
+  /// name of the constructor that this constructor redirects to; otherwise
+  /// empty.
   void set redirectedConstructorName(String value) {
     this._redirectedConstructorName = value;
   }
@@ -7538,13 +7204,11 @@
   @override
   EntityRefBuilder get returnType => _returnType;
 
-  /**
-   * Declared return type of the executable.  Absent if the executable is a
-   * constructor or the return type is implicit.  Absent for executables
-   * associated with variable initializers and closures, since these
-   * executables may have return types that are not accessible via direct
-   * imports.
-   */
+  /// Declared return type of the executable.  Absent if the executable is a
+  /// constructor or the return type is implicit.  Absent for executables
+  /// associated with variable initializers and closures, since these
+  /// executables may have return types that are not accessible via direct
+  /// imports.
   void set returnType(EntityRefBuilder value) {
     this._returnType = value;
   }
@@ -7553,10 +7217,8 @@
   List<UnlinkedTypeParamBuilder> get typeParameters =>
       _typeParameters ??= <UnlinkedTypeParamBuilder>[];
 
-  /**
-   * Type parameters of the executable, if any.  Empty if support for generic
-   * method syntax is disabled.
-   */
+  /// Type parameters of the executable, if any.  Empty if support for generic
+  /// method syntax is disabled.
   void set typeParameters(List<UnlinkedTypeParamBuilder> value) {
     this._typeParameters = value;
   }
@@ -7564,9 +7226,7 @@
   @override
   int get visibleLength => _visibleLength ??= 0;
 
-  /**
-   * If a local function, the length of the visible range; zero otherwise.
-   */
+  /// If a local function, the length of the visible range; zero otherwise.
   void set visibleLength(int value) {
     assert(value == null || value >= 0);
     this._visibleLength = value;
@@ -7575,9 +7235,7 @@
   @override
   int get visibleOffset => _visibleOffset ??= 0;
 
-  /**
-   * If a local function, the beginning of the visible range; zero otherwise.
-   */
+  /// If a local function, the beginning of the visible range; zero otherwise.
   void set visibleOffset(int value) {
     assert(value == null || value >= 0);
     this._visibleOffset = value;
@@ -8214,9 +7872,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this export directive.
-   */
+  /// Annotations for this export directive.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -8224,9 +7880,7 @@
   @override
   int get offset => _offset ??= 0;
 
-  /**
-   * Offset of the "export" keyword.
-   */
+  /// Offset of the "export" keyword.
   void set offset(int value) {
     assert(value == null || value >= 0);
     this._offset = value;
@@ -8235,10 +7889,8 @@
   @override
   int get uriEnd => _uriEnd ??= 0;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   void set uriEnd(int value) {
     assert(value == null || value >= 0);
     this._uriEnd = value;
@@ -8247,10 +7899,8 @@
   @override
   int get uriOffset => _uriOffset ??= 0;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   void set uriOffset(int value) {
     assert(value == null || value >= 0);
     this._uriOffset = value;
@@ -8399,9 +8049,7 @@
   List<UnlinkedCombinatorBuilder> get combinators =>
       _combinators ??= <UnlinkedCombinatorBuilder>[];
 
-  /**
-   * Combinators contained in this export declaration.
-   */
+  /// Combinators contained in this export declaration.
   void set combinators(List<UnlinkedCombinatorBuilder> value) {
     this._combinators = value;
   }
@@ -8410,10 +8058,8 @@
   List<UnlinkedConfigurationBuilder> get configurations =>
       _configurations ??= <UnlinkedConfigurationBuilder>[];
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   void set configurations(List<UnlinkedConfigurationBuilder> value) {
     this._configurations = value;
   }
@@ -8421,9 +8067,7 @@
   @override
   String get uri => _uri ??= '';
 
-  /**
-   * URI used in the source code to reference the exported library.
-   */
+  /// URI used in the source code to reference the exported library.
   void set uri(String value) {
     this._uri = value;
   }
@@ -8580,9 +8224,7 @@
   List<idl.UnlinkedExprAssignOperator> get assignmentOperators =>
       _assignmentOperators ??= <idl.UnlinkedExprAssignOperator>[];
 
-  /**
-   * Sequence of operators used by assignment operations.
-   */
+  /// Sequence of operators used by assignment operations.
   void set assignmentOperators(List<idl.UnlinkedExprAssignOperator> value) {
     this._assignmentOperators = value;
   }
@@ -8590,9 +8232,7 @@
   @override
   List<double> get doubles => _doubles ??= <double>[];
 
-  /**
-   * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
-   */
+  /// Sequence of 64-bit doubles consumed by the operation `pushDouble`.
   void set doubles(List<double> value) {
     this._doubles = value;
   }
@@ -8600,11 +8240,9 @@
   @override
   List<int> get ints => _ints ??= <int>[];
 
-  /**
-   * Sequence of unsigned 32-bit integers consumed by the operations
-   * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
-   * `makeList`, and `makeMap`.
-   */
+  /// Sequence of unsigned 32-bit integers consumed by the operations
+  /// `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
+  /// `makeList`, and `makeMap`.
   void set ints(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._ints = value;
@@ -8613,10 +8251,8 @@
   @override
   bool get isValidConst => _isValidConst ??= false;
 
-  /**
-   * Indicates whether the expression is a valid potentially constant
-   * expression.
-   */
+  /// Indicates whether the expression is a valid potentially constant
+  /// expression.
   void set isValidConst(bool value) {
     this._isValidConst = value;
   }
@@ -8625,10 +8261,8 @@
   List<idl.UnlinkedExprOperation> get operations =>
       _operations ??= <idl.UnlinkedExprOperation>[];
 
-  /**
-   * Sequence of operations to execute (starting with an empty stack) to form
-   * the constant value.
-   */
+  /// Sequence of operations to execute (starting with an empty stack) to form
+  /// the constant value.
   void set operations(List<idl.UnlinkedExprOperation> value) {
     this._operations = value;
   }
@@ -8636,12 +8270,10 @@
   @override
   List<EntityRefBuilder> get references => _references ??= <EntityRefBuilder>[];
 
-  /**
-   * Sequence of language constructs consumed by the operations
-   * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
-   * that in the case of `pushReference` (and sometimes `invokeConstructor` the
-   * actual entity being referred to may be something other than a type.
-   */
+  /// Sequence of language constructs consumed by the operations
+  /// `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
+  /// that in the case of `pushReference` (and sometimes `invokeConstructor` the
+  /// actual entity being referred to may be something other than a type.
   void set references(List<EntityRefBuilder> value) {
     this._references = value;
   }
@@ -8649,10 +8281,8 @@
   @override
   List<String> get strings => _strings ??= <String>[];
 
-  /**
-   * Sequence of strings consumed by the operations `pushString` and
-   * `invokeConstructor`.
-   */
+  /// Sequence of strings consumed by the operations `pushString` and
+  /// `invokeConstructor`.
   void set strings(List<String> value) {
     this._strings = value;
   }
@@ -8925,9 +8555,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this import declaration.
-   */
+  /// Annotations for this import declaration.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -8936,9 +8564,7 @@
   List<UnlinkedCombinatorBuilder> get combinators =>
       _combinators ??= <UnlinkedCombinatorBuilder>[];
 
-  /**
-   * Combinators contained in this import declaration.
-   */
+  /// Combinators contained in this import declaration.
   void set combinators(List<UnlinkedCombinatorBuilder> value) {
     this._combinators = value;
   }
@@ -8947,10 +8573,8 @@
   List<UnlinkedConfigurationBuilder> get configurations =>
       _configurations ??= <UnlinkedConfigurationBuilder>[];
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   void set configurations(List<UnlinkedConfigurationBuilder> value) {
     this._configurations = value;
   }
@@ -8958,9 +8582,7 @@
   @override
   bool get isDeferred => _isDeferred ??= false;
 
-  /**
-   * Indicates whether the import declaration uses the `deferred` keyword.
-   */
+  /// Indicates whether the import declaration uses the `deferred` keyword.
   void set isDeferred(bool value) {
     this._isDeferred = value;
   }
@@ -8968,9 +8590,7 @@
   @override
   bool get isImplicit => _isImplicit ??= false;
 
-  /**
-   * Indicates whether the import declaration is implicit.
-   */
+  /// Indicates whether the import declaration is implicit.
   void set isImplicit(bool value) {
     this._isImplicit = value;
   }
@@ -8978,10 +8598,8 @@
   @override
   int get offset => _offset ??= 0;
 
-  /**
-   * If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
-   * is true, zero.
-   */
+  /// If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
+  /// is true, zero.
   void set offset(int value) {
     assert(value == null || value >= 0);
     this._offset = value;
@@ -8990,10 +8608,8 @@
   @override
   int get prefixOffset => _prefixOffset ??= 0;
 
-  /**
-   * Offset of the prefix name relative to the beginning of the file, or zero
-   * if there is no prefix.
-   */
+  /// Offset of the prefix name relative to the beginning of the file, or zero
+  /// if there is no prefix.
   void set prefixOffset(int value) {
     assert(value == null || value >= 0);
     this._prefixOffset = value;
@@ -9002,12 +8618,10 @@
   @override
   int get prefixReference => _prefixReference ??= 0;
 
-  /**
-   * Index into [UnlinkedUnit.references] of the prefix declared by this
-   * import declaration, or zero if this import declaration declares no prefix.
-   *
-   * Note that multiple imports can declare the same prefix.
-   */
+  /// Index into [UnlinkedUnit.references] of the prefix declared by this
+  /// import declaration, or zero if this import declaration declares no prefix.
+  ///
+  /// Note that multiple imports can declare the same prefix.
   void set prefixReference(int value) {
     assert(value == null || value >= 0);
     this._prefixReference = value;
@@ -9016,9 +8630,7 @@
   @override
   String get uri => _uri ??= '';
 
-  /**
-   * URI used in the source code to reference the imported library.
-   */
+  /// URI used in the source code to reference the imported library.
   void set uri(String value) {
     this._uri = value;
   }
@@ -9026,10 +8638,8 @@
   @override
   int get uriEnd => _uriEnd ??= 0;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.  If [isImplicit] is true, zero.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.  If [isImplicit] is true, zero.
   void set uriEnd(int value) {
     assert(value == null || value >= 0);
     this._uriEnd = value;
@@ -9038,10 +8648,8 @@
   @override
   int get uriOffset => _uriOffset ??= 0;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.  If [isImplicit] is true, zero.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.  If [isImplicit] is true, zero.
   void set uriOffset(int value) {
     assert(value == null || value >= 0);
     this._uriOffset = value;
@@ -9346,9 +8954,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this parameter.
-   */
+  /// Annotations for this parameter.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -9356,9 +8962,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the parameter.
-   */
+  /// Code range of the parameter.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -9366,10 +8970,8 @@
   @override
   String get defaultValueCode => _defaultValueCode ??= '';
 
-  /**
-   * If the parameter has a default value, the source text of the constant
-   * expression in the default value.  Otherwise the empty string.
-   */
+  /// If the parameter has a default value, the source text of the constant
+  /// expression in the default value.  Otherwise the empty string.
   void set defaultValueCode(String value) {
     this._defaultValueCode = value;
   }
@@ -9377,17 +8979,15 @@
   @override
   int get inferredTypeSlot => _inferredTypeSlot ??= 0;
 
-  /**
-   * If this parameter's type is inferable, nonzero slot id identifying which
-   * entry in [LinkedLibrary.types] contains the inferred type.  If there is no
-   * matching entry in [LinkedLibrary.types], then no type was inferred for
-   * this variable, so its static type is `dynamic`.
-   *
-   * Note that although strong mode considers initializing formals to be
-   * inferable, they are not marked as such in the summary; if their type is
-   * not specified, they always inherit the static type of the corresponding
-   * field.
-   */
+  /// If this parameter's type is inferable, nonzero slot id identifying which
+  /// entry in [LinkedLibrary.types] contains the inferred type.  If there is no
+  /// matching entry in [LinkedLibrary.types], then no type was inferred for
+  /// this variable, so its static type is `dynamic`.
+  ///
+  /// Note that although strong mode considers initializing formals to be
+  /// inferable, they are not marked as such in the summary; if their type is
+  /// not specified, they always inherit the static type of the corresponding
+  /// field.
   void set inferredTypeSlot(int value) {
     assert(value == null || value >= 0);
     this._inferredTypeSlot = value;
@@ -9396,14 +8996,12 @@
   @override
   int get inheritsCovariantSlot => _inheritsCovariantSlot ??= 0;
 
-  /**
-   * If this is a parameter of an instance method, a nonzero slot id which is
-   * unique within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
-   * `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is a parameter of an instance method, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
+  /// `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   void set inheritsCovariantSlot(int value) {
     assert(value == null || value >= 0);
     this._inheritsCovariantSlot = value;
@@ -9412,10 +9010,8 @@
   @override
   UnlinkedExecutableBuilder get initializer => _initializer;
 
-  /**
-   * The synthetic initializer function of the parameter.  Absent if the
-   * variable does not have an initializer.
-   */
+  /// The synthetic initializer function of the parameter.  Absent if the
+  /// variable does not have an initializer.
   void set initializer(UnlinkedExecutableBuilder value) {
     this._initializer = value;
   }
@@ -9423,9 +9019,7 @@
   @override
   bool get isExplicitlyCovariant => _isExplicitlyCovariant ??= false;
 
-  /**
-   * Indicates whether this parameter is explicitly marked as being covariant.
-   */
+  /// Indicates whether this parameter is explicitly marked as being covariant.
   void set isExplicitlyCovariant(bool value) {
     this._isExplicitlyCovariant = value;
   }
@@ -9433,9 +9027,7 @@
   @override
   bool get isFinal => _isFinal ??= false;
 
-  /**
-   * Indicates whether the parameter is declared using the `final` keyword.
-   */
+  /// Indicates whether the parameter is declared using the `final` keyword.
   void set isFinal(bool value) {
     this._isFinal = value;
   }
@@ -9443,16 +9035,14 @@
   @override
   bool get isFunctionTyped => _isFunctionTyped ??= false;
 
-  /**
-   * Indicates whether this is a function-typed parameter. A parameter is
-   * function-typed if the declaration of the parameter has explicit formal
-   * parameters
-   * ```
-   * int functionTyped(int p)
-   * ```
-   * but is not function-typed if it does not, even if the type of the parameter
-   * is a function type.
-   */
+  /// Indicates whether this is a function-typed parameter. A parameter is
+  /// function-typed if the declaration of the parameter has explicit formal
+  /// parameters
+  /// ```
+  /// int functionTyped(int p)
+  /// ```
+  /// but is not function-typed if it does not, even if the type of the
+  /// parameter is a function type.
   void set isFunctionTyped(bool value) {
     this._isFunctionTyped = value;
   }
@@ -9460,10 +9050,8 @@
   @override
   bool get isInitializingFormal => _isInitializingFormal ??= false;
 
-  /**
-   * Indicates whether this is an initializing formal parameter (i.e. it is
-   * declared using `this.` syntax).
-   */
+  /// Indicates whether this is an initializing formal parameter (i.e. it is
+  /// declared using `this.` syntax).
   void set isInitializingFormal(bool value) {
     this._isInitializingFormal = value;
   }
@@ -9471,9 +9059,7 @@
   @override
   idl.UnlinkedParamKind get kind => _kind ??= idl.UnlinkedParamKind.required;
 
-  /**
-   * Kind of the parameter.
-   */
+  /// Kind of the parameter.
   void set kind(idl.UnlinkedParamKind value) {
     this._kind = value;
   }
@@ -9481,9 +9067,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the parameter.
-   */
+  /// Name of the parameter.
   void set name(String value) {
     this._name = value;
   }
@@ -9491,9 +9075,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the parameter name relative to the beginning of the file.
-   */
+  /// Offset of the parameter name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -9503,9 +9085,7 @@
   List<UnlinkedParamBuilder> get parameters =>
       _parameters ??= <UnlinkedParamBuilder>[];
 
-  /**
-   * If [isFunctionTyped] is `true`, the parameters of the function type.
-   */
+  /// If [isFunctionTyped] is `true`, the parameters of the function type.
   void set parameters(List<UnlinkedParamBuilder> value) {
     this._parameters = value;
   }
@@ -9513,11 +9093,9 @@
   @override
   EntityRefBuilder get type => _type;
 
-  /**
-   * If [isFunctionTyped] is `true`, the declared return type.  If
-   * [isFunctionTyped] is `false`, the declared type.  Absent if the type is
-   * implicit.
-   */
+  /// If [isFunctionTyped] is `true`, the declared return type.  If
+  /// [isFunctionTyped] is `false`, the declared type.  Absent if the type is
+  /// implicit.
   void set type(EntityRefBuilder value) {
     this._type = value;
   }
@@ -9525,9 +9103,7 @@
   @override
   int get visibleLength => _visibleLength ??= 0;
 
-  /**
-   * The length of the visible range.
-   */
+  /// The length of the visible range.
   void set visibleLength(int value) {
     assert(value == null || value >= 0);
     this._visibleLength = value;
@@ -9536,9 +9112,7 @@
   @override
   int get visibleOffset => _visibleOffset ??= 0;
 
-  /**
-   * The beginning of the visible range.
-   */
+  /// The beginning of the visible range.
   void set visibleOffset(int value) {
     assert(value == null || value >= 0);
     this._visibleOffset = value;
@@ -9933,9 +9507,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this part declaration.
-   */
+  /// Annotations for this part declaration.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -9943,10 +9515,8 @@
   @override
   int get uriEnd => _uriEnd ??= 0;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   void set uriEnd(int value) {
     assert(value == null || value >= 0);
     this._uriEnd = value;
@@ -9955,10 +9525,8 @@
   @override
   int get uriOffset => _uriOffset ??= 0;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   void set uriOffset(int value) {
     assert(value == null || value >= 0);
     this._uriOffset = value;
@@ -10088,9 +9656,7 @@
   @override
   idl.ReferenceKind get kind => _kind ??= idl.ReferenceKind.classOrEnum;
 
-  /**
-   * The kind of object referred to by the name.
-   */
+  /// The kind of object referred to by the name.
   void set kind(idl.ReferenceKind value) {
     this._kind = value;
   }
@@ -10099,14 +9665,12 @@
   List<UnlinkedPublicNameBuilder> get members =>
       _members ??= <UnlinkedPublicNameBuilder>[];
 
-  /**
-   * If this [UnlinkedPublicName] is a class, the list of members which can be
-   * referenced statically - static fields, static methods, and constructors.
-   * Otherwise empty.
-   *
-   * Unnamed constructors are not included since they do not constitute a
-   * separate name added to any namespace.
-   */
+  /// If this [UnlinkedPublicName] is a class, the list of members which can be
+  /// referenced statically - static fields, static methods, and constructors.
+  /// Otherwise empty.
+  ///
+  /// Unnamed constructors are not included since they do not constitute a
+  /// separate name added to any namespace.
   void set members(List<UnlinkedPublicNameBuilder> value) {
     this._members = value;
   }
@@ -10114,9 +9678,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * The name itself.
-   */
+  /// The name itself.
   void set name(String value) {
     this._name = value;
   }
@@ -10124,10 +9686,8 @@
   @override
   int get numTypeParameters => _numTypeParameters ??= 0;
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it accepts.  Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it accepts.  Otherwise zero.
   void set numTypeParameters(int value) {
     assert(value == null || value >= 0);
     this._numTypeParameters = value;
@@ -10282,9 +9842,7 @@
   List<UnlinkedExportPublicBuilder> get exports =>
       _exports ??= <UnlinkedExportPublicBuilder>[];
 
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   void set exports(List<UnlinkedExportPublicBuilder> value) {
     this._exports = value;
   }
@@ -10293,12 +9851,10 @@
   List<UnlinkedPublicNameBuilder> get names =>
       _names ??= <UnlinkedPublicNameBuilder>[];
 
-  /**
-   * Public names defined in the compilation unit.
-   *
-   * TODO(paulberry): consider sorting these names to reduce unnecessary
-   * relinking.
-   */
+  /// Public names defined in the compilation unit.
+  ///
+  /// TODO(paulberry): consider sorting these names to reduce unnecessary
+  /// relinking.
   void set names(List<UnlinkedPublicNameBuilder> value) {
     this._names = value;
   }
@@ -10306,9 +9862,7 @@
   @override
   List<String> get parts => _parts ??= <String>[];
 
-  /**
-   * URIs referenced by part declarations in the compilation unit.
-   */
+  /// URIs referenced by part declarations in the compilation unit.
   void set parts(List<String> value) {
     this._parts = value;
   }
@@ -10477,11 +10031,9 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   * For the pseudo-type `bottom`, the string is "*bottom*".
-   */
+  /// Name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
+  /// For the pseudo-type `bottom`, the string is "*bottom*".
   void set name(String value) {
     this._name = value;
   }
@@ -10489,14 +10041,12 @@
   @override
   int get prefixReference => _prefixReference ??= 0;
 
-  /**
-   * Prefix used to refer to the entity, or zero if no prefix is used.  This is
-   * an index into [UnlinkedUnit.references].
-   *
-   * Prefix references must always point backward; that is, for all i, if
-   * UnlinkedUnit.references[i].prefixReference != 0, then
-   * UnlinkedUnit.references[i].prefixReference < i.
-   */
+  /// Prefix used to refer to the entity, or zero if no prefix is used.  This is
+  /// an index into [UnlinkedUnit.references].
+  ///
+  /// Prefix references must always point backward; that is, for all i, if
+  /// UnlinkedUnit.references[i].prefixReference != 0, then
+  /// UnlinkedUnit.references[i].prefixReference < i.
   void set prefixReference(int value) {
     assert(value == null || value >= 0);
     this._prefixReference = value;
@@ -10604,9 +10154,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this typedef.
-   */
+  /// Annotations for this typedef.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -10614,9 +10162,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the typedef.
-   */
+  /// Code range of the typedef.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -10625,10 +10171,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the typedef, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the typedef, or `null` if there is no
+  /// documentation comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -10636,9 +10180,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the typedef.
-   */
+  /// Name of the typedef.
   void set name(String value) {
     this._name = value;
   }
@@ -10646,9 +10188,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the typedef name relative to the beginning of the file.
-   */
+  /// Offset of the typedef name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -10658,9 +10198,7 @@
   List<UnlinkedParamBuilder> get parameters =>
       _parameters ??= <UnlinkedParamBuilder>[];
 
-  /**
-   * Parameters of the executable, if any.
-   */
+  /// Parameters of the executable, if any.
   void set parameters(List<UnlinkedParamBuilder> value) {
     this._parameters = value;
   }
@@ -10668,11 +10206,9 @@
   @override
   EntityRefBuilder get returnType => _returnType;
 
-  /**
-   * If [style] is [TypedefStyle.functionType], the return type of the typedef.
-   * If [style] is [TypedefStyle.genericFunctionType], the function type being
-   * defined.
-   */
+  /// If [style] is [TypedefStyle.functionType], the return type of the typedef.
+  /// If [style] is [TypedefStyle.genericFunctionType], the function type being
+  /// defined.
   void set returnType(EntityRefBuilder value) {
     this._returnType = value;
   }
@@ -10680,9 +10216,7 @@
   @override
   idl.TypedefStyle get style => _style ??= idl.TypedefStyle.functionType;
 
-  /**
-   * The style of the typedef.
-   */
+  /// The style of the typedef.
   void set style(idl.TypedefStyle value) {
     this._style = value;
   }
@@ -10691,9 +10225,7 @@
   List<UnlinkedTypeParamBuilder> get typeParameters =>
       _typeParameters ??= <UnlinkedTypeParamBuilder>[];
 
-  /**
-   * Type parameters of the typedef, if any.
-   */
+  /// Type parameters of the typedef, if any.
   void set typeParameters(List<UnlinkedTypeParamBuilder> value) {
     this._typeParameters = value;
   }
@@ -10972,9 +10504,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this type parameter.
-   */
+  /// Annotations for this type parameter.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -10982,10 +10512,8 @@
   @override
   EntityRefBuilder get bound => _bound;
 
-  /**
-   * Bound of the type parameter, if a bound is explicitly declared.  Otherwise
-   * null.
-   */
+  /// Bound of the type parameter, if a bound is explicitly declared.  Otherwise
+  /// null.
   void set bound(EntityRefBuilder value) {
     this._bound = value;
   }
@@ -10993,9 +10521,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the type parameter.
-   */
+  /// Code range of the type parameter.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -11003,9 +10529,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the type parameter.
-   */
+  /// Name of the type parameter.
   void set name(String value) {
     this._name = value;
   }
@@ -11013,9 +10537,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the type parameter name relative to the beginning of the file.
-   */
+  /// Offset of the type parameter name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -11207,11 +10729,9 @@
   @override
   List<int> get apiSignature => _apiSignature ??= <int>[];
 
-  /**
-   * MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
-   * including this one) as 16 unsigned 8-bit integer values.  This can be used
-   * to identify when the API of a unit may have changed.
-   */
+  /// MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
+  /// including this one) as 16 unsigned 8-bit integer values.  This can be used
+  /// to identify when the API of a unit may have changed.
   void set apiSignature(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._apiSignature = value;
@@ -11221,9 +10741,7 @@
   List<UnlinkedClassBuilder> get classes =>
       _classes ??= <UnlinkedClassBuilder>[];
 
-  /**
-   * Classes declared in the compilation unit.
-   */
+  /// Classes declared in the compilation unit.
   void set classes(List<UnlinkedClassBuilder> value) {
     this._classes = value;
   }
@@ -11231,9 +10749,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the unit.
-   */
+  /// Code range of the unit.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -11241,9 +10757,7 @@
   @override
   List<UnlinkedEnumBuilder> get enums => _enums ??= <UnlinkedEnumBuilder>[];
 
-  /**
-   * Enums declared in the compilation unit.
-   */
+  /// Enums declared in the compilation unit.
   void set enums(List<UnlinkedEnumBuilder> value) {
     this._enums = value;
   }
@@ -11252,10 +10766,8 @@
   List<UnlinkedExecutableBuilder> get executables =>
       _executables ??= <UnlinkedExecutableBuilder>[];
 
-  /**
-   * Top level executable objects (functions, getters, and setters) declared in
-   * the compilation unit.
-   */
+  /// Top level executable objects (functions, getters, and setters) declared in
+  /// the compilation unit.
   void set executables(List<UnlinkedExecutableBuilder> value) {
     this._executables = value;
   }
@@ -11264,9 +10776,7 @@
   List<UnlinkedExportNonPublicBuilder> get exports =>
       _exports ??= <UnlinkedExportNonPublicBuilder>[];
 
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   void set exports(List<UnlinkedExportNonPublicBuilder> value) {
     this._exports = value;
   }
@@ -11279,9 +10789,7 @@
   List<UnlinkedImportBuilder> get imports =>
       _imports ??= <UnlinkedImportBuilder>[];
 
-  /**
-   * Import declarations in the compilation unit.
-   */
+  /// Import declarations in the compilation unit.
   void set imports(List<UnlinkedImportBuilder> value) {
     this._imports = value;
   }
@@ -11289,9 +10797,7 @@
   @override
   bool get isPartOf => _isPartOf ??= false;
 
-  /**
-   * Indicates whether the unit contains a "part of" declaration.
-   */
+  /// Indicates whether the unit contains a "part of" declaration.
   void set isPartOf(bool value) {
     this._isPartOf = value;
   }
@@ -11300,10 +10806,8 @@
   List<UnlinkedExprBuilder> get libraryAnnotations =>
       _libraryAnnotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for the library declaration, or the empty list if there is no
-   * library declaration.
-   */
+  /// Annotations for the library declaration, or the empty list if there is no
+  /// library declaration.
   void set libraryAnnotations(List<UnlinkedExprBuilder> value) {
     this._libraryAnnotations = value;
   }
@@ -11312,10 +10816,8 @@
   UnlinkedDocumentationCommentBuilder get libraryDocumentationComment =>
       _libraryDocumentationComment;
 
-  /**
-   * Documentation comment for the library, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the library, or `null` if there is no
+  /// documentation comment.
   void set libraryDocumentationComment(
       UnlinkedDocumentationCommentBuilder value) {
     this._libraryDocumentationComment = value;
@@ -11324,9 +10826,7 @@
   @override
   String get libraryName => _libraryName ??= '';
 
-  /**
-   * Name of the library (from a "library" declaration, if present).
-   */
+  /// Name of the library (from a "library" declaration, if present).
   void set libraryName(String value) {
     this._libraryName = value;
   }
@@ -11334,10 +10834,8 @@
   @override
   int get libraryNameLength => _libraryNameLength ??= 0;
 
-  /**
-   * Length of the library name as it appears in the source code (or 0 if the
-   * library has no name).
-   */
+  /// Length of the library name as it appears in the source code (or 0 if the
+  /// library has no name).
   void set libraryNameLength(int value) {
     assert(value == null || value >= 0);
     this._libraryNameLength = value;
@@ -11346,10 +10844,8 @@
   @override
   int get libraryNameOffset => _libraryNameOffset ??= 0;
 
-  /**
-   * Offset of the library name relative to the beginning of the file (or 0 if
-   * the library has no name).
-   */
+  /// Offset of the library name relative to the beginning of the file (or 0 if
+  /// the library has no name).
   void set libraryNameOffset(int value) {
     assert(value == null || value >= 0);
     this._libraryNameOffset = value;
@@ -11358,9 +10854,7 @@
   @override
   List<int> get lineStarts => _lineStarts ??= <int>[];
 
-  /**
-   * Offsets of the first character of each line in the source code.
-   */
+  /// Offsets of the first character of each line in the source code.
   void set lineStarts(List<int> value) {
     assert(value == null || value.every((e) => e >= 0));
     this._lineStarts = value;
@@ -11369,9 +10863,7 @@
   @override
   List<UnlinkedClassBuilder> get mixins => _mixins ??= <UnlinkedClassBuilder>[];
 
-  /**
-   * Mixins declared in the compilation unit.
-   */
+  /// Mixins declared in the compilation unit.
   void set mixins(List<UnlinkedClassBuilder> value) {
     this._mixins = value;
   }
@@ -11379,9 +10871,7 @@
   @override
   List<UnlinkedPartBuilder> get parts => _parts ??= <UnlinkedPartBuilder>[];
 
-  /**
-   * Part declarations in the compilation unit.
-   */
+  /// Part declarations in the compilation unit.
   void set parts(List<UnlinkedPartBuilder> value) {
     this._parts = value;
   }
@@ -11389,9 +10879,7 @@
   @override
   UnlinkedPublicNamespaceBuilder get publicNamespace => _publicNamespace;
 
-  /**
-   * Unlinked public namespace of this compilation unit.
-   */
+  /// Unlinked public namespace of this compilation unit.
   void set publicNamespace(UnlinkedPublicNamespaceBuilder value) {
     this._publicNamespace = value;
   }
@@ -11400,13 +10888,11 @@
   List<UnlinkedReferenceBuilder> get references =>
       _references ??= <UnlinkedReferenceBuilder>[];
 
-  /**
-   * Top level and prefixed names referred to by this compilation unit.  The
-   * zeroth element of this array is always populated and is used to represent
-   * the absence of a reference in places where a reference is optional (for
-   * example [UnlinkedReference.prefixReference or
-   * UnlinkedImport.prefixReference]).
-   */
+  /// Top level and prefixed names referred to by this compilation unit.  The
+  /// zeroth element of this array is always populated and is used to represent
+  /// the absence of a reference in places where a reference is optional (for
+  /// example [UnlinkedReference.prefixReference or
+  /// UnlinkedImport.prefixReference]).
   void set references(List<UnlinkedReferenceBuilder> value) {
     this._references = value;
   }
@@ -11415,9 +10901,7 @@
   List<UnlinkedTypedefBuilder> get typedefs =>
       _typedefs ??= <UnlinkedTypedefBuilder>[];
 
-  /**
-   * Typedefs declared in the compilation unit.
-   */
+  /// Typedefs declared in the compilation unit.
   void set typedefs(List<UnlinkedTypedefBuilder> value) {
     this._typedefs = value;
   }
@@ -11426,9 +10910,7 @@
   List<UnlinkedVariableBuilder> get variables =>
       _variables ??= <UnlinkedVariableBuilder>[];
 
-  /**
-   * Top level variables declared in the compilation unit.
-   */
+  /// Top level variables declared in the compilation unit.
   void set variables(List<UnlinkedVariableBuilder> value) {
     this._variables = value;
   }
@@ -12047,9 +11529,7 @@
   List<UnlinkedExprBuilder> get annotations =>
       _annotations ??= <UnlinkedExprBuilder>[];
 
-  /**
-   * Annotations for this variable.
-   */
+  /// Annotations for this variable.
   void set annotations(List<UnlinkedExprBuilder> value) {
     this._annotations = value;
   }
@@ -12057,9 +11537,7 @@
   @override
   CodeRangeBuilder get codeRange => _codeRange;
 
-  /**
-   * Code range of the variable.
-   */
+  /// Code range of the variable.
   void set codeRange(CodeRangeBuilder value) {
     this._codeRange = value;
   }
@@ -12068,10 +11546,8 @@
   UnlinkedDocumentationCommentBuilder get documentationComment =>
       _documentationComment;
 
-  /**
-   * Documentation comment for the variable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the variable, or `null` if there is no
+  /// documentation comment.
   void set documentationComment(UnlinkedDocumentationCommentBuilder value) {
     this._documentationComment = value;
   }
@@ -12079,12 +11555,10 @@
   @override
   int get inferredTypeSlot => _inferredTypeSlot ??= 0;
 
-  /**
-   * If this variable is inferable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the inferred type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then no type was
-   * inferred for this variable, so its static type is `dynamic`.
-   */
+  /// If this variable is inferable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the inferred type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then no type was
+  /// inferred for this variable, so its static type is `dynamic`.
   void set inferredTypeSlot(int value) {
     assert(value == null || value >= 0);
     this._inferredTypeSlot = value;
@@ -12093,14 +11567,12 @@
   @override
   int get inheritsCovariantSlot => _inheritsCovariantSlot ??= 0;
 
-  /**
-   * If this is an instance non-final field, a nonzero slot id which is unique
-   * within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then the parameter of the
-   * synthetic setter inherits `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is an instance non-final field, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then the parameter of the
+  /// synthetic setter inherits `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   void set inheritsCovariantSlot(int value) {
     assert(value == null || value >= 0);
     this._inheritsCovariantSlot = value;
@@ -12109,10 +11581,8 @@
   @override
   UnlinkedExecutableBuilder get initializer => _initializer;
 
-  /**
-   * The synthetic initializer function of the variable.  Absent if the variable
-   * does not have an initializer.
-   */
+  /// The synthetic initializer function of the variable.  Absent if the
+  /// variable does not have an initializer.
   void set initializer(UnlinkedExecutableBuilder value) {
     this._initializer = value;
   }
@@ -12120,9 +11590,7 @@
   @override
   bool get isConst => _isConst ??= false;
 
-  /**
-   * Indicates whether the variable is declared using the `const` keyword.
-   */
+  /// Indicates whether the variable is declared using the `const` keyword.
   void set isConst(bool value) {
     this._isConst = value;
   }
@@ -12130,10 +11598,8 @@
   @override
   bool get isCovariant => _isCovariant ??= false;
 
-  /**
-   * Indicates whether this variable is declared using the `covariant` keyword.
-   * This should be false for everything except instance fields.
-   */
+  /// Indicates whether this variable is declared using the `covariant` keyword.
+  /// This should be false for everything except instance fields.
   void set isCovariant(bool value) {
     this._isCovariant = value;
   }
@@ -12141,9 +11607,7 @@
   @override
   bool get isFinal => _isFinal ??= false;
 
-  /**
-   * Indicates whether the variable is declared using the `final` keyword.
-   */
+  /// Indicates whether the variable is declared using the `final` keyword.
   void set isFinal(bool value) {
     this._isFinal = value;
   }
@@ -12151,13 +11615,11 @@
   @override
   bool get isStatic => _isStatic ??= false;
 
-  /**
-   * Indicates whether the variable is declared using the `static` keyword.
-   *
-   * Note that for top level variables, this flag is false, since they are not
-   * declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the variable is declared using the `static` keyword.
+  ///
+  /// Note that for top level variables, this flag is false, since they are not
+  /// declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   void set isStatic(bool value) {
     this._isStatic = value;
   }
@@ -12165,9 +11627,7 @@
   @override
   String get name => _name ??= '';
 
-  /**
-   * Name of the variable.
-   */
+  /// Name of the variable.
   void set name(String value) {
     this._name = value;
   }
@@ -12175,9 +11635,7 @@
   @override
   int get nameOffset => _nameOffset ??= 0;
 
-  /**
-   * Offset of the variable name relative to the beginning of the file.
-   */
+  /// Offset of the variable name relative to the beginning of the file.
   void set nameOffset(int value) {
     assert(value == null || value >= 0);
     this._nameOffset = value;
@@ -12186,14 +11644,12 @@
   @override
   int get propagatedTypeSlot => _propagatedTypeSlot ??= 0;
 
-  /**
-   * If this variable is propagable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the propagated type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then this variable's
-   * propagated type is the same as its declared type.
-   *
-   * Non-propagable variables have a [propagatedTypeSlot] of zero.
-   */
+  /// If this variable is propagable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the propagated type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then this variable's
+  /// propagated type is the same as its declared type.
+  ///
+  /// Non-propagable variables have a [propagatedTypeSlot] of zero.
   void set propagatedTypeSlot(int value) {
     assert(value == null || value >= 0);
     this._propagatedTypeSlot = value;
@@ -12202,9 +11658,7 @@
   @override
   EntityRefBuilder get type => _type;
 
-  /**
-   * Declared type of the variable.  Absent if the type is implicit.
-   */
+  /// Declared type of the variable.  Absent if the type is implicit.
   void set type(EntityRefBuilder value) {
     this._type = value;
   }
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index 0f70322..6d76a1c 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -6,238 +6,154 @@
 // To regenerate the file, use the script "pkg/analyzer/tool/generate_files".
 
 
-/**
- * Enum used to indicate the kind of an entity reference.
- */
+/// Enum used to indicate the kind of an entity reference.
 enum EntityRefKind : byte {
-  /**
-   * The entity represents a named type.
-   */
+  /// The entity represents a named type.
   named,
 
-  /**
-   * The entity represents a generic function type.
-   */
+  /// The entity represents a generic function type.
   genericFunctionType,
 
-  /**
-   * The entity represents a function type that was synthesized by a LUB
-   * computation.
-   */
+  /// The entity represents a function type that was synthesized by a LUB
+  /// computation.
   syntheticFunction
 }
 
-/**
- * Enum used to indicate the kind of a name in index.
- */
+/// Enum used to indicate the kind of a name in index.
 enum IndexNameKind : byte {
-  /**
-   * A top-level element.
-   */
+  /// A top-level element.
   topLevel,
 
-  /**
-   * A class member.
-   */
+  /// A class member.
   classMember
 }
 
-/**
- * Enum used to indicate the kind of an index relation.
- */
+/// Enum used to indicate the kind of an index relation.
 enum IndexRelationKind : byte {
-  /**
-   * Left: class.
-   *   Is ancestor of (is extended or implemented, directly or indirectly).
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is ancestor of (is extended or implemented, directly or indirectly).
+  /// Right: other class declaration.
   IS_ANCESTOR_OF,
 
-  /**
-   * Left: class.
-   *   Is extended by.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is extended by.
+  /// Right: other class declaration.
   IS_EXTENDED_BY,
 
-  /**
-   * Left: class.
-   *   Is implemented by.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is implemented by.
+  /// Right: other class declaration.
   IS_IMPLEMENTED_BY,
 
-  /**
-   * Left: class.
-   *   Is mixed into.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is mixed into.
+  /// Right: other class declaration.
   IS_MIXED_IN_BY,
 
-  /**
-   * Left: method, property accessor, function, variable.
-   *   Is invoked at.
-   * Right: location.
-   */
+  /// Left: method, property accessor, function, variable.
+  ///   Is invoked at.
+  /// Right: location.
   IS_INVOKED_BY,
 
-  /**
-   * Left: any element.
-   *   Is referenced (and not invoked, read/written) at.
-   * Right: location.
-   */
+  /// Left: any element.
+  ///   Is referenced (and not invoked, read/written) at.
+  /// Right: location.
   IS_REFERENCED_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is read at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is read at.
+  /// Right: location.
   IS_READ_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is both read and written at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is both read and written at.
+  /// Right: location.
   IS_READ_WRITTEN_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is written at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is written at.
+  /// Right: location.
   IS_WRITTEN_BY
 }
 
-/**
- * When we need to reference a synthetic element in [PackageIndex] we use a
- * value of this enum to specify which kind of the synthetic element we
- * actually reference.
- */
+/// When we need to reference a synthetic element in [PackageIndex] we use a
+/// value of this enum to specify which kind of the synthetic element we
+/// actually reference.
 enum IndexSyntheticElementKind : byte {
-  /**
-   * Not a synthetic element.
-   */
+  /// Not a synthetic element.
   notSynthetic,
 
-  /**
-   * The unnamed synthetic constructor a class element.
-   */
+  /// The unnamed synthetic constructor a class element.
   constructor,
 
-  /**
-   * The synthetic field element.
-   */
+  /// The synthetic field element.
   field,
 
-  /**
-   * The synthetic getter of a property introducing element.
-   */
+  /// The synthetic getter of a property introducing element.
   getter,
 
-  /**
-   * The synthetic setter of a property introducing element.
-   */
+  /// The synthetic setter of a property introducing element.
   setter,
 
-  /**
-   * The synthetic top-level variable element.
-   */
+  /// The synthetic top-level variable element.
   topLevelVariable,
 
-  /**
-   * The synthetic `loadLibrary` element.
-   */
+  /// The synthetic `loadLibrary` element.
   loadLibrary,
 
-  /**
-   * The synthetic `index` getter of an enum.
-   */
+  /// The synthetic `index` getter of an enum.
   enumIndex,
 
-  /**
-   * The synthetic `values` getter of an enum.
-   */
+  /// The synthetic `values` getter of an enum.
   enumValues,
 
-  /**
-   * The containing unit itself.
-   */
+  /// The containing unit itself.
   unit
 }
 
-/**
- * Enum used to indicate the kind of entity referred to by a
- * [LinkedReference].
- */
+/// Enum used to indicate the kind of entity referred to by a
+/// [LinkedReference].
 enum ReferenceKind : byte {
-  /**
-   * The entity is a class or enum.
-   */
+  /// The entity is a class or enum.
   classOrEnum,
 
-  /**
-   * The entity is a constructor.
-   */
+  /// The entity is a constructor.
   constructor,
 
-  /**
-   * The entity is a getter or setter inside a class.  Note: this is used in
-   * the case where a constant refers to a static const declared inside a
-   * class.
-   */
+  /// The entity is a getter or setter inside a class.  Note: this is used in
+  /// the case where a constant refers to a static const declared inside a
+  /// class.
   propertyAccessor,
 
-  /**
-   * The entity is a method.
-   */
+  /// The entity is a method.
   method,
 
-  /**
-   * The entity is a typedef.
-   */
+  /// The entity is a typedef.
   typedef,
 
-  /**
-   * The entity is a local function.
-   */
+  /// The entity is a local function.
   function,
 
-  /**
-   * The entity is a local variable.
-   */
+  /// The entity is a local variable.
   variable,
 
-  /**
-   * The entity is a top level function.
-   */
+  /// The entity is a top level function.
   topLevelFunction,
 
-  /**
-   * The entity is a top level getter or setter.
-   */
+  /// The entity is a top level getter or setter.
   topLevelPropertyAccessor,
 
-  /**
-   * The entity is a prefix.
-   */
+  /// The entity is a prefix.
   prefix,
 
-  /**
-   * The entity being referred to does not exist.
-   */
+  /// The entity being referred to does not exist.
   unresolved,
 
-  /**
-   * The entity is a typedef expressed using generic function type syntax.
-   */
+  /// The entity is a typedef expressed using generic function type syntax.
   genericFunctionTypedef
 }
 
-/**
- * Enum used to indicate the kind of the error during top-level inference.
- */
+/// Enum used to indicate the kind of the error during top-level inference.
 enum TopLevelInferenceErrorKind : byte {
   assignment,
 
@@ -252,2731 +168,1884 @@
   overrideConflictParameterType
 }
 
-/**
- * Enum used to indicate the style of a typedef.
- */
+/// Enum used to indicate the style of a typedef.
 enum TypedefStyle : byte {
-  /**
-   * A typedef that defines a non-generic function type. The syntax is
-   * ```
-   * 'typedef' returnType? identifier typeParameters? formalParameterList ';'
-   * ```
-   * The typedef can have type parameters associated with it, but the function
-   * type that results from applying type arguments does not.
-   */
+  /// A typedef that defines a non-generic function type. The syntax is
+  /// ```
+  /// 'typedef' returnType? identifier typeParameters? formalParameterList ';'
+  /// ```
+  /// The typedef can have type parameters associated with it, but the function
+  /// type that results from applying type arguments does not.
   functionType,
 
-  /**
-   * A typedef expressed using generic function type syntax. The syntax is
-   * ```
-   * typeAlias ::=
-   *     'typedef' identifier typeParameters? '=' genericFunctionType ';'
-   * genericFunctionType ::=
-   *     returnType? 'Function' typeParameters? parameterTypeList
-   * ```
-   * Both the typedef itself and the function type that results from applying
-   * type arguments can have type parameters.
-   */
+  /// A typedef expressed using generic function type syntax. The syntax is
+  /// ```
+  /// typeAlias ::=
+  ///     'typedef' identifier typeParameters? '=' genericFunctionType ';'
+  /// genericFunctionType ::=
+  ///     returnType? 'Function' typeParameters? parameterTypeList
+  /// ```
+  /// Both the typedef itself and the function type that results from applying
+  /// type arguments can have type parameters.
   genericFunctionType
 }
 
-/**
- * Enum used to indicate the kind of an constructor initializer.
- */
+/// Enum used to indicate the kind of an constructor initializer.
 enum UnlinkedConstructorInitializerKind : byte {
-  /**
-   * Initialization of a field.
-   */
+  /// Initialization of a field.
   field,
 
-  /**
-   * Invocation of a constructor in the same class.
-   */
+  /// Invocation of a constructor in the same class.
   thisInvocation,
 
-  /**
-   * Invocation of a superclass' constructor.
-   */
+  /// Invocation of a superclass' constructor.
   superInvocation,
 
-  /**
-   * Invocation of `assert`.
-   */
+  /// Invocation of `assert`.
   assertInvocation
 }
 
-/**
- * Enum used to indicate the kind of an executable.
- */
+/// Enum used to indicate the kind of an executable.
 enum UnlinkedExecutableKind : byte {
-  /**
-   * Executable is a function or method.
-   */
+  /// Executable is a function or method.
   functionOrMethod,
 
-  /**
-   * Executable is a getter.
-   */
+  /// Executable is a getter.
   getter,
 
-  /**
-   * Executable is a setter.
-   */
+  /// Executable is a setter.
   setter,
 
-  /**
-   * Executable is a constructor.
-   */
+  /// Executable is a constructor.
   constructor
 }
 
-/**
- * Enum representing the various kinds of assignment operations combined
- * with:
- *    [UnlinkedExprOperation.assignToRef],
- *    [UnlinkedExprOperation.assignToProperty],
- *    [UnlinkedExprOperation.assignToIndex].
- */
+/// Enum representing the various kinds of assignment operations combined
+/// with:
+///    [UnlinkedExprOperation.assignToRef],
+///    [UnlinkedExprOperation.assignToProperty],
+///    [UnlinkedExprOperation.assignToIndex].
 enum UnlinkedExprAssignOperator : byte {
-  /**
-   * Perform simple assignment `target = operand`.
-   */
+  /// Perform simple assignment `target = operand`.
   assign,
 
-  /**
-   * Perform `target ??= operand`.
-   */
+  /// Perform `target ??= operand`.
   ifNull,
 
-  /**
-   * Perform `target *= operand`.
-   */
+  /// Perform `target *= operand`.
   multiply,
 
-  /**
-   * Perform `target /= operand`.
-   */
+  /// Perform `target /= operand`.
   divide,
 
-  /**
-   * Perform `target ~/= operand`.
-   */
+  /// Perform `target ~/= operand`.
   floorDivide,
 
-  /**
-   * Perform `target %= operand`.
-   */
+  /// Perform `target %= operand`.
   modulo,
 
-  /**
-   * Perform `target += operand`.
-   */
+  /// Perform `target += operand`.
   plus,
 
-  /**
-   * Perform `target -= operand`.
-   */
+  /// Perform `target -= operand`.
   minus,
 
-  /**
-   * Perform `target <<= operand`.
-   */
+  /// Perform `target <<= operand`.
   shiftLeft,
 
-  /**
-   * Perform `target >>= operand`.
-   */
+  /// Perform `target >>= operand`.
   shiftRight,
 
-  /**
-   * Perform `target &= operand`.
-   */
+  /// Perform `target &= operand`.
   bitAnd,
 
-  /**
-   * Perform `target ^= operand`.
-   */
+  /// Perform `target ^= operand`.
   bitXor,
 
-  /**
-   * Perform `target |= operand`.
-   */
+  /// Perform `target |= operand`.
   bitOr,
 
-  /**
-   * Perform `++target`.
-   */
+  /// Perform `++target`.
   prefixIncrement,
 
-  /**
-   * Perform `--target`.
-   */
+  /// Perform `--target`.
   prefixDecrement,
 
-  /**
-   * Perform `target++`.
-   */
+  /// Perform `target++`.
   postfixIncrement,
 
-  /**
-   * Perform `target++`.
-   */
+  /// Perform `target++`.
   postfixDecrement
 }
 
-/**
- * Enum representing the various kinds of operations which may be performed to
- * in an expression.  These options are assumed to execute in the
- * context of a stack which is initially empty.
- */
+/// Enum representing the various kinds of operations which may be performed to
+/// in an expression.  These options are assumed to execute in the
+/// context of a stack which is initially empty.
 enum UnlinkedExprOperation : byte {
-  /**
-   * Push the next value from [UnlinkedExpr.ints] (a 32-bit unsigned integer)
-   * onto the stack.
-   *
-   * Note that Dart supports integers larger than 32 bits; these are
-   * represented by composing 32-bit values using the [pushLongInt] operation.
-   */
+  /// Push the next value from [UnlinkedExpr.ints] (a 32-bit unsigned integer)
+  /// onto the stack.
+  ///
+  /// Note that Dart supports integers larger than 32 bits; these are
+  /// represented by composing 32-bit values using the [pushLongInt] operation.
   pushInt,
 
-  /**
-   * Get the number of components from [UnlinkedExpr.ints], then do this number
-   * of times the following operations: multiple the current value by 2^32, "or"
-   * it with the next value in [UnlinkedExpr.ints]. The initial value is zero.
-   * Push the result into the stack.
-   */
+  /// Get the number of components from [UnlinkedExpr.ints], then do this number
+  /// of times the following operations: multiple the current value by 2^32,
+  /// "or" it with the next value in [UnlinkedExpr.ints]. The initial value is
+  /// zero. Push the result into the stack.
   pushLongInt,
 
-  /**
-   * Push the next value from [UnlinkedExpr.doubles] (a double precision
-   * floating point value) onto the stack.
-   */
+  /// Push the next value from [UnlinkedExpr.doubles] (a double precision
+  /// floating point value) onto the stack.
   pushDouble,
 
-  /**
-   * Push the constant `true` onto the stack.
-   */
+  /// Push the constant `true` onto the stack.
   pushTrue,
 
-  /**
-   * Push the constant `false` onto the stack.
-   */
+  /// Push the constant `false` onto the stack.
   pushFalse,
 
-  /**
-   * Push the next value from [UnlinkedExpr.strings] onto the stack.
-   */
+  /// Push the next value from [UnlinkedExpr.strings] onto the stack.
   pushString,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), convert them to strings (if they aren't already),
-   * concatenate them into a single string, and push it back onto the stack.
-   *
-   * This operation is used to represent constants whose value is a literal
-   * string containing string interpolations.
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), convert them to strings (if they aren't already),
+  /// concatenate them into a single string, and push it back onto the stack.
+  ///
+  /// This operation is used to represent constants whose value is a literal
+  /// string containing string interpolations.
   concatenate,
 
-  /**
-   * Get the next value from [UnlinkedExpr.strings], convert it to a symbol,
-   * and push it onto the stack.
-   */
+  /// Get the next value from [UnlinkedExpr.strings], convert it to a symbol,
+  /// and push it onto the stack.
   makeSymbol,
 
-  /**
-   * Push the constant `null` onto the stack.
-   */
+  /// Push the constant `null` onto the stack.
   pushNull,
 
-  /**
-   * Push the value of the function parameter with the name obtained from
-   * [UnlinkedExpr.strings].
-   */
+  /// Push the value of the function parameter with the name obtained from
+  /// [UnlinkedExpr.strings].
   pushParameter,
 
-  /**
-   * Evaluate a (potentially qualified) identifier expression and push the
-   * resulting value onto the stack.  The identifier to be evaluated is
-   * obtained from [UnlinkedExpr.references].
-   *
-   * This operation is used to represent the following kinds of constants
-   * (which are indistinguishable from an unresolved AST alone):
-   *
-   * - A qualified reference to a static constant variable (e.g. `C.v`, where
-   *   C is a class and `v` is a constant static variable in `C`).
-   * - An identifier expression referring to a constant variable.
-   * - A simple or qualified identifier denoting a class or type alias.
-   * - A simple or qualified identifier denoting a top-level function or a
-   *   static method.
-   */
+  /// Evaluate a (potentially qualified) identifier expression and push the
+  /// resulting value onto the stack.  The identifier to be evaluated is
+  /// obtained from [UnlinkedExpr.references].
+  ///
+  /// This operation is used to represent the following kinds of constants
+  /// (which are indistinguishable from an unresolved AST alone):
+  ///
+  /// - A qualified reference to a static constant variable (e.g. `C.v`, where
+  ///   C is a class and `v` is a constant static variable in `C`).
+  /// - An identifier expression referring to a constant variable.
+  /// - A simple or qualified identifier denoting a class or type alias.
+  /// - A simple or qualified identifier denoting a top-level function or a
+  ///   static method.
   pushReference,
 
-  /**
-   * Pop the top value from the stack, extract the value of the property with
-   * the name obtained from [UnlinkedExpr.strings], and push the result back
-   * onto the stack.
-   */
+  /// Pop the top value from the stack, extract the value of the property with
+  /// the name obtained from [UnlinkedExpr.strings], and push the result back
+  /// onto the stack.
   extractProperty,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke a constant constructor obtained
-   * from [UnlinkedExpr.references], and push the resulting value back onto the
-   * stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * Note that for an invocation of the form `const a.b(...)` (where no type
-   * arguments are specified), it is impossible to tell from the unresolved AST
-   * alone whether `a` is a class name and `b` is a constructor name, or `a` is
-   * a prefix name and `b` is a class name.  For consistency between AST based
-   * and elements based summaries, references to default constructors are always
-   * recorded as references to corresponding classes.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke a constant constructor obtained
+  /// from [UnlinkedExpr.references], and push the resulting value back onto the
+  /// stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// Note that for an invocation of the form `const a.b(...)` (where no type
+  /// arguments are specified), it is impossible to tell from the unresolved AST
+  /// alone whether `a` is a class name and `b` is a constructor name, or `a` is
+  /// a prefix name and `b` is a class name.  For consistency between AST based
+  /// and elements based summaries, references to default constructors are
+  /// always recorded as references to corresponding classes.
   invokeConstructor,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), place them in a [List], and push the result back
-   * onto the stack.  The type parameter for the [List] is implicitly `dynamic`.
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), place them in a [List], and push the result back
+  /// onto the stack.  The type parameter for the [List] is implicitly
+  /// `dynamic`.
   makeUntypedList,
 
-  /**
-   * Pop the top 2*n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
-   * [Map], and push the result back onto the stack.  The two type parameters
-   * for the [Map] are implicitly `dynamic`.
-   */
+  /// Pop the top 2*n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
+  /// [Map], and push the result back onto the stack.  The two type parameters
+  /// for the [Map] are implicitly `dynamic`.
   makeUntypedMap,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), place them in a [List], and push the result back
-   * onto the stack.  The type parameter for the [List] is obtained from
-   * [UnlinkedExpr.references].
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), place them in a [List], and push the result back
+  /// onto the stack.  The type parameter for the [List] is obtained from
+  /// [UnlinkedExpr.references].
   makeTypedList,
 
-  /**
-   * Pop the top 2*n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
-   * [Map], and push the result back onto the stack.  The two type parameters
-   * for the [Map] are obtained from [UnlinkedExpr.references].
-   */
+  /// Pop the top 2*n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
+  /// [Map], and push the result back onto the stack.  The two type parameters
+  /// for the [Map] are obtained from [UnlinkedExpr.references].
   makeTypedMap,
 
-  /**
-   * Pop the top 2 values from the stack, evaluate `v1 == v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, evaluate `v1 == v2`, and push the
+  /// result back onto the stack.
   equal,
 
-  /**
-   * Pop the top 2 values from the stack, evaluate `v1 != v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, evaluate `v1 != v2`, and push the
+  /// result back onto the stack.
   notEqual,
 
-  /**
-   * Pop the top value from the stack, compute its boolean negation, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its boolean negation, and push
+  /// the result back onto the stack.
   not,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 && v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 && v2`, and push the
+  /// result back onto the stack.
   and,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 || v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 || v2`, and push the
+  /// result back onto the stack.
   or,
 
-  /**
-   * Pop the top value from the stack, compute its integer complement, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its integer complement, and push
+  /// the result back onto the stack.
   complement,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 ^ v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 ^ v2`, and push the
+  /// result back onto the stack.
   bitXor,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 & v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 & v2`, and push the
+  /// result back onto the stack.
   bitAnd,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 | v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 | v2`, and push the
+  /// result back onto the stack.
   bitOr,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 >> v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 >> v2`, and push the
+  /// result back onto the stack.
   bitShiftRight,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 << v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 << v2`, and push the
+  /// result back onto the stack.
   bitShiftLeft,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 + v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 + v2`, and push the
+  /// result back onto the stack.
   add,
 
-  /**
-   * Pop the top value from the stack, compute its integer negation, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its integer negation, and push
+  /// the result back onto the stack.
   negate,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 - v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 - v2`, and push the
+  /// result back onto the stack.
   subtract,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 * v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 * v2`, and push the
+  /// result back onto the stack.
   multiply,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 / v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 / v2`, and push the
+  /// result back onto the stack.
   divide,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the
+  /// result back onto the stack.
   floorDivide,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 > v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 > v2`, and push the
+  /// result back onto the stack.
   greater,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 < v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 < v2`, and push the
+  /// result back onto the stack.
   less,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 >= v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 >= v2`, and push the
+  /// result back onto the stack.
   greaterEqual,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 <= v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 <= v2`, and push the
+  /// result back onto the stack.
   lessEqual,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 % v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 % v2`, and push the
+  /// result back onto the stack.
   modulo,
 
-  /**
-   * Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
+  /// result back onto the stack.
   conditional,
 
-  /**
-   * Pop from the stack `value` and get the next `target` reference from
-   * [UnlinkedExpr.references] - a top-level variable (prefixed or not), an
-   * assignable field of a class (prefixed or not), or a sequence of getters
-   * ending with an assignable property `a.b.b.c.d.e`.  In general `a.b` cannot
-   * not be distinguished between: `a` is a prefix and `b` is a top-level
-   * variable; or `a` is an object and `b` is the name of a property.  Perform
-   * `reference op= value` where `op` is the next assignment operator from
-   * [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `value` and get the next `target` reference from
+  /// [UnlinkedExpr.references] - a top-level variable (prefixed or not), an
+  /// assignable field of a class (prefixed or not), or a sequence of getters
+  /// ending with an assignable property `a.b.b.c.d.e`.  In general `a.b` cannot
+  /// not be distinguished between: `a` is a prefix and `b` is a top-level
+  /// variable; or `a` is an object and `b` is the name of a property.  Perform
+  /// `reference op= value` where `op` is the next assignment operator from
+  /// [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToRef,
 
-  /**
-   * Pop from the stack `target` and `value`.  Get the name of the property from
-   * `UnlinkedConst.strings` and assign the `value` to the named property of the
-   * `target`.  This operation is used when we know that the `target` is an
-   * object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
-   * Perform `target.property op= value` where `op` is the next assignment
-   * operator from [UnlinkedExpr.assignmentOperators].  Push `value` back into
-   * the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `target` and `value`.  Get the name of the property
+  /// from `UnlinkedConst.strings` and assign the `value` to the named property
+  /// of the `target`.  This operation is used when we know that the `target`
+  /// is an object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
+  /// Perform `target.property op= value` where `op` is the next assignment
+  /// operator from [UnlinkedExpr.assignmentOperators].  Push `value` back into
+  /// the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToProperty,
 
-  /**
-   * Pop from the stack `index`, `target` and `value`.  Perform
-   * `target[index] op= value`  where `op` is the next assignment operator from
-   * [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `index`, `target` and `value`.  Perform
+  /// `target[index] op= value`  where `op` is the next assignment operator from
+  /// [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToIndex,
 
-  /**
-   * Pop from the stack `index` and `target`.  Push into the stack the result
-   * of evaluation of `target[index]`.
-   */
+  /// Pop from the stack `index` and `target`.  Push into the stack the result
+  /// of evaluation of `target[index]`.
   extractIndex,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke a method (or a function) with
-   * the reference from [UnlinkedExpr.references].  If `k` is nonzero (where
-   * `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type arguments from
-   * [UnlinkedExpr.references] and use them as generic type arguments for the
-   * aforementioned method or function.  Push the result of the invocation onto
-   * the stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * In general `a.b` cannot not be distinguished between: `a` is a prefix and
-   * `b` is a top-level function; or `a` is an object and `b` is the name of a
-   * method.  This operation should be used for a sequence of identifiers
-   * `a.b.b.c.d.e` ending with an invokable result.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke a method (or a function) with
+  /// the reference from [UnlinkedExpr.references].  If `k` is nonzero (where
+  /// `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type arguments from
+  /// [UnlinkedExpr.references] and use them as generic type arguments for the
+  /// aforementioned method or function.  Push the result of the invocation onto
+  /// the stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// In general `a.b` cannot not be distinguished between: `a` is a prefix and
+  /// `b` is a top-level function; or `a` is an object and `b` is the name of a
+  /// method.  This operation should be used for a sequence of identifiers
+  /// `a.b.b.c.d.e` ending with an invokable result.
   invokeMethodRef,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke the method with the name from
-   * [UnlinkedExpr.strings] of the target popped from the stack.  If `k` is
-   * nonzero (where `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type
-   * arguments from [UnlinkedExpr.references] and use them as generic type
-   * arguments for the aforementioned method.  Push the result of the
-   * invocation onto the stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * This operation should be used for invocation of a method invocation
-   * where `target` is known to be an object instance.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke the method with the name from
+  /// [UnlinkedExpr.strings] of the target popped from the stack.  If `k` is
+  /// nonzero (where `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type
+  /// arguments from [UnlinkedExpr.references] and use them as generic type
+  /// arguments for the aforementioned method.  Push the result of the
+  /// invocation onto the stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// This operation should be used for invocation of a method invocation
+  /// where `target` is known to be an object instance.
   invokeMethod,
 
-  /**
-   * Begin a new cascade section.  Duplicate the top value of the stack.
-   */
+  /// Begin a new cascade section.  Duplicate the top value of the stack.
   cascadeSectionBegin,
 
-  /**
-   * End a new cascade section.  Pop the top value from the stack and throw it
-   * away.
-   */
+  /// End a new cascade section.  Pop the top value from the stack and throw it
+  /// away.
   cascadeSectionEnd,
 
-  /**
-   * Pop the top value from the stack and cast it to the type with reference
-   * from [UnlinkedExpr.references], push the result into the stack.
-   */
+  /// Pop the top value from the stack and cast it to the type with reference
+  /// from [UnlinkedExpr.references], push the result into the stack.
   typeCast,
 
-  /**
-   * Pop the top value from the stack and check whether it is a subclass of the
-   * type with reference from [UnlinkedExpr.references], push the result into
-   * the stack.
-   */
+  /// Pop the top value from the stack and check whether it is a subclass of the
+  /// type with reference from [UnlinkedExpr.references], push the result into
+  /// the stack.
   typeCheck,
 
-  /**
-   * Pop the top value from the stack and raise an exception with this value.
-   */
+  /// Pop the top value from the stack and raise an exception with this value.
   throwException,
 
-  /**
-   * Obtain two values `n` and `m` from [UnlinkedExpr.ints].  Then, starting at
-   * the executable element for the expression being evaluated, if n > 0, pop to
-   * the nth enclosing function element.  Then, push the mth local function of
-   * that element onto the stack.
-   */
+  /// Obtain two values `n` and `m` from [UnlinkedExpr.ints].  Then, starting at
+  /// the executable element for the expression being evaluated, if n > 0, pop
+  /// to the nth enclosing function element.  Then, push the mth local function
+  /// of that element onto the stack.
   pushLocalFunctionReference,
 
-  /**
-   * Pop the top two values from the stack.  If the first value is non-null,
-   * keep it and discard the second.  Otherwise, keep the second and discard the
-   * first.
-   */
+  /// Pop the top two values from the stack.  If the first value is non-null,
+  /// keep it and discard the second.  Otherwise, keep the second and discard
+  /// the first.
   ifNull,
 
-  /**
-   * Pop the top value from the stack.  Treat it as a Future and await its
-   * completion.  Then push the awaited value onto the stack.
-   */
+  /// Pop the top value from the stack.  Treat it as a Future and await its
+  /// completion.  Then push the awaited value onto the stack.
   await,
 
-  /**
-   * Push an abstract value onto the stack. Abstract values mark the presence of
-   * a value, but whose details are not included.
-   *
-   * This is not used by the summary generators today, but it will be used to
-   * experiment with prunning the initializer expression tree, so only
-   * information that is necessary gets included in the output summary file.
-   */
+  /// Push an abstract value onto the stack. Abstract values mark the presence
+  /// of a value, but whose details are not included.
+  ///
+  /// This is not used by the summary generators today, but it will be used to
+  /// experiment with prunning the initializer expression tree, so only
+  /// information that is necessary gets included in the output summary file.
   pushUntypedAbstract,
 
-  /**
-   * Get the next type reference from [UnlinkedExpr.references] and push an
-   * abstract value onto the stack that has that type.
-   *
-   * Like [pushUntypedAbstract], this is also not used by the summary generators
-   * today. The plan is to experiment with prunning the initializer expression
-   * tree, and include just enough type information to perform strong-mode type
-   * inference, but not all the details of how this type was obtained.
-   */
+  /// Get the next type reference from [UnlinkedExpr.references] and push an
+  /// abstract value onto the stack that has that type.
+  ///
+  /// Like [pushUntypedAbstract], this is also not used by the summary
+  /// generators today. The plan is to experiment with prunning the initializer
+  /// expression tree, and include just enough type information to perform
+  /// strong-mode type inference, but not all the details of how this type was
+  /// obtained.
   pushTypedAbstract,
 
-  /**
-   * Push an error onto the stack.
-   *
-   * Like [pushUntypedAbstract], this is not used by summary generators today.
-   * This will be used to experiment with prunning the const expression tree. If
-   * a constant has an error, we can omit the subexpression containing the error
-   * and only include a marker that an error was detected.
-   */
+  /// Push an error onto the stack.
+  ///
+  /// Like [pushUntypedAbstract], this is not used by summary generators today.
+  /// This will be used to experiment with prunning the const expression tree.
+  /// If a constant has an error, we can omit the subexpression containing the
+  /// error and only include a marker that an error was detected.
   pushError,
 
-  /**
-   * Push `this` expression onto the stack.
-   */
+  /// Push `this` expression onto the stack.
   pushThis,
 
-  /**
-   * Push `super` expression onto the stack.
-   */
+  /// Push `super` expression onto the stack.
   pushSuper
 }
 
-/**
- * Enum used to indicate the kind of a parameter.
- */
+/// Enum used to indicate the kind of a parameter.
 enum UnlinkedParamKind : byte {
-  /**
-   * Parameter is required.
-   */
+  /// Parameter is required.
   required,
 
-  /**
-   * Parameter is positional optional (enclosed in `[]`)
-   */
+  /// Parameter is positional optional (enclosed in `[]`)
   positional,
 
-  /**
-   * Parameter is named optional (enclosed in `{}`)
-   */
+  /// Parameter is named optional (enclosed in `{}`)
   named
 }
 
-/**
- * Information about the context of an exception in analysis driver.
- */
+/// Information about the context of an exception in analysis driver.
 table AnalysisDriverExceptionContext {
-  /**
-   * The exception string.
-   */
+  /// The exception string.
   exception:string (id: 1);
 
-  /**
-   * The state of files when the exception happened.
-   */
+  /// The state of files when the exception happened.
   files:[AnalysisDriverExceptionFile] (id: 3);
 
-  /**
-   * The path of the file being analyzed when the exception happened.
-   */
+  /// The path of the file being analyzed when the exception happened.
   path:string (id: 0);
 
-  /**
-   * The exception stack trace string.
-   */
+  /// The exception stack trace string.
   stackTrace:string (id: 2);
 }
 
-/**
- * Information about a single file in [AnalysisDriverExceptionContext].
- */
+/// Information about a single file in [AnalysisDriverExceptionContext].
 table AnalysisDriverExceptionFile {
-  /**
-   * The content of the file.
-   */
+  /// The content of the file.
   content:string (id: 1);
 
-  /**
-   * The path of the file.
-   */
+  /// The path of the file.
   path:string (id: 0);
 }
 
-/**
- * Information about a resolved unit.
- */
+/// Information about a resolved unit.
 table AnalysisDriverResolvedUnit {
-  /**
-   * The full list of analysis errors, both syntactic and semantic.
-   */
+  /// The full list of analysis errors, both syntactic and semantic.
   errors:[AnalysisDriverUnitError] (id: 0);
 
-  /**
-   * The index of the unit.
-   */
+  /// The index of the unit.
   index:AnalysisDriverUnitIndex (id: 1);
 }
 
-/**
- * Information about a subtype of one or more classes.
- */
+/// Information about a subtype of one or more classes.
 table AnalysisDriverSubtype {
-  /**
-   * The names of defined instance members.
-   * They are indexes into [AnalysisDriverUnitError.strings] list.
-   * The list is sorted in ascending order.
-   */
+  /// The names of defined instance members.
+  /// They are indexes into [AnalysisDriverUnitError.strings] list.
+  /// The list is sorted in ascending order.
   members:[uint] (id: 1);
 
-  /**
-   * The name of the class.
-   * It is an index into [AnalysisDriverUnitError.strings] list.
-   */
+  /// The name of the class.
+  /// It is an index into [AnalysisDriverUnitError.strings] list.
   name:uint (id: 0);
 }
 
-/**
- * Information about an error in a resolved unit.
- */
+/// Information about an error in a resolved unit.
 table AnalysisDriverUnitError {
-  /**
-   * The optional correction hint for the error.
-   */
+  /// The optional correction hint for the error.
   correction:string (id: 4);
 
-  /**
-   * The length of the error in the file.
-   */
+  /// The length of the error in the file.
   length:uint (id: 1);
 
-  /**
-   * The message of the error.
-   */
+  /// The message of the error.
   message:string (id: 3);
 
-  /**
-   * The offset from the beginning of the file.
-   */
+  /// The offset from the beginning of the file.
   offset:uint (id: 0);
 
-  /**
-   * The unique name of the error code.
-   */
+  /// The unique name of the error code.
   uniqueName:string (id: 2);
 }
 
-/**
- * Information about a resolved unit.
- */
+/// Information about a resolved unit.
 table AnalysisDriverUnitIndex {
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   elementKinds:[IndexSyntheticElementKind] (id: 4);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// index.
   elementNameClassMemberIds:[uint] (id: 7);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this index.
   elementNameParameterIds:[uint] (id: 8);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this index.
   elementNameUnitMemberIds:[uint] (id: 6);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   elementUnits:[uint] (id: 5);
 
-  /**
-   * Identifier of the null string in [strings].
-   */
+  /// Identifier of the null string in [strings].
   nullStringId:uint (id: 1);
 
-  /**
-   * List of unique element strings used in this index.  The list is sorted in
-   * ascending order, so that the client can quickly check the presence of a
-   * string in this index.
-   */
+  /// List of unique element strings used in this index.  The list is sorted in
+  /// ascending order, so that the client can quickly check the presence of a
+  /// string in this index.
   strings:[string] (id: 0);
 
-  /**
-   * The list of classes declared in the unit.
-   */
+  /// The list of classes declared in the unit.
   subtypes:[AnalysisDriverSubtype] (id: 19);
 
-  /**
-   * The identifiers of supertypes of elements at corresponding indexes
-   * in [subtypes].  They are indexes into [strings] list. The list is sorted
-   * in ascending order.  There might be more than one element with the same
-   * value if there is more than one subtype of this supertype.
-   */
+  /// The identifiers of supertypes of elements at corresponding indexes
+  /// in [subtypes].  They are indexes into [strings] list. The list is sorted
+  /// in ascending order.  There might be more than one element with the same
+  /// value if there is more than one subtype of this supertype.
   supertypes:[uint] (id: 18);
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   unitLibraryUris:[uint] (id: 2);
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   unitUnitUris:[uint] (id: 3);
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   usedElementIsQualifiedFlags:[ubyte] (id: 13);
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   usedElementKinds:[IndexRelationKind] (id: 10);
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   usedElementLengths:[uint] (id: 12);
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   usedElementOffsets:[uint] (id: 11);
 
-  /**
-   * Each item of this list is the index into [elementUnits],
-   * [elementNameUnitMemberIds], [elementNameClassMemberIds] and
-   * [elementNameParameterIds].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this index.
-   */
+  /// Each item of this list is the index into [elementUnits],
+  /// [elementNameUnitMemberIds], [elementNameClassMemberIds] and
+  /// [elementNameParameterIds].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this index.
   usedElements:[uint] (id: 9);
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   usedNameIsQualifiedFlags:[ubyte] (id: 17);
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   usedNameKinds:[IndexRelationKind] (id: 15);
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   usedNameOffsets:[uint] (id: 16);
 
-  /**
-   * Each item of this list is the index into [strings] for a used name.  The
-   * list is sorted in ascending order, so that the client can quickly find
-   * whether a name is used in this index.
-   */
+  /// Each item of this list is the index into [strings] for a used name.  The
+  /// list is sorted in ascending order, so that the client can quickly find
+  /// whether a name is used in this index.
   usedNames:[uint] (id: 14);
 }
 
-/**
- * Information about an unlinked unit.
- */
+/// Information about an unlinked unit.
 table AnalysisDriverUnlinkedUnit {
-  /**
-   * List of class member names defined by the unit.
-   */
+  /// List of class member names defined by the unit.
   definedClassMemberNames:[string] (id: 3);
 
-  /**
-   * List of top-level names defined by the unit.
-   */
+  /// List of top-level names defined by the unit.
   definedTopLevelNames:[string] (id: 2);
 
-  /**
-   * List of external names referenced by the unit.
-   */
+  /// List of external names referenced by the unit.
   referencedNames:[string] (id: 0);
 
-  /**
-   * List of names which are used in `extends`, `with` or `implements` clauses
-   * in the file. Import prefixes and type arguments are not included.
-   */
+  /// List of names which are used in `extends`, `with` or `implements` clauses
+  /// in the file. Import prefixes and type arguments are not included.
   subtypedNames:[string] (id: 4);
 
-  /**
-   * Unlinked information for the unit.
-   */
+  /// Unlinked information for the unit.
   unit:UnlinkedUnit (id: 1);
 }
 
-/**
- * Information about an element code range.
- */
+/// Information about an element code range.
 table CodeRange {
-  /**
-   * Length of the element code.
-   */
+  /// Length of the element code.
   length:uint (id: 1);
 
-  /**
-   * Offset of the element code relative to the beginning of the file.
-   */
+  /// Offset of the element code relative to the beginning of the file.
   offset:uint (id: 0);
 }
 
-/**
- * Summary information about a reference to an entity such as a type, top level
- * executable, or executable within a class.
- */
+/// Summary information about a reference to an entity such as a type, top level
+/// executable, or executable within a class.
 table EntityRef {
-  /**
-   * The kind of entity being represented.
-   */
+  /// The kind of entity being represented.
   entityKind:EntityRefKind (id: 8);
 
-  /**
-   * Notice: This will be deprecated. However, its not deprecated yet, as we're
-   * keeping it for backwards compatibilty, and marking it deprecated makes it
-   * unreadable.
-   *
-   * TODO(mfairhurst) mark this deprecated, and remove its logic.
-   *
-   * If this is a reference to a function type implicitly defined by a
-   * function-typed parameter, a list of zero-based indices indicating the path
-   * from the entity referred to by [reference] to the appropriate type
-   * parameter.  Otherwise the empty list.
-   *
-   * If there are N indices in this list, then the entity being referred to is
-   * the function type implicitly defined by a function-typed parameter of a
-   * function-typed parameter, to N levels of nesting.  The first index in the
-   * list refers to the outermost level of nesting; for example if [reference]
-   * refers to the entity defined by:
-   *
-   *     void f(x, void g(y, z, int h(String w))) { ... }
-   *
-   * Then to refer to the function type implicitly defined by parameter `h`
-   * (which is parameter 2 of parameter 1 of `f`), then
-   * [implicitFunctionTypeIndices] should be [1, 2].
-   *
-   * Note that if the entity being referred to is a generic method inside a
-   * generic class, then the type arguments in [typeArguments] are applied
-   * first to the class and then to the method.
-   */
+  /// Notice: This will be deprecated. However, its not deprecated yet, as we're
+  /// keeping it for backwards compatibilty, and marking it deprecated makes it
+  /// unreadable.
+  ///
+  /// TODO(mfairhurst) mark this deprecated, and remove its logic.
+  ///
+  /// If this is a reference to a function type implicitly defined by a
+  /// function-typed parameter, a list of zero-based indices indicating the path
+  /// from the entity referred to by [reference] to the appropriate type
+  /// parameter.  Otherwise the empty list.
+  ///
+  /// If there are N indices in this list, then the entity being referred to is
+  /// the function type implicitly defined by a function-typed parameter of a
+  /// function-typed parameter, to N levels of nesting.  The first index in the
+  /// list refers to the outermost level of nesting; for example if [reference]
+  /// refers to the entity defined by:
+  ///
+  ///     void f(x, void g(y, z, int h(String w))) { ... }
+  ///
+  /// Then to refer to the function type implicitly defined by parameter `h`
+  /// (which is parameter 2 of parameter 1 of `f`), then
+  /// [implicitFunctionTypeIndices] should be [1, 2].
+  ///
+  /// Note that if the entity being referred to is a generic method inside a
+  /// generic class, then the type arguments in [typeArguments] are applied
+  /// first to the class and then to the method.
   implicitFunctionTypeIndices:[uint] (id: 4);
 
-  /**
-   * If this is a reference to a type parameter, one-based index into the list
-   * of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
-   * Bruijn index conventions; that is, innermost parameters come first, and
-   * if a class or method has multiple parameters, they are indexed from right
-   * to left.  So for instance, if the enclosing declaration is
-   *
-   *     class C<T,U> {
-   *       m<V,W> {
-   *         ...
-   *       }
-   *     }
-   *
-   * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
-   * respectively.
-   *
-   * If the type being referred to is not a type parameter, [paramReference] is
-   * zero.
-   */
+  /// If this is a reference to a type parameter, one-based index into the list
+  /// of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
+  /// Bruijn index conventions; that is, innermost parameters come first, and
+  /// if a class or method has multiple parameters, they are indexed from right
+  /// to left.  So for instance, if the enclosing declaration is
+  ///
+  ///     class C<T,U> {
+  ///       m<V,W> {
+  ///         ...
+  ///       }
+  ///     }
+  ///
+  /// Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
+  /// respectively.
+  ///
+  /// If the type being referred to is not a type parameter, [paramReference] is
+  /// zero.
   paramReference:uint (id: 3);
 
-  /**
-   * Index into [UnlinkedUnit.references] for the entity being referred to, or
-   * zero if this is a reference to a type parameter.
-   */
+  /// Index into [UnlinkedUnit.references] for the entity being referred to, or
+  /// zero if this is a reference to a type parameter.
   reference:uint (id: 0);
 
-  /**
-   * If this [EntityRef] appears in a syntactic context where its type arguments
-   * might need to be inferred by a method other than instantiate-to-bounds,
-   * and [typeArguments] is empty, a slot id (which is unique within the
-   * compilation unit).  If an entry appears in [LinkedUnit.types] whose [slot]
-   * matches this value, that entry will contain the complete inferred type.
-   *
-   * This is called `refinedSlot` to clarify that if it points to an inferred
-   * type, it points to a type that is a "refinement" of this one (one in which
-   * some type arguments have been inferred).
-   */
+  /// If this [EntityRef] appears in a syntactic context where its type
+  /// arguments might need to be inferred by a method other than
+  /// instantiate-to-bounds, and [typeArguments] is empty, a slot id (which is
+  /// unique within the compilation unit).  If an entry appears in
+  /// [LinkedUnit.types] whose [slot] matches this value, that entry will
+  /// contain the complete inferred type.
+  ///
+  /// This is called `refinedSlot` to clarify that if it points to an inferred
+  /// type, it points to a type that is a "refinement" of this one (one in which
+  /// some type arguments have been inferred).
   refinedSlot:uint (id: 9);
 
-  /**
-   * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
-   * is unique within the compilation unit) identifying the target of type
-   * propagation or type inference with which this [EntityRef] is associated.
-   *
-   * Otherwise zero.
-   */
+  /// If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
+  /// is unique within the compilation unit) identifying the target of type
+  /// propagation or type inference with which this [EntityRef] is associated.
+  ///
+  /// Otherwise zero.
   slot:uint (id: 2);
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the function parameters.  Otherwise
-   * empty.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the function parameters.  Otherwise
+  /// empty.
   syntheticParams:[UnlinkedParam] (id: 6);
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the return type of the function.
-   * Otherwise `null`.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the return type of the function.
+  /// Otherwise `null`.
   syntheticReturnType:EntityRef (id: 5);
 
-  /**
-   * If this is an instantiation of a generic type or generic executable, the
-   * type arguments used to instantiate it (if any).
-   */
+  /// If this is an instantiation of a generic type or generic executable, the
+  /// type arguments used to instantiate it (if any).
   typeArguments:[EntityRef] (id: 1);
 
-  /**
-   * If this is a function type, the type parameters defined for the function
-   * type (if any).
-   */
+  /// If this is a function type, the type parameters defined for the function
+  /// type (if any).
   typeParameters:[UnlinkedTypeParam] (id: 7);
 }
 
-/**
- * Information about a dependency that exists between one library and another
- * due to an "import" declaration.
- */
+/// Information about a dependency that exists between one library and another
+/// due to an "import" declaration.
 table LinkedDependency {
-  /**
-   * Absolute URI for the compilation units listed in the library's `part`
-   * declarations, empty string for invalid URI.
-   */
+  /// Absolute URI for the compilation units listed in the library's `part`
+  /// declarations, empty string for invalid URI.
   parts:[string] (id: 1);
 
-  /**
-   * The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
-   */
+  /// The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
   uri:string (id: 0);
 }
 
-/**
- * Information about a single name in the export namespace of the library that
- * is not in the public namespace.
- */
+/// Information about a single name in the export namespace of the library that
+/// is not in the public namespace.
 table LinkedExportName {
-  /**
-   * Index into [LinkedLibrary.dependencies] for the library in which the
-   * entity is defined.
-   */
+  /// Index into [LinkedLibrary.dependencies] for the library in which the
+  /// entity is defined.
   dependency:uint (id: 0);
 
-  /**
-   * The kind of the entity being referred to.
-   */
+  /// The kind of the entity being referred to.
   kind:ReferenceKind (id: 3);
 
-  /**
-   * Name of the exported entity.  For an exported setter, this name includes
-   * the trailing '='.
-   */
+  /// Name of the exported entity.  For an exported setter, this name includes
+  /// the trailing '='.
   name:string (id: 1);
 
-  /**
-   * Integer index indicating which unit in the exported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   */
+  /// Integer index indicating which unit in the exported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
   unit:uint (id: 2);
 }
 
-/**
- * Linked summary of a library.
- */
+/// Linked summary of a library.
 table LinkedLibrary {
-  /**
-   * The libraries that this library depends on (either via an explicit import
-   * statement or via the implicit dependencies on `dart:core` and
-   * `dart:async`).  The first element of this array is a pseudo-dependency
-   * representing the library itself (it is also used for `dynamic` and
-   * `void`).  This is followed by elements representing "prelinked"
-   * dependencies (direct imports and the transitive closure of exports).
-   * After the prelinked dependencies are elements representing "linked"
-   * dependencies.
-   *
-   * A library is only included as a "linked" dependency if it is a true
-   * dependency (e.g. a propagated or inferred type or constant value
-   * implicitly refers to an element declared in the library) or
-   * anti-dependency (e.g. the result of type propagation or type inference
-   * depends on the lack of a certain declaration in the library).
-   */
+  /// The libraries that this library depends on (either via an explicit import
+  /// statement or via the implicit dependencies on `dart:core` and
+  /// `dart:async`).  The first element of this array is a pseudo-dependency
+  /// representing the library itself (it is also used for `dynamic` and
+  /// `void`).  This is followed by elements representing "prelinked"
+  /// dependencies (direct imports and the transitive closure of exports).
+  /// After the prelinked dependencies are elements representing "linked"
+  /// dependencies.
+  ///
+  /// A library is only included as a "linked" dependency if it is a true
+  /// dependency (e.g. a propagated or inferred type or constant value
+  /// implicitly refers to an element declared in the library) or
+  /// anti-dependency (e.g. the result of type propagation or type inference
+  /// depends on the lack of a certain declaration in the library).
   dependencies:[LinkedDependency] (id: 0);
 
-  /**
-   * For each export in [UnlinkedUnit.exports], an index into [dependencies]
-   * of the library being exported.
-   */
+  /// For each export in [UnlinkedUnit.exports], an index into [dependencies]
+  /// of the library being exported.
   exportDependencies:[uint] (id: 6);
 
-  /**
-   * Information about entities in the export namespace of the library that are
-   * not in the public namespace of the library (that is, entities that are
-   * brought into the namespace via `export` directives).
-   *
-   * Sorted by name.
-   */
+  /// Information about entities in the export namespace of the library that are
+  /// not in the public namespace of the library (that is, entities that are
+  /// brought into the namespace via `export` directives).
+  ///
+  /// Sorted by name.
   exportNames:[LinkedExportName] (id: 4);
 
-  /**
-   * Indicates whether this library was summarized in "fallback mode".  If
-   * true, all other fields in the data structure have their default values.
-   */
+  /// Indicates whether this library was summarized in "fallback mode".  If
+  /// true, all other fields in the data structure have their default values.
   fallbackMode:bool (id: 5, deprecated);
 
-  /**
-   * For each import in [UnlinkedUnit.imports], an index into [dependencies]
-   * of the library being imported.
-   */
+  /// For each import in [UnlinkedUnit.imports], an index into [dependencies]
+  /// of the library being imported.
   importDependencies:[uint] (id: 1);
 
-  /**
-   * The number of elements in [dependencies] which are not "linked"
-   * dependencies (that is, the number of libraries in the direct imports plus
-   * the transitive closure of exports, plus the library itself).
-   */
+  /// The number of elements in [dependencies] which are not "linked"
+  /// dependencies (that is, the number of libraries in the direct imports plus
+  /// the transitive closure of exports, plus the library itself).
   numPrelinkedDependencies:uint (id: 2);
 
-  /**
-   * The linked summary of all the compilation units constituting the
-   * library.  The summary of the defining compilation unit is listed first,
-   * followed by the summary of each part, in the order of the `part`
-   * declarations in the defining compilation unit.
-   */
+  /// The linked summary of all the compilation units constituting the
+  /// library.  The summary of the defining compilation unit is listed first,
+  /// followed by the summary of each part, in the order of the `part`
+  /// declarations in the defining compilation unit.
   units:[LinkedUnit] (id: 3);
 }
 
-/**
- * Information about the resolution of an [UnlinkedReference].
- */
+/// Information about the resolution of an [UnlinkedReference].
 table LinkedReference {
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * and the entity being referred to is contained within another entity, index
-   * of the containing entity.  This behaves similarly to
-   * [UnlinkedReference.prefixReference], however it is only used for class
-   * members, not for prefixed imports.
-   *
-   * Containing references must always point backward; that is, for all i, if
-   * LinkedUnit.references[i].containingReference != 0, then
-   * LinkedUnit.references[i].containingReference < i.
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// and the entity being referred to is contained within another entity, index
+  /// of the containing entity.  This behaves similarly to
+  /// [UnlinkedReference.prefixReference], however it is only used for class
+  /// members, not for prefixed imports.
+  ///
+  /// Containing references must always point backward; that is, for all i, if
+  /// LinkedUnit.references[i].containingReference != 0, then
+  /// LinkedUnit.references[i].containingReference < i.
   containingReference:uint (id: 5);
 
-  /**
-   * Index into [LinkedLibrary.dependencies] indicating which imported library
-   * declares the entity being referred to.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member), or if [kind] is [ReferenceKind.prefix].
-   */
+  /// Index into [LinkedLibrary.dependencies] indicating which imported library
+  /// declares the entity being referred to.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member), or if [kind] is [ReferenceKind.prefix].
   dependency:uint (id: 1);
 
-  /**
-   * The kind of the entity being referred to.  For the pseudo-types `dynamic`
-   * and `void`, the kind is [ReferenceKind.classOrEnum].
-   */
+  /// The kind of the entity being referred to.  For the pseudo-types `dynamic`
+  /// and `void`, the kind is [ReferenceKind.classOrEnum].
   kind:ReferenceKind (id: 2);
 
-  /**
-   * If [kind] is [ReferenceKind.function] (that is, the entity being referred
-   * to is a local function), the index of the function within
-   * [UnlinkedExecutable.localFunctions].  Otherwise zero.
-   */
+  /// If [kind] is [ReferenceKind.function] (that is, the entity being referred
+  /// to is a local function), the index of the function within
+  /// [UnlinkedExecutable.localFunctions].  Otherwise zero.
   localIndex:uint (id: 6, deprecated);
 
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
   name:string (id: 3);
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it declares (does not include type parameters of enclosing entities).
-   * Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it declares (does not include type parameters of enclosing entities).
+  /// Otherwise zero.
   numTypeParameters:uint (id: 4);
 
-  /**
-   * Integer index indicating which unit in the imported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member).
-   */
+  /// Integer index indicating which unit in the imported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member).
   unit:uint (id: 0);
 }
 
-/**
- * Linked summary of a compilation unit.
- */
+/// Linked summary of a compilation unit.
 table LinkedUnit {
-  /**
-   * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
-   * corresponding to const constructors that are part of cycles.
-   */
+  /// List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
+  /// corresponding to const constructors that are part of cycles.
   constCycles:[uint] (id: 2);
 
-  /**
-   * List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
-   * [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
-   * that inherit `@covariant` behavior from a base class.
-   */
+  /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
+  /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
+  /// that inherit `@covariant` behavior from a base class.
   parametersInheritingCovariant:[uint] (id: 3);
 
-  /**
-   * Information about the resolution of references within the compilation
-   * unit.  Each element of [UnlinkedUnit.references] has a corresponding
-   * element in this list (at the same index).  If this list has additional
-   * elements beyond the number of elements in [UnlinkedUnit.references], those
-   * additional elements are references that are only referred to implicitly
-   * (e.g. elements involved in inferred or propagated types).
-   */
+  /// Information about the resolution of references within the compilation
+  /// unit.  Each element of [UnlinkedUnit.references] has a corresponding
+  /// element in this list (at the same index).  If this list has additional
+  /// elements beyond the number of elements in [UnlinkedUnit.references], those
+  /// additional elements are references that are only referred to implicitly
+  /// (e.g. elements involved in inferred or propagated types).
   references:[LinkedReference] (id: 0);
 
-  /**
-   * The list of type inference errors.
-   */
+  /// The list of type inference errors.
   topLevelInferenceErrors:[TopLevelInferenceError] (id: 4);
 
-  /**
-   * List associating slot ids found inside the unlinked summary for the
-   * compilation unit with propagated and inferred types.
-   */
+  /// List associating slot ids found inside the unlinked summary for the
+  /// compilation unit with propagated and inferred types.
   types:[EntityRef] (id: 1);
 }
 
-/**
- * Summary information about a package.
- */
+/// Summary information about a package.
 table PackageBundle {
-  /**
-   * MD5 hash of the non-informative fields of the [PackageBundle] (not
-   * including this one).  This can be used to identify when the API of a
-   * package may have changed.
-   */
+  /// MD5 hash of the non-informative fields of the [PackageBundle] (not
+  /// including this one).  This can be used to identify when the API of a
+  /// package may have changed.
   apiSignature:string (id: 7, deprecated);
 
-  /**
-   * Information about the packages this package depends on, if known.
-   */
+  /// Information about the packages this package depends on, if known.
   dependencies:[PackageDependencyInfo] (id: 8, deprecated);
 
-  /**
-   * Linked libraries.
-   */
+  /// Linked libraries.
   linkedLibraries:[LinkedLibrary] (id: 0);
 
-  /**
-   * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
-   * `package:foo/bar.dart`.
-   */
+  /// The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
+  /// `package:foo/bar.dart`.
   linkedLibraryUris:[string] (id: 1);
 
-  /**
-   * Major version of the summary format.  See
-   * [PackageBundleAssembler.currentMajorVersion].
-   */
+  /// Major version of the summary format.  See
+  /// [PackageBundleAssembler.currentMajorVersion].
   majorVersion:uint (id: 5);
 
-  /**
-   * Minor version of the summary format.  See
-   * [PackageBundleAssembler.currentMinorVersion].
-   */
+  /// Minor version of the summary format.  See
+  /// [PackageBundleAssembler.currentMinorVersion].
   minorVersion:uint (id: 6);
 
-  /**
-   * List of MD5 hashes of the files listed in [unlinkedUnitUris].  Each hash
-   * is encoded as a hexadecimal string using lower case letters.
-   */
+  /// List of MD5 hashes of the files listed in [unlinkedUnitUris].  Each hash
+  /// is encoded as a hexadecimal string using lower case letters.
   unlinkedUnitHashes:[string] (id: 4, deprecated);
 
-  /**
-   * Unlinked information for the compilation units constituting the package.
-   */
+  /// Unlinked information for the compilation units constituting the package.
   unlinkedUnits:[UnlinkedUnit] (id: 2);
 
-  /**
-   * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
-   */
+  /// The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
   unlinkedUnitUris:[string] (id: 3);
 }
 
-/**
- * Information about a single dependency of a summary package.
- */
+/// Information about a single dependency of a summary package.
 table PackageDependencyInfo {
-  /**
-   * API signature of this dependency.
-   */
+  /// API signature of this dependency.
   apiSignature:string (id: 0);
 
-  /**
-   * If this dependency summarizes any files whose URI takes the form
-   * "package:<package_name>/...", a list of all such package names, sorted
-   * lexicographically.  Otherwise empty.
-   */
+  /// If this dependency summarizes any files whose URI takes the form
+  /// "package:<package_name>/...", a list of all such package names, sorted
+  /// lexicographically.  Otherwise empty.
   includedPackageNames:[string] (id: 2);
 
-  /**
-   * Indicates whether this dependency summarizes any files whose URI takes the
-   * form "dart:...".
-   */
+  /// Indicates whether this dependency summarizes any files whose URI takes the
+  /// form "dart:...".
   includesDartUris:bool (id: 4);
 
-  /**
-   * Indicates whether this dependency summarizes any files whose URI takes the
-   * form "file:...".
-   */
+  /// Indicates whether this dependency summarizes any files whose URI takes the
+  /// form "file:...".
   includesFileUris:bool (id: 3);
 
-  /**
-   * Relative path to the summary file for this dependency.  This is intended as
-   * a hint to help the analysis server locate summaries of dependencies.  We
-   * don't specify precisely what this path is relative to, but we expect it to
-   * be relative to a directory the analysis server can find (e.g. for projects
-   * built using Bazel, it would be relative to the "bazel-bin" directory).
-   *
-   * Absent if the path is not known.
-   */
+  /// Relative path to the summary file for this dependency.  This is intended
+  /// as a hint to help the analysis server locate summaries of dependencies.
+  /// We don't specify precisely what this path is relative to, but we expect
+  /// it to be relative to a directory the analysis server can find (e.g. for
+  /// projects built using Bazel, it would be relative to the "bazel-bin"
+  /// directory).
+  ///
+  /// Absent if the path is not known.
   summaryPath:string (id: 1);
 }
 
-/**
- * Index information about a package.
- */
+/// Index information about a package.
 table PackageIndex {
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   elementKinds:[IndexSyntheticElementKind] (id: 5);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   elementNameClassMemberIds:[uint] (id: 7);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   elementNameParameterIds:[uint] (id: 8);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this [PackageIndex].
   elementNameUnitMemberIds:[uint] (id: 1);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   elementUnits:[uint] (id: 0);
 
-  /**
-   * List of unique element strings used in this [PackageIndex].  The list is
-   * sorted in ascending order, so that the client can quickly check the
-   * presence of a string in this [PackageIndex].
-   */
+  /// List of unique element strings used in this [PackageIndex].  The list is
+  /// sorted in ascending order, so that the client can quickly check the
+  /// presence of a string in this [PackageIndex].
   strings:[string] (id: 6);
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   unitLibraryUris:[uint] (id: 2);
 
-  /**
-   * List of indexes of each unit in this [PackageIndex].
-   */
+  /// List of indexes of each unit in this [PackageIndex].
   units:[UnitIndex] (id: 4);
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   unitUnitUris:[uint] (id: 3);
 }
 
-/**
- * Summary information about a top-level type inference error.
- */
+/// Summary information about a top-level type inference error.
 table TopLevelInferenceError {
-  /**
-   * The [kind] specific arguments.
-   */
+  /// The [kind] specific arguments.
   arguments:[string] (id: 2);
 
-  /**
-   * The kind of the error.
-   */
+  /// The kind of the error.
   kind:TopLevelInferenceErrorKind (id: 1);
 
-  /**
-   * The slot id (which is unique within the compilation unit) identifying the
-   * target of type inference with which this [TopLevelInferenceError] is
-   * associated.
-   */
+  /// The slot id (which is unique within the compilation unit) identifying the
+  /// target of type inference with which this [TopLevelInferenceError] is
+  /// associated.
   slot:uint (id: 0);
 }
 
-/**
- * Index information about a unit in a [PackageIndex].
- */
+/// Index information about a unit in a [PackageIndex].
 table UnitIndex {
-  /**
-   * Each item of this list is the kind of an element defined in this unit.
-   */
+  /// Each item of this list is the kind of an element defined in this unit.
   definedNameKinds:[IndexNameKind] (id: 6);
 
-  /**
-   * Each item of this list is the name offset of an element defined in this
-   * unit relative to the beginning of the file.
-   */
+  /// Each item of this list is the name offset of an element defined in this
+  /// unit relative to the beginning of the file.
   definedNameOffsets:[uint] (id: 7);
 
-  /**
-   * Each item of this list corresponds to an element defined in this unit.  It
-   * is an index into [PackageIndex.strings] list.  The list is sorted in
-   * ascending order, so that the client can quickly find name definitions in
-   * this [UnitIndex].
-   */
+  /// Each item of this list corresponds to an element defined in this unit.  It
+  /// is an index into [PackageIndex.strings] list.  The list is sorted in
+  /// ascending order, so that the client can quickly find name definitions in
+  /// this [UnitIndex].
   definedNames:[uint] (id: 5);
 
-  /**
-   * Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
-   * for the library specific unit that corresponds to this [UnitIndex].
-   */
+  /// Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
+  /// for the library specific unit that corresponds to this [UnitIndex].
   unit:uint (id: 0);
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   usedElementIsQualifiedFlags:[ubyte] (id: 11);
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   usedElementKinds:[IndexRelationKind] (id: 4);
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   usedElementLengths:[uint] (id: 1);
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   usedElementOffsets:[uint] (id: 2);
 
-  /**
-   * Each item of this list is the index into [PackageIndex.elementUnits] and
-   * [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.elementUnits] and
+  /// [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this [UnitIndex].
   usedElements:[uint] (id: 3);
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   usedNameIsQualifiedFlags:[ubyte] (id: 12);
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   usedNameKinds:[IndexRelationKind] (id: 10);
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   usedNameOffsets:[uint] (id: 9);
 
-  /**
-   * Each item of this list is the index into [PackageIndex.strings] for a
-   * used name.  The list is sorted in ascending order, so that the client can
-   * quickly find name uses in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.strings] for a
+  /// used name.  The list is sorted in ascending order, so that the client can
+  /// quickly find name uses in this [UnitIndex].
   usedNames:[uint] (id: 8);
 }
 
-/**
- * Unlinked summary information about a class declaration.
- */
+/// Unlinked summary information about a class declaration.
 table UnlinkedClass {
-  /**
-   * Annotations for this class.
-   */
+  /// Annotations for this class.
   annotations:[UnlinkedExpr] (id: 5);
 
-  /**
-   * Code range of the class.
-   */
+  /// Code range of the class.
   codeRange:CodeRange (id: 13);
 
-  /**
-   * Documentation comment for the class, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the class, or `null` if there is no
+  /// documentation comment.
   documentationComment:UnlinkedDocumentationComment (id: 6);
 
-  /**
-   * Executable objects (methods, getters, and setters) contained in the class.
-   */
+  /// Executable objects (methods, getters, and setters) contained in the class.
   executables:[UnlinkedExecutable] (id: 2);
 
-  /**
-   * Field declarations contained in the class.
-   */
+  /// Field declarations contained in the class.
   fields:[UnlinkedVariable] (id: 4);
 
-  /**
-   * Indicates whether this class is the core "Object" class (and hence has no
-   * supertype)
-   */
+  /// Indicates whether this class is the core "Object" class (and hence has no
+  /// supertype)
   hasNoSupertype:bool (id: 12);
 
-  /**
-   * Interfaces appearing in an `implements` clause, if any.
-   */
+  /// Interfaces appearing in an `implements` clause, if any.
   interfaces:[EntityRef] (id: 7);
 
-  /**
-   * Indicates whether the class is declared with the `abstract` keyword.
-   */
+  /// Indicates whether the class is declared with the `abstract` keyword.
   isAbstract:bool (id: 8);
 
-  /**
-   * Indicates whether the class is declared using mixin application syntax.
-   */
+  /// Indicates whether the class is declared using mixin application syntax.
   isMixinApplication:bool (id: 11);
 
-  /**
-   * Mixins appearing in a `with` clause, if any.
-   */
+  /// Mixins appearing in a `with` clause, if any.
   mixins:[EntityRef] (id: 10);
 
-  /**
-   * Name of the class.
-   */
+  /// Name of the class.
   name:string (id: 0);
 
-  /**
-   * Offset of the class name relative to the beginning of the file.
-   */
+  /// Offset of the class name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
-  /**
-   * Superclass constraints for this mixin declaration. The list will be empty
-   * if this class is not a mixin declaration, or if the declaration does not
-   * have an `on` clause (in which case the type `Object` is implied).
-   */
+  /// Superclass constraints for this mixin declaration. The list will be empty
+  /// if this class is not a mixin declaration, or if the declaration does not
+  /// have an `on` clause (in which case the type `Object` is implied).
   superclassConstraints:[EntityRef] (id: 14);
 
-  /**
-   * Names of methods, getters, setters, and operators that this mixin
-   * declaration super-invokes.  For setters this includes the trailing "=".
-   * The list will be empty if this class is not a mixin declaration.
-   */
+  /// Names of methods, getters, setters, and operators that this mixin
+  /// declaration super-invokes.  For setters this includes the trailing "=".
+  /// The list will be empty if this class is not a mixin declaration.
   superInvokedNames:[string] (id: 15);
 
-  /**
-   * Supertype of the class, or `null` if either (a) the class doesn't
-   * explicitly declare a supertype (and hence has supertype `Object`), or (b)
-   * the class *is* `Object` (and hence has no supertype).
-   */
+  /// Supertype of the class, or `null` if either (a) the class doesn't
+  /// explicitly declare a supertype (and hence has supertype `Object`), or (b)
+  /// the class *is* `Object` (and hence has no supertype).
   supertype:EntityRef (id: 3);
 
-  /**
-   * Type parameters of the class, if any.
-   */
+  /// Type parameters of the class, if any.
   typeParameters:[UnlinkedTypeParam] (id: 9);
 }
 
-/**
- * Unlinked summary information about a `show` or `hide` combinator in an
- * import or export declaration.
- */
+/// Unlinked summary information about a `show` or `hide` combinator in an
+/// import or export declaration.
 table UnlinkedCombinator {
-  /**
-   * If this is a `show` combinator, offset of the end of the list of shown
-   * names.  Otherwise zero.
-   */
+  /// If this is a `show` combinator, offset of the end of the list of shown
+  /// names.  Otherwise zero.
   end:uint (id: 3);
 
-  /**
-   * List of names which are hidden.  Empty if this is a `show` combinator.
-   */
+  /// List of names which are hidden.  Empty if this is a `show` combinator.
   hides:[string] (id: 1);
 
-  /**
-   * If this is a `show` combinator, offset of the `show` keyword.  Otherwise
-   * zero.
-   */
+  /// If this is a `show` combinator, offset of the `show` keyword.  Otherwise
+  /// zero.
   offset:uint (id: 2);
 
-  /**
-   * List of names which are shown.  Empty if this is a `hide` combinator.
-   */
+  /// List of names which are shown.  Empty if this is a `hide` combinator.
   shows:[string] (id: 0);
 }
 
-/**
- * Unlinked summary information about a single import or export configuration.
- */
+/// Unlinked summary information about a single import or export configuration.
 table UnlinkedConfiguration {
-  /**
-   * The name of the declared variable whose value is being used in the
-   * condition.
-   */
+  /// The name of the declared variable whose value is being used in the
+  /// condition.
   name:string (id: 0);
 
-  /**
-   * The URI of the implementation library to be used if the condition is true.
-   */
+  /// The URI of the implementation library to be used if the condition is true.
   uri:string (id: 2);
 
-  /**
-   * The value to which the value of the declared variable will be compared,
-   * or `true` if the condition does not include an equality test.
-   */
+  /// The value to which the value of the declared variable will be compared,
+  /// or `true` if the condition does not include an equality test.
   value:string (id: 1);
 }
 
-/**
- * Unlinked summary information about a constructor initializer.
- */
+/// Unlinked summary information about a constructor initializer.
 table UnlinkedConstructorInitializer {
-  /**
-   * If there are `m` [arguments] and `n` [argumentNames], then each argument
-   * from [arguments] with index `i` such that `n + i - m >= 0`, should be used
-   * with the name at `n + i - m`.
-   */
+  /// If there are `m` [arguments] and `n` [argumentNames], then each argument
+  /// from [arguments] with index `i` such that `n + i - m >= 0`, should be used
+  /// with the name at `n + i - m`.
   argumentNames:[string] (id: 4);
 
-  /**
-   * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
-   * invocation.  Otherwise empty.
-   */
+  /// If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
+  /// invocation.  Otherwise empty.
   arguments:[UnlinkedExpr] (id: 3);
 
-  /**
-   * If [kind] is `field`, the expression of the field initializer.
-   * Otherwise `null`.
-   */
+  /// If [kind] is `field`, the expression of the field initializer.
+  /// Otherwise `null`.
   expression:UnlinkedExpr (id: 1);
 
-  /**
-   * The kind of the constructor initializer (field, redirect, super).
-   */
+  /// The kind of the constructor initializer (field, redirect, super).
   kind:UnlinkedConstructorInitializerKind (id: 2);
 
-  /**
-   * If [kind] is `field`, the name of the field declared in the class.  If
-   * [kind] is `thisInvocation`, the name of the constructor, declared in this
-   * class, to redirect to.  If [kind] is `superInvocation`, the name of the
-   * constructor, declared in the superclass, to invoke.
-   */
+  /// If [kind] is `field`, the name of the field declared in the class.  If
+  /// [kind] is `thisInvocation`, the name of the constructor, declared in this
+  /// class, to redirect to.  If [kind] is `superInvocation`, the name of the
+  /// constructor, declared in the superclass, to invoke.
   name:string (id: 0);
 }
 
-/**
- * Unlinked summary information about a documentation comment.
- */
+/// Unlinked summary information about a documentation comment.
 table UnlinkedDocumentationComment {
-  /**
-   * Length of the documentation comment (prior to replacing '\r\n' with '\n').
-   */
+  /// Length of the documentation comment (prior to replacing '\r\n' with '\n').
   length:uint (id: 0, deprecated);
 
-  /**
-   * Offset of the beginning of the documentation comment relative to the
-   * beginning of the file.
-   */
+  /// Offset of the beginning of the documentation comment relative to the
+  /// beginning of the file.
   offset:uint (id: 2, deprecated);
 
-  /**
-   * Text of the documentation comment, with '\r\n' replaced by '\n'.
-   *
-   * References appearing within the doc comment in square brackets are not
-   * specially encoded.
-   */
+  /// Text of the documentation comment, with '\r\n' replaced by '\n'.
+  ///
+  /// References appearing within the doc comment in square brackets are not
+  /// specially encoded.
   text:string (id: 1);
 }
 
-/**
- * Unlinked summary information about an enum declaration.
- */
+/// Unlinked summary information about an enum declaration.
 table UnlinkedEnum {
-  /**
-   * Annotations for this enum.
-   */
+  /// Annotations for this enum.
   annotations:[UnlinkedExpr] (id: 4);
 
-  /**
-   * Code range of the enum.
-   */
+  /// Code range of the enum.
   codeRange:CodeRange (id: 5);
 
-  /**
-   * Documentation comment for the enum, or `null` if there is no documentation
-   * comment.
-   */
+  /// Documentation comment for the enum, or `null` if there is no documentation
+  /// comment.
   documentationComment:UnlinkedDocumentationComment (id: 3);
 
-  /**
-   * Name of the enum type.
-   */
+  /// Name of the enum type.
   name:string (id: 0);
 
-  /**
-   * Offset of the enum name relative to the beginning of the file.
-   */
+  /// Offset of the enum name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
-  /**
-   * Values listed in the enum declaration, in declaration order.
-   */
+  /// Values listed in the enum declaration, in declaration order.
   values:[UnlinkedEnumValue] (id: 2);
 }
 
-/**
- * Unlinked summary information about a single enumerated value in an enum
- * declaration.
- */
+/// Unlinked summary information about a single enumerated value in an enum
+/// declaration.
 table UnlinkedEnumValue {
-  /**
-   * Annotations for this value.
-   */
+  /// Annotations for this value.
   annotations:[UnlinkedExpr] (id: 3);
 
-  /**
-   * Documentation comment for the enum value, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the enum value, or `null` if there is no
+  /// documentation comment.
   documentationComment:UnlinkedDocumentationComment (id: 2);
 
-  /**
-   * Name of the enumerated value.
-   */
+  /// Name of the enumerated value.
   name:string (id: 0);
 
-  /**
-   * Offset of the enum value name relative to the beginning of the file.
-   */
+  /// Offset of the enum value name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 }
 
-/**
- * Unlinked summary information about a function, method, getter, or setter
- * declaration.
- */
+/// Unlinked summary information about a function, method, getter, or setter
+/// declaration.
 table UnlinkedExecutable {
-  /**
-   * Annotations for this executable.
-   */
+  /// Annotations for this executable.
   annotations:[UnlinkedExpr] (id: 6);
 
-  /**
-   * If this executable's function body is declared using `=>`, the expression
-   * to the right of the `=>`.  May be omitted if neither type inference nor
-   * constant evaluation depends on the function body.
-   */
+  /// If this executable's function body is declared using `=>`, the expression
+  /// to the right of the `=>`.  May be omitted if neither type inference nor
+  /// constant evaluation depends on the function body.
   bodyExpr:UnlinkedExpr (id: 29);
 
-  /**
-   * Code range of the executable.
-   */
+  /// Code range of the executable.
   codeRange:CodeRange (id: 26);
 
-  /**
-   * If a constant [UnlinkedExecutableKind.constructor], the constructor
-   * initializers.  Otherwise empty.
-   */
+  /// If a constant [UnlinkedExecutableKind.constructor], the constructor
+  /// initializers.  Otherwise empty.
   constantInitializers:[UnlinkedConstructorInitializer] (id: 14);
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
-   * a nonzero slot id which is unique within this compilation unit.  If this id
-   * is found in [LinkedUnit.constCycles], then this constructor is part of a
-   * cycle.
-   *
-   * Otherwise, zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
+  /// a nonzero slot id which is unique within this compilation unit.  If this
+  /// id is found in [LinkedUnit.constCycles], then this constructor is part of
+  /// a cycle.
+  ///
+  /// Otherwise, zero.
   constCycleSlot:uint (id: 25);
 
-  /**
-   * Documentation comment for the executable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the executable, or `null` if there is no
+  /// documentation comment.
   documentationComment:UnlinkedDocumentationComment (id: 7);
 
-  /**
-   * If this executable's return type is inferable, nonzero slot id
-   * identifying which entry in [LinkedUnit.types] contains the inferred
-   * return type.  If there is no matching entry in [LinkedUnit.types], then
-   * no return type was inferred for this variable, so its static type is
-   * `dynamic`.
-   */
+  /// If this executable's return type is inferable, nonzero slot id
+  /// identifying which entry in [LinkedUnit.types] contains the inferred
+  /// return type.  If there is no matching entry in [LinkedUnit.types], then
+  /// no return type was inferred for this variable, so its static type is
+  /// `dynamic`.
   inferredReturnTypeSlot:uint (id: 5);
 
-  /**
-   * Indicates whether the executable is declared using the `abstract` keyword.
-   */
+  /// Indicates whether the executable is declared using the `abstract` keyword.
   isAbstract:bool (id: 10);
 
-  /**
-   * Indicates whether the executable has body marked as being asynchronous.
-   */
+  /// Indicates whether the executable has body marked as being asynchronous.
   isAsynchronous:bool (id: 27);
 
-  /**
-   * Indicates whether the executable is declared using the `const` keyword.
-   */
+  /// Indicates whether the executable is declared using the `const` keyword.
   isConst:bool (id: 12);
 
-  /**
-   * Indicates whether the executable is declared using the `external` keyword.
-   */
+  /// Indicates whether the executable is declared using the `external` keyword.
   isExternal:bool (id: 11);
 
-  /**
-   * Indicates whether the executable is declared using the `factory` keyword.
-   */
+  /// Indicates whether the executable is declared using the `factory` keyword.
   isFactory:bool (id: 8);
 
-  /**
-   * Indicates whether the executable has body marked as being a generator.
-   */
+  /// Indicates whether the executable has body marked as being a generator.
   isGenerator:bool (id: 28);
 
-  /**
-   * Indicates whether the executable is a redirected constructor.
-   */
+  /// Indicates whether the executable is a redirected constructor.
   isRedirectedConstructor:bool (id: 13);
 
-  /**
-   * Indicates whether the executable is declared using the `static` keyword.
-   *
-   * Note that for top level executables, this flag is false, since they are
-   * not declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the executable is declared using the `static` keyword.
+  ///
+  /// Note that for top level executables, this flag is false, since they are
+  /// not declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   isStatic:bool (id: 9);
 
-  /**
-   * The kind of the executable (function/method, getter, setter, or
-   * constructor).
-   */
+  /// The kind of the executable (function/method, getter, setter, or
+  /// constructor).
   kind:UnlinkedExecutableKind (id: 4);
 
-  /**
-   * The list of local functions.
-   */
+  /// The list of local functions.
   localFunctions:[UnlinkedExecutable] (id: 18);
 
-  /**
-   * The list of local labels.
-   */
+  /// The list of local labels.
   localLabels:[string] (id: 22, deprecated);
 
-  /**
-   * The list of local variables.
-   */
+  /// The list of local variables.
   localVariables:[UnlinkedVariable] (id: 19, deprecated);
 
-  /**
-   * Name of the executable.  For setters, this includes the trailing "=".  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the empty string.
-   */
+  /// Name of the executable.  For setters, this includes the trailing "=".  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the empty string.
   name:string (id: 1);
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the end of the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the end of the constructor name.  Otherwise zero.
   nameEnd:uint (id: 23);
 
-  /**
-   * Offset of the executable name relative to the beginning of the file.  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the offset of the class name (i.e. the
-   * offset of the second "C" in "class C { C(); }").
-   */
+  /// Offset of the executable name relative to the beginning of the file.  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the offset of the class name (i.e. the
+  /// offset of the second "C" in "class C { C(); }").
   nameOffset:uint (id: 0);
 
-  /**
-   * Parameters of the executable, if any.  Note that getters have no
-   * parameters (hence this will be the empty list), and setters have a single
-   * parameter.
-   */
+  /// Parameters of the executable, if any.  Note that getters have no
+  /// parameters (hence this will be the empty list), and setters have a single
+  /// parameter.
   parameters:[UnlinkedParam] (id: 2);
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the period before the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the period before the constructor name.  Otherwise zero.
   periodOffset:uint (id: 24);
 
-  /**
-   * If [isRedirectedConstructor] and [isFactory] are both `true`, the
-   * constructor to which this constructor redirects; otherwise empty.
-   */
+  /// If [isRedirectedConstructor] and [isFactory] are both `true`, the
+  /// constructor to which this constructor redirects; otherwise empty.
   redirectedConstructor:EntityRef (id: 15);
 
-  /**
-   * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
-   * name of the constructor that this constructor redirects to; otherwise
-   * empty.
-   */
+  /// If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
+  /// name of the constructor that this constructor redirects to; otherwise
+  /// empty.
   redirectedConstructorName:string (id: 17);
 
-  /**
-   * Declared return type of the executable.  Absent if the executable is a
-   * constructor or the return type is implicit.  Absent for executables
-   * associated with variable initializers and closures, since these
-   * executables may have return types that are not accessible via direct
-   * imports.
-   */
+  /// Declared return type of the executable.  Absent if the executable is a
+  /// constructor or the return type is implicit.  Absent for executables
+  /// associated with variable initializers and closures, since these
+  /// executables may have return types that are not accessible via direct
+  /// imports.
   returnType:EntityRef (id: 3);
 
-  /**
-   * Type parameters of the executable, if any.  Empty if support for generic
-   * method syntax is disabled.
-   */
+  /// Type parameters of the executable, if any.  Empty if support for generic
+  /// method syntax is disabled.
   typeParameters:[UnlinkedTypeParam] (id: 16);
 
-  /**
-   * If a local function, the length of the visible range; zero otherwise.
-   */
+  /// If a local function, the length of the visible range; zero otherwise.
   visibleLength:uint (id: 20);
 
-  /**
-   * If a local function, the beginning of the visible range; zero otherwise.
-   */
+  /// If a local function, the beginning of the visible range; zero otherwise.
   visibleOffset:uint (id: 21);
 }
 
-/**
- * Unlinked summary information about an export declaration (stored outside
- * [UnlinkedPublicNamespace]).
- */
+/// Unlinked summary information about an export declaration (stored outside
+/// [UnlinkedPublicNamespace]).
 table UnlinkedExportNonPublic {
-  /**
-   * Annotations for this export directive.
-   */
+  /// Annotations for this export directive.
   annotations:[UnlinkedExpr] (id: 3);
 
-  /**
-   * Offset of the "export" keyword.
-   */
+  /// Offset of the "export" keyword.
   offset:uint (id: 0);
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   uriEnd:uint (id: 1);
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   uriOffset:uint (id: 2);
 }
 
-/**
- * Unlinked summary information about an export declaration (stored inside
- * [UnlinkedPublicNamespace]).
- */
+/// Unlinked summary information about an export declaration (stored inside
+/// [UnlinkedPublicNamespace]).
 table UnlinkedExportPublic {
-  /**
-   * Combinators contained in this export declaration.
-   */
+  /// Combinators contained in this export declaration.
   combinators:[UnlinkedCombinator] (id: 1);
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   configurations:[UnlinkedConfiguration] (id: 2);
 
-  /**
-   * URI used in the source code to reference the exported library.
-   */
+  /// URI used in the source code to reference the exported library.
   uri:string (id: 0);
 }
 
-/**
- * Unlinked summary information about an expression.
- *
- * Expressions are represented using a simple stack-based language
- * where [operations] is a sequence of operations to execute starting with an
- * empty stack.  Once all operations have been executed, the stack should
- * contain a single value which is the value of the constant.  Note that some
- * operations consume additional data from the other fields of this class.
- */
+/// Unlinked summary information about an expression.
+///
+/// Expressions are represented using a simple stack-based language
+/// where [operations] is a sequence of operations to execute starting with an
+/// empty stack.  Once all operations have been executed, the stack should
+/// contain a single value which is the value of the constant.  Note that some
+/// operations consume additional data from the other fields of this class.
 table UnlinkedExpr {
-  /**
-   * Sequence of operators used by assignment operations.
-   */
+  /// Sequence of operators used by assignment operations.
   assignmentOperators:[UnlinkedExprAssignOperator] (id: 6);
 
-  /**
-   * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
-   */
+  /// Sequence of 64-bit doubles consumed by the operation `pushDouble`.
   doubles:[double] (id: 4);
 
-  /**
-   * Sequence of unsigned 32-bit integers consumed by the operations
-   * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
-   * `makeList`, and `makeMap`.
-   */
+  /// Sequence of unsigned 32-bit integers consumed by the operations
+  /// `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
+  /// `makeList`, and `makeMap`.
   ints:[uint] (id: 1);
 
-  /**
-   * Indicates whether the expression is a valid potentially constant
-   * expression.
-   */
+  /// Indicates whether the expression is a valid potentially constant
+  /// expression.
   isValidConst:bool (id: 5);
 
-  /**
-   * Sequence of operations to execute (starting with an empty stack) to form
-   * the constant value.
-   */
+  /// Sequence of operations to execute (starting with an empty stack) to form
+  /// the constant value.
   operations:[UnlinkedExprOperation] (id: 0);
 
-  /**
-   * Sequence of language constructs consumed by the operations
-   * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
-   * that in the case of `pushReference` (and sometimes `invokeConstructor` the
-   * actual entity being referred to may be something other than a type.
-   */
+  /// Sequence of language constructs consumed by the operations
+  /// `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
+  /// that in the case of `pushReference` (and sometimes `invokeConstructor` the
+  /// actual entity being referred to may be something other than a type.
   references:[EntityRef] (id: 2);
 
-  /**
-   * Sequence of strings consumed by the operations `pushString` and
-   * `invokeConstructor`.
-   */
+  /// Sequence of strings consumed by the operations `pushString` and
+  /// `invokeConstructor`.
   strings:[string] (id: 3);
 }
 
-/**
- * Unlinked summary information about an import declaration.
- */
+/// Unlinked summary information about an import declaration.
 table UnlinkedImport {
-  /**
-   * Annotations for this import declaration.
-   */
+  /// Annotations for this import declaration.
   annotations:[UnlinkedExpr] (id: 8);
 
-  /**
-   * Combinators contained in this import declaration.
-   */
+  /// Combinators contained in this import declaration.
   combinators:[UnlinkedCombinator] (id: 4);
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   configurations:[UnlinkedConfiguration] (id: 10);
 
-  /**
-   * Indicates whether the import declaration uses the `deferred` keyword.
-   */
+  /// Indicates whether the import declaration uses the `deferred` keyword.
   isDeferred:bool (id: 9);
 
-  /**
-   * Indicates whether the import declaration is implicit.
-   */
+  /// Indicates whether the import declaration is implicit.
   isImplicit:bool (id: 5);
 
-  /**
-   * If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
-   * is true, zero.
-   */
+  /// If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
+  /// is true, zero.
   offset:uint (id: 0);
 
-  /**
-   * Offset of the prefix name relative to the beginning of the file, or zero
-   * if there is no prefix.
-   */
+  /// Offset of the prefix name relative to the beginning of the file, or zero
+  /// if there is no prefix.
   prefixOffset:uint (id: 6);
 
-  /**
-   * Index into [UnlinkedUnit.references] of the prefix declared by this
-   * import declaration, or zero if this import declaration declares no prefix.
-   *
-   * Note that multiple imports can declare the same prefix.
-   */
+  /// Index into [UnlinkedUnit.references] of the prefix declared by this
+  /// import declaration, or zero if this import declaration declares no prefix.
+  ///
+  /// Note that multiple imports can declare the same prefix.
   prefixReference:uint (id: 7);
 
-  /**
-   * URI used in the source code to reference the imported library.
-   */
+  /// URI used in the source code to reference the imported library.
   uri:string (id: 1);
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.  If [isImplicit] is true, zero.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.  If [isImplicit] is true, zero.
   uriEnd:uint (id: 2);
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.  If [isImplicit] is true, zero.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.  If [isImplicit] is true, zero.
   uriOffset:uint (id: 3);
 }
 
-/**
- * Unlinked summary information about a function parameter.
- */
+/// Unlinked summary information about a function parameter.
 table UnlinkedParam {
-  /**
-   * Annotations for this parameter.
-   */
+  /// Annotations for this parameter.
   annotations:[UnlinkedExpr] (id: 9);
 
-  /**
-   * Code range of the parameter.
-   */
+  /// Code range of the parameter.
   codeRange:CodeRange (id: 7);
 
-  /**
-   * If the parameter has a default value, the source text of the constant
-   * expression in the default value.  Otherwise the empty string.
-   */
+  /// If the parameter has a default value, the source text of the constant
+  /// expression in the default value.  Otherwise the empty string.
   defaultValueCode:string (id: 13);
 
-  /**
-   * If this parameter's type is inferable, nonzero slot id identifying which
-   * entry in [LinkedLibrary.types] contains the inferred type.  If there is no
-   * matching entry in [LinkedLibrary.types], then no type was inferred for
-   * this variable, so its static type is `dynamic`.
-   *
-   * Note that although strong mode considers initializing formals to be
-   * inferable, they are not marked as such in the summary; if their type is
-   * not specified, they always inherit the static type of the corresponding
-   * field.
-   */
+  /// If this parameter's type is inferable, nonzero slot id identifying which
+  /// entry in [LinkedLibrary.types] contains the inferred type.  If there is no
+  /// matching entry in [LinkedLibrary.types], then no type was inferred for
+  /// this variable, so its static type is `dynamic`.
+  ///
+  /// Note that although strong mode considers initializing formals to be
+  /// inferable, they are not marked as such in the summary; if their type is
+  /// not specified, they always inherit the static type of the corresponding
+  /// field.
   inferredTypeSlot:uint (id: 2);
 
-  /**
-   * If this is a parameter of an instance method, a nonzero slot id which is
-   * unique within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
-   * `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is a parameter of an instance method, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
+  /// `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   inheritsCovariantSlot:uint (id: 14);
 
-  /**
-   * The synthetic initializer function of the parameter.  Absent if the
-   * variable does not have an initializer.
-   */
+  /// The synthetic initializer function of the parameter.  Absent if the
+  /// variable does not have an initializer.
   initializer:UnlinkedExecutable (id: 12);
 
-  /**
-   * Indicates whether this parameter is explicitly marked as being covariant.
-   */
+  /// Indicates whether this parameter is explicitly marked as being covariant.
   isExplicitlyCovariant:bool (id: 15);
 
-  /**
-   * Indicates whether the parameter is declared using the `final` keyword.
-   */
+  /// Indicates whether the parameter is declared using the `final` keyword.
   isFinal:bool (id: 16);
 
-  /**
-   * Indicates whether this is a function-typed parameter. A parameter is
-   * function-typed if the declaration of the parameter has explicit formal
-   * parameters
-   * ```
-   * int functionTyped(int p)
-   * ```
-   * but is not function-typed if it does not, even if the type of the parameter
-   * is a function type.
-   */
+  /// Indicates whether this is a function-typed parameter. A parameter is
+  /// function-typed if the declaration of the parameter has explicit formal
+  /// parameters
+  /// ```
+  /// int functionTyped(int p)
+  /// ```
+  /// but is not function-typed if it does not, even if the type of the
+  /// parameter is a function type.
   isFunctionTyped:bool (id: 5);
 
-  /**
-   * Indicates whether this is an initializing formal parameter (i.e. it is
-   * declared using `this.` syntax).
-   */
+  /// Indicates whether this is an initializing formal parameter (i.e. it is
+  /// declared using `this.` syntax).
   isInitializingFormal:bool (id: 6);
 
-  /**
-   * Kind of the parameter.
-   */
+  /// Kind of the parameter.
   kind:UnlinkedParamKind (id: 4);
 
-  /**
-   * Name of the parameter.
-   */
+  /// Name of the parameter.
   name:string (id: 0);
 
-  /**
-   * Offset of the parameter name relative to the beginning of the file.
-   */
+  /// Offset of the parameter name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
-  /**
-   * If [isFunctionTyped] is `true`, the parameters of the function type.
-   */
+  /// If [isFunctionTyped] is `true`, the parameters of the function type.
   parameters:[UnlinkedParam] (id: 8);
 
-  /**
-   * If [isFunctionTyped] is `true`, the declared return type.  If
-   * [isFunctionTyped] is `false`, the declared type.  Absent if the type is
-   * implicit.
-   */
+  /// If [isFunctionTyped] is `true`, the declared return type.  If
+  /// [isFunctionTyped] is `false`, the declared type.  Absent if the type is
+  /// implicit.
   type:EntityRef (id: 3);
 
-  /**
-   * The length of the visible range.
-   */
+  /// The length of the visible range.
   visibleLength:uint (id: 10);
 
-  /**
-   * The beginning of the visible range.
-   */
+  /// The beginning of the visible range.
   visibleOffset:uint (id: 11);
 }
 
-/**
- * Unlinked summary information about a part declaration.
- */
+/// Unlinked summary information about a part declaration.
 table UnlinkedPart {
-  /**
-   * Annotations for this part declaration.
-   */
+  /// Annotations for this part declaration.
   annotations:[UnlinkedExpr] (id: 2);
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   uriEnd:uint (id: 0);
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   uriOffset:uint (id: 1);
 }
 
-/**
- * Unlinked summary information about a specific name contributed by a
- * compilation unit to a library's public namespace.
- *
- * TODO(paulberry): some of this information is redundant with information
- * elsewhere in the summary.  Consider reducing the redundancy to reduce
- * summary size.
- */
+/// Unlinked summary information about a specific name contributed by a
+/// compilation unit to a library's public namespace.
+///
+/// TODO(paulberry): some of this information is redundant with information
+/// elsewhere in the summary.  Consider reducing the redundancy to reduce
+/// summary size.
 table UnlinkedPublicName {
-  /**
-   * The kind of object referred to by the name.
-   */
+  /// The kind of object referred to by the name.
   kind:ReferenceKind (id: 1);
 
-  /**
-   * If this [UnlinkedPublicName] is a class, the list of members which can be
-   * referenced statically - static fields, static methods, and constructors.
-   * Otherwise empty.
-   *
-   * Unnamed constructors are not included since they do not constitute a
-   * separate name added to any namespace.
-   */
+  /// If this [UnlinkedPublicName] is a class, the list of members which can be
+  /// referenced statically - static fields, static methods, and constructors.
+  /// Otherwise empty.
+  ///
+  /// Unnamed constructors are not included since they do not constitute a
+  /// separate name added to any namespace.
   members:[UnlinkedPublicName] (id: 2);
 
-  /**
-   * The name itself.
-   */
+  /// The name itself.
   name:string (id: 0);
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it accepts.  Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it accepts.  Otherwise zero.
   numTypeParameters:uint (id: 3);
 }
 
-/**
- * Unlinked summary information about what a compilation unit contributes to a
- * library's public namespace.  This is the subset of [UnlinkedUnit] that is
- * required from dependent libraries in order to perform prelinking.
- */
+/// Unlinked summary information about what a compilation unit contributes to a
+/// library's public namespace.  This is the subset of [UnlinkedUnit] that is
+/// required from dependent libraries in order to perform prelinking.
 table UnlinkedPublicNamespace {
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   exports:[UnlinkedExportPublic] (id: 2);
 
-  /**
-   * Public names defined in the compilation unit.
-   *
-   * TODO(paulberry): consider sorting these names to reduce unnecessary
-   * relinking.
-   */
+  /// Public names defined in the compilation unit.
+  ///
+  /// TODO(paulberry): consider sorting these names to reduce unnecessary
+  /// relinking.
   names:[UnlinkedPublicName] (id: 0);
 
-  /**
-   * URIs referenced by part declarations in the compilation unit.
-   */
+  /// URIs referenced by part declarations in the compilation unit.
   parts:[string] (id: 1);
 }
 
-/**
- * Unlinked summary information about a name referred to in one library that
- * might be defined in another.
- */
+/// Unlinked summary information about a name referred to in one library that
+/// might be defined in another.
 table UnlinkedReference {
-  /**
-   * Name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   * For the pseudo-type `bottom`, the string is "*bottom*".
-   */
+  /// Name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
+  /// For the pseudo-type `bottom`, the string is "*bottom*".
   name:string (id: 0);
 
-  /**
-   * Prefix used to refer to the entity, or zero if no prefix is used.  This is
-   * an index into [UnlinkedUnit.references].
-   *
-   * Prefix references must always point backward; that is, for all i, if
-   * UnlinkedUnit.references[i].prefixReference != 0, then
-   * UnlinkedUnit.references[i].prefixReference < i.
-   */
+  /// Prefix used to refer to the entity, or zero if no prefix is used.  This is
+  /// an index into [UnlinkedUnit.references].
+  ///
+  /// Prefix references must always point backward; that is, for all i, if
+  /// UnlinkedUnit.references[i].prefixReference != 0, then
+  /// UnlinkedUnit.references[i].prefixReference < i.
   prefixReference:uint (id: 1);
 }
 
-/**
- * Unlinked summary information about a typedef declaration.
- */
+/// Unlinked summary information about a typedef declaration.
 table UnlinkedTypedef {
-  /**
-   * Annotations for this typedef.
-   */
+  /// Annotations for this typedef.
   annotations:[UnlinkedExpr] (id: 4);
 
-  /**
-   * Code range of the typedef.
-   */
+  /// Code range of the typedef.
   codeRange:CodeRange (id: 7);
 
-  /**
-   * Documentation comment for the typedef, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the typedef, or `null` if there is no
+  /// documentation comment.
   documentationComment:UnlinkedDocumentationComment (id: 6);
 
-  /**
-   * Name of the typedef.
-   */
+  /// Name of the typedef.
   name:string (id: 0);
 
-  /**
-   * Offset of the typedef name relative to the beginning of the file.
-   */
+  /// Offset of the typedef name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
-  /**
-   * Parameters of the executable, if any.
-   */
+  /// Parameters of the executable, if any.
   parameters:[UnlinkedParam] (id: 3);
 
-  /**
-   * If [style] is [TypedefStyle.functionType], the return type of the typedef.
-   * If [style] is [TypedefStyle.genericFunctionType], the function type being
-   * defined.
-   */
+  /// If [style] is [TypedefStyle.functionType], the return type of the typedef.
+  /// If [style] is [TypedefStyle.genericFunctionType], the function type being
+  /// defined.
   returnType:EntityRef (id: 2);
 
-  /**
-   * The style of the typedef.
-   */
+  /// The style of the typedef.
   style:TypedefStyle (id: 8);
 
-  /**
-   * Type parameters of the typedef, if any.
-   */
+  /// Type parameters of the typedef, if any.
   typeParameters:[UnlinkedTypeParam] (id: 5);
 }
 
-/**
- * Unlinked summary information about a type parameter declaration.
- */
+/// Unlinked summary information about a type parameter declaration.
 table UnlinkedTypeParam {
-  /**
-   * Annotations for this type parameter.
-   */
+  /// Annotations for this type parameter.
   annotations:[UnlinkedExpr] (id: 3);
 
-  /**
-   * Bound of the type parameter, if a bound is explicitly declared.  Otherwise
-   * null.
-   */
+  /// Bound of the type parameter, if a bound is explicitly declared.  Otherwise
+  /// null.
   bound:EntityRef (id: 2);
 
-  /**
-   * Code range of the type parameter.
-   */
+  /// Code range of the type parameter.
   codeRange:CodeRange (id: 4);
 
-  /**
-   * Name of the type parameter.
-   */
+  /// Name of the type parameter.
   name:string (id: 0);
 
-  /**
-   * Offset of the type parameter name relative to the beginning of the file.
-   */
+  /// Offset of the type parameter name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 }
 
-/**
- * Unlinked summary information about a compilation unit ("part file").
- */
+/// Unlinked summary information about a compilation unit ("part file").
 table UnlinkedUnit {
-  /**
-   * MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
-   * including this one) as 16 unsigned 8-bit integer values.  This can be used
-   * to identify when the API of a unit may have changed.
-   */
+  /// MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
+  /// including this one) as 16 unsigned 8-bit integer values.  This can be used
+  /// to identify when the API of a unit may have changed.
   apiSignature:[uint] (id: 19);
 
-  /**
-   * Classes declared in the compilation unit.
-   */
+  /// Classes declared in the compilation unit.
   classes:[UnlinkedClass] (id: 2);
 
-  /**
-   * Code range of the unit.
-   */
+  /// Code range of the unit.
   codeRange:CodeRange (id: 15);
 
-  /**
-   * Enums declared in the compilation unit.
-   */
+  /// Enums declared in the compilation unit.
   enums:[UnlinkedEnum] (id: 12);
 
-  /**
-   * Top level executable objects (functions, getters, and setters) declared in
-   * the compilation unit.
-   */
+  /// Top level executable objects (functions, getters, and setters) declared in
+  /// the compilation unit.
   executables:[UnlinkedExecutable] (id: 4);
 
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   exports:[UnlinkedExportNonPublic] (id: 13);
 
-  /**
-   * If this compilation unit was summarized in fallback mode, the path where
-   * the compilation unit may be found on disk.  Otherwise empty.
-   *
-   * When this field is non-empty, all other fields in the data structure have
-   * their default values.
-   */
+  /// If this compilation unit was summarized in fallback mode, the path where
+  /// the compilation unit may be found on disk.  Otherwise empty.
+  ///
+  /// When this field is non-empty, all other fields in the data structure have
+  /// their default values.
   fallbackModePath:string (id: 16, deprecated);
 
-  /**
-   * Import declarations in the compilation unit.
-   */
+  /// Import declarations in the compilation unit.
   imports:[UnlinkedImport] (id: 5);
 
-  /**
-   * Indicates whether the unit contains a "part of" declaration.
-   */
+  /// Indicates whether the unit contains a "part of" declaration.
   isPartOf:bool (id: 18);
 
-  /**
-   * Annotations for the library declaration, or the empty list if there is no
-   * library declaration.
-   */
+  /// Annotations for the library declaration, or the empty list if there is no
+  /// library declaration.
   libraryAnnotations:[UnlinkedExpr] (id: 14);
 
-  /**
-   * Documentation comment for the library, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the library, or `null` if there is no
+  /// documentation comment.
   libraryDocumentationComment:UnlinkedDocumentationComment (id: 9);
 
-  /**
-   * Name of the library (from a "library" declaration, if present).
-   */
+  /// Name of the library (from a "library" declaration, if present).
   libraryName:string (id: 6);
 
-  /**
-   * Length of the library name as it appears in the source code (or 0 if the
-   * library has no name).
-   */
+  /// Length of the library name as it appears in the source code (or 0 if the
+  /// library has no name).
   libraryNameLength:uint (id: 7);
 
-  /**
-   * Offset of the library name relative to the beginning of the file (or 0 if
-   * the library has no name).
-   */
+  /// Offset of the library name relative to the beginning of the file (or 0 if
+  /// the library has no name).
   libraryNameOffset:uint (id: 8);
 
-  /**
-   * Offsets of the first character of each line in the source code.
-   */
+  /// Offsets of the first character of each line in the source code.
   lineStarts:[uint] (id: 17);
 
-  /**
-   * Mixins declared in the compilation unit.
-   */
+  /// Mixins declared in the compilation unit.
   mixins:[UnlinkedClass] (id: 20);
 
-  /**
-   * Part declarations in the compilation unit.
-   */
+  /// Part declarations in the compilation unit.
   parts:[UnlinkedPart] (id: 11);
 
-  /**
-   * Unlinked public namespace of this compilation unit.
-   */
+  /// Unlinked public namespace of this compilation unit.
   publicNamespace:UnlinkedPublicNamespace (id: 0);
 
-  /**
-   * Top level and prefixed names referred to by this compilation unit.  The
-   * zeroth element of this array is always populated and is used to represent
-   * the absence of a reference in places where a reference is optional (for
-   * example [UnlinkedReference.prefixReference or
-   * UnlinkedImport.prefixReference]).
-   */
+  /// Top level and prefixed names referred to by this compilation unit.  The
+  /// zeroth element of this array is always populated and is used to represent
+  /// the absence of a reference in places where a reference is optional (for
+  /// example [UnlinkedReference.prefixReference or
+  /// UnlinkedImport.prefixReference]).
   references:[UnlinkedReference] (id: 1);
 
-  /**
-   * Typedefs declared in the compilation unit.
-   */
+  /// Typedefs declared in the compilation unit.
   typedefs:[UnlinkedTypedef] (id: 10);
 
-  /**
-   * Top level variables declared in the compilation unit.
-   */
+  /// Top level variables declared in the compilation unit.
   variables:[UnlinkedVariable] (id: 3);
 }
 
-/**
- * Unlinked summary information about a top level variable, local variable, or
- * a field.
- */
+/// Unlinked summary information about a top level variable, local variable, or
+/// a field.
 table UnlinkedVariable {
-  /**
-   * Annotations for this variable.
-   */
+  /// Annotations for this variable.
   annotations:[UnlinkedExpr] (id: 8);
 
-  /**
-   * Code range of the variable.
-   */
+  /// Code range of the variable.
   codeRange:CodeRange (id: 5);
 
-  /**
-   * Documentation comment for the variable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the variable, or `null` if there is no
+  /// documentation comment.
   documentationComment:UnlinkedDocumentationComment (id: 10);
 
-  /**
-   * If this variable is inferable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the inferred type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then no type was
-   * inferred for this variable, so its static type is `dynamic`.
-   */
+  /// If this variable is inferable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the inferred type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then no type was
+  /// inferred for this variable, so its static type is `dynamic`.
   inferredTypeSlot:uint (id: 9);
 
-  /**
-   * If this is an instance non-final field, a nonzero slot id which is unique
-   * within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then the parameter of the
-   * synthetic setter inherits `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is an instance non-final field, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then the parameter of the
+  /// synthetic setter inherits `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   inheritsCovariantSlot:uint (id: 15);
 
-  /**
-   * The synthetic initializer function of the variable.  Absent if the variable
-   * does not have an initializer.
-   */
+  /// The synthetic initializer function of the variable.  Absent if the
+  /// variable does not have an initializer.
   initializer:UnlinkedExecutable (id: 13);
 
-  /**
-   * Indicates whether the variable is declared using the `const` keyword.
-   */
+  /// Indicates whether the variable is declared using the `const` keyword.
   isConst:bool (id: 6);
 
-  /**
-   * Indicates whether this variable is declared using the `covariant` keyword.
-   * This should be false for everything except instance fields.
-   */
+  /// Indicates whether this variable is declared using the `covariant` keyword.
+  /// This should be false for everything except instance fields.
   isCovariant:bool (id: 14);
 
-  /**
-   * Indicates whether the variable is declared using the `final` keyword.
-   */
+  /// Indicates whether the variable is declared using the `final` keyword.
   isFinal:bool (id: 7);
 
-  /**
-   * Indicates whether the variable is declared using the `static` keyword.
-   *
-   * Note that for top level variables, this flag is false, since they are not
-   * declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the variable is declared using the `static` keyword.
+  ///
+  /// Note that for top level variables, this flag is false, since they are not
+  /// declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   isStatic:bool (id: 4);
 
-  /**
-   * Name of the variable.
-   */
+  /// Name of the variable.
   name:string (id: 0);
 
-  /**
-   * Offset of the variable name relative to the beginning of the file.
-   */
+  /// Offset of the variable name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
-  /**
-   * If this variable is propagable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the propagated type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then this variable's
-   * propagated type is the same as its declared type.
-   *
-   * Non-propagable variables have a [propagatedTypeSlot] of zero.
-   */
+  /// If this variable is propagable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the propagated type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then this variable's
+  /// propagated type is the same as its declared type.
+  ///
+  /// Non-propagable variables have a [propagatedTypeSlot] of zero.
   propagatedTypeSlot:uint (id: 2);
 
-  /**
-   * Declared type of the variable.  Absent if the type is implicit.
-   */
+  /// Declared type of the variable.  Absent if the type is implicit.
   type:EntityRef (id: 3);
 
-  /**
-   * If a local variable, the length of the visible range; zero otherwise.
-   */
+  /// If a local variable, the length of the visible range; zero otherwise.
   visibleLength:uint (id: 11, deprecated);
 
-  /**
-   * If a local variable, the beginning of the visible range; zero otherwise.
-   */
+  /// If a local variable, the beginning of the visible range; zero otherwise.
   visibleOffset:uint (id: 12, deprecated);
 }
 
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 4a9640c..01c2a7c 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -2,43 +2,41 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/**
- * This file is an "idl" style description of the summary format.  It
- * contains abstract classes which declare the interface for reading data from
- * summaries.  It is parsed and transformed into code that implements the
- * summary format.
- *
- * The code generation process introduces the following semantics:
- * - Getters of type List never return null, and have a default value of the
- *   empty list.
- * - Getters of type int return unsigned 32-bit integers, never null, and have
- *   a default value of zero.
- * - Getters of type String never return null, and have a default value of ''.
- * - Getters of type bool never return null, and have a default value of false.
- * - Getters whose type is an enum never return null, and have a default value
- *   of the first value declared in the enum.
- *
- * Terminology used in this document:
- * - "Unlinked" refers to information that can be determined from reading a
- *   single .dart file in isolation.
- * - "Prelinked" refers to information that can be determined from the defining
- *   compilation unit of a library, plus direct imports, plus the transitive
- *   closure of exports reachable from those libraries, plus all part files
- *   constituting those libraries.
- * - "Linked" refers to all other information; in theory, this information may
- *   depend on all files in the transitive import/export closure.  However, in
- *   practice we expect that the number of additional dependencies will usually
- *   be small, since the additional dependencies only need to be consulted for
- *   type propagation, type inference, and constant evaluation, which typically
- *   have short dependency chains.
- *
- * Since we expect "linked" and "prelinked" dependencies to be similar, we only
- * rarely distinguish between them; most information is that is not "unlinked"
- * is typically considered "linked" for simplicity.
- *
- * Except as otherwise noted, synthetic elements are not stored in the summary;
- * they are re-synthesized at the time the summary is read.
- */
+/// This file is an "idl" style description of the summary format.  It
+/// contains abstract classes which declare the interface for reading data from
+/// summaries.  It is parsed and transformed into code that implements the
+/// summary format.
+///
+/// The code generation process introduces the following semantics:
+/// - Getters of type List never return null, and have a default value of the
+///   empty list.
+/// - Getters of type int return unsigned 32-bit integers, never null, and have
+///   a default value of zero.
+/// - Getters of type String never return null, and have a default value of ''.
+/// - Getters of type bool never return null, and have a default value of false.
+/// - Getters whose type is an enum never return null, and have a default value
+///   of the first value declared in the enum.
+///
+/// Terminology used in this document:
+/// - "Unlinked" refers to information that can be determined from reading a
+///   single .dart file in isolation.
+/// - "Prelinked" refers to information that can be determined from the defining
+///   compilation unit of a library, plus direct imports, plus the transitive
+///   closure of exports reachable from those libraries, plus all part files
+///   constituting those libraries.
+/// - "Linked" refers to all other information; in theory, this information may
+///   depend on all files in the transitive import/export closure.  However, in
+///   practice we expect that the number of additional dependencies will usually
+///   be small, since the additional dependencies only need to be consulted for
+///   type propagation, type inference, and constant evaluation, which typically
+///   have short dependency chains.
+///
+/// Since we expect "linked" and "prelinked" dependencies to be similar, we only
+/// rarely distinguish between them; most information is that is not "unlinked"
+/// is typically considered "linked" for simplicity.
+///
+/// Except as otherwise noted, synthetic elements are not stored in the summary;
+/// they are re-synthesized at the time the summary is read.
 library analyzer.tool.summary.idl;
 
 import 'package:analyzer/dart/element/element.dart';
@@ -47,1192 +45,869 @@
 import 'base.dart' show Id, TopLevel;
 import 'format.dart' as generated;
 
-/**
- * Annotation describing information which is not part of Dart semantics; in
- * other words, if this information (or any information it refers to) changes,
- * static analysis and runtime behavior of the library are unaffected.
- *
- * Information that has purely local effect (in other words, it does not affect
- * the API of the code being analyzed) is also marked as `informative`.
- */
+/// Annotation describing information which is not part of Dart semantics; in
+/// other words, if this information (or any information it refers to) changes,
+/// static analysis and runtime behavior of the library are unaffected.
+///
+/// Information that has purely local effect (in other words, it does not affect
+/// the API of the code being analyzed) is also marked as `informative`.
 const informative = null;
 
-/**
- * Information about the context of an exception in analysis driver.
- */
+/// Information about the context of an exception in analysis driver.
 @TopLevel('ADEC')
 abstract class AnalysisDriverExceptionContext extends base.SummaryClass {
   factory AnalysisDriverExceptionContext.fromBuffer(List<int> buffer) =>
       generated.readAnalysisDriverExceptionContext(buffer);
 
-  /**
-   * The exception string.
-   */
+  /// The exception string.
   @Id(1)
   String get exception;
 
-  /**
-   * The state of files when the exception happened.
-   */
+  /// The state of files when the exception happened.
   @Id(3)
   List<AnalysisDriverExceptionFile> get files;
 
-  /**
-   * The path of the file being analyzed when the exception happened.
-   */
+  /// The path of the file being analyzed when the exception happened.
   @Id(0)
   String get path;
 
-  /**
-   * The exception stack trace string.
-   */
+  /// The exception stack trace string.
   @Id(2)
   String get stackTrace;
 }
 
-/**
- * Information about a single file in [AnalysisDriverExceptionContext].
- */
+/// Information about a single file in [AnalysisDriverExceptionContext].
 abstract class AnalysisDriverExceptionFile extends base.SummaryClass {
-  /**
-   * The content of the file.
-   */
+  /// The content of the file.
   @Id(1)
   String get content;
 
-  /**
-   * The path of the file.
-   */
+  /// The path of the file.
   @Id(0)
   String get path;
 }
 
-/**
- * Information about a resolved unit.
- */
+/// Information about a resolved unit.
 @TopLevel('ADRU')
 abstract class AnalysisDriverResolvedUnit extends base.SummaryClass {
   factory AnalysisDriverResolvedUnit.fromBuffer(List<int> buffer) =>
       generated.readAnalysisDriverResolvedUnit(buffer);
 
-  /**
-   * The full list of analysis errors, both syntactic and semantic.
-   */
+  /// The full list of analysis errors, both syntactic and semantic.
   @Id(0)
   List<AnalysisDriverUnitError> get errors;
 
-  /**
-   * The index of the unit.
-   */
+  /// The index of the unit.
   @Id(1)
   AnalysisDriverUnitIndex get index;
 }
 
-/**
- * Information about a subtype of one or more classes.
- */
+/// Information about a subtype of one or more classes.
 abstract class AnalysisDriverSubtype extends base.SummaryClass {
-  /**
-   * The names of defined instance members.
-   * They are indexes into [AnalysisDriverUnitError.strings] list.
-   * The list is sorted in ascending order.
-   */
+  /// The names of defined instance members.
+  /// They are indexes into [AnalysisDriverUnitError.strings] list.
+  /// The list is sorted in ascending order.
   @Id(1)
   List<int> get members;
 
-  /**
-   * The name of the class.
-   * It is an index into [AnalysisDriverUnitError.strings] list.
-   */
+  /// The name of the class.
+  /// It is an index into [AnalysisDriverUnitError.strings] list.
   @Id(0)
   int get name;
 }
 
-/**
- * Information about an error in a resolved unit.
- */
+/// Information about an error in a resolved unit.
 abstract class AnalysisDriverUnitError extends base.SummaryClass {
-  /**
-   * The optional correction hint for the error.
-   */
+  /// The optional correction hint for the error.
   @Id(4)
   String get correction;
 
-  /**
-   * The length of the error in the file.
-   */
+  /// The length of the error in the file.
   @Id(1)
   int get length;
 
-  /**
-   * The message of the error.
-   */
+  /// The message of the error.
   @Id(3)
   String get message;
 
-  /**
-   * The offset from the beginning of the file.
-   */
+  /// The offset from the beginning of the file.
   @Id(0)
   int get offset;
 
-  /**
-   * The unique name of the error code.
-   */
+  /// The unique name of the error code.
   @Id(2)
   String get uniqueName;
 }
 
-/**
- * Information about a resolved unit.
- */
+/// Information about a resolved unit.
 @TopLevel('ADUI')
 abstract class AnalysisDriverUnitIndex extends base.SummaryClass {
   factory AnalysisDriverUnitIndex.fromBuffer(List<int> buffer) =>
       generated.readAnalysisDriverUnitIndex(buffer);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   @Id(4)
   List<IndexSyntheticElementKind> get elementKinds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// index.
   @Id(7)
   List<int> get elementNameClassMemberIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this index.
   @Id(8)
   List<int> get elementNameParameterIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this index.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this index.
   @Id(6)
   List<int> get elementNameUnitMemberIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   @Id(5)
   List<int> get elementUnits;
 
-  /**
-   * Identifier of the null string in [strings].
-   */
+  /// Identifier of the null string in [strings].
   @Id(1)
   int get nullStringId;
 
-  /**
-   * List of unique element strings used in this index.  The list is sorted in
-   * ascending order, so that the client can quickly check the presence of a
-   * string in this index.
-   */
+  /// List of unique element strings used in this index.  The list is sorted in
+  /// ascending order, so that the client can quickly check the presence of a
+  /// string in this index.
   @Id(0)
   List<String> get strings;
 
-  /**
-   * The list of classes declared in the unit.
-   */
+  /// The list of classes declared in the unit.
   @Id(19)
   List<AnalysisDriverSubtype> get subtypes;
 
-  /**
-   * The identifiers of supertypes of elements at corresponding indexes
-   * in [subtypes].  They are indexes into [strings] list. The list is sorted
-   * in ascending order.  There might be more than one element with the same
-   * value if there is more than one subtype of this supertype.
-   */
+  /// The identifiers of supertypes of elements at corresponding indexes
+  /// in [subtypes].  They are indexes into [strings] list. The list is sorted
+  /// in ascending order.  There might be more than one element with the same
+  /// value if there is more than one subtype of this supertype.
   @Id(18)
   List<int> get supertypes;
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   @Id(2)
   List<int> get unitLibraryUris;
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the index.  It is an index into [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the index.  It is an index into [strings]
+  /// list.
   @Id(3)
   List<int> get unitUnitUris;
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   @Id(13)
   List<bool> get usedElementIsQualifiedFlags;
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   @Id(10)
   List<IndexRelationKind> get usedElementKinds;
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   @Id(12)
   List<int> get usedElementLengths;
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   @Id(11)
   List<int> get usedElementOffsets;
 
-  /**
-   * Each item of this list is the index into [elementUnits],
-   * [elementNameUnitMemberIds], [elementNameClassMemberIds] and
-   * [elementNameParameterIds].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this index.
-   */
+  /// Each item of this list is the index into [elementUnits],
+  /// [elementNameUnitMemberIds], [elementNameClassMemberIds] and
+  /// [elementNameParameterIds].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this index.
   @Id(9)
   List<int> get usedElements;
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   @Id(17)
   List<bool> get usedNameIsQualifiedFlags;
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   @Id(15)
   List<IndexRelationKind> get usedNameKinds;
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   @Id(16)
   List<int> get usedNameOffsets;
 
-  /**
-   * Each item of this list is the index into [strings] for a used name.  The
-   * list is sorted in ascending order, so that the client can quickly find
-   * whether a name is used in this index.
-   */
+  /// Each item of this list is the index into [strings] for a used name.  The
+  /// list is sorted in ascending order, so that the client can quickly find
+  /// whether a name is used in this index.
   @Id(14)
   List<int> get usedNames;
 }
 
-/**
- * Information about an unlinked unit.
- */
+/// Information about an unlinked unit.
 @TopLevel('ADUU')
 abstract class AnalysisDriverUnlinkedUnit extends base.SummaryClass {
   factory AnalysisDriverUnlinkedUnit.fromBuffer(List<int> buffer) =>
       generated.readAnalysisDriverUnlinkedUnit(buffer);
 
-  /**
-   * List of class member names defined by the unit.
-   */
+  /// List of class member names defined by the unit.
   @Id(3)
   List<String> get definedClassMemberNames;
 
-  /**
-   * List of top-level names defined by the unit.
-   */
+  /// List of top-level names defined by the unit.
   @Id(2)
   List<String> get definedTopLevelNames;
 
-  /**
-   * List of external names referenced by the unit.
-   */
+  /// List of external names referenced by the unit.
   @Id(0)
   List<String> get referencedNames;
 
-  /**
-   * List of names which are used in `extends`, `with` or `implements` clauses
-   * in the file. Import prefixes and type arguments are not included.
-   */
+  /// List of names which are used in `extends`, `with` or `implements` clauses
+  /// in the file. Import prefixes and type arguments are not included.
   @Id(4)
   List<String> get subtypedNames;
 
-  /**
-   * Unlinked information for the unit.
-   */
+  /// Unlinked information for the unit.
   @Id(1)
   UnlinkedUnit get unit;
 }
 
-/**
- * Information about an element code range.
- */
+/// Information about an element code range.
 abstract class CodeRange extends base.SummaryClass {
-  /**
-   * Length of the element code.
-   */
+  /// Length of the element code.
   @Id(1)
   int get length;
 
-  /**
-   * Offset of the element code relative to the beginning of the file.
-   */
+  /// Offset of the element code relative to the beginning of the file.
   @Id(0)
   int get offset;
 }
 
-/**
- * Summary information about a reference to an entity such as a type, top level
- * executable, or executable within a class.
- */
+/// Summary information about a reference to an entity such as a type, top level
+/// executable, or executable within a class.
 abstract class EntityRef extends base.SummaryClass {
-  /**
-   * The kind of entity being represented.
-   */
+  /// The kind of entity being represented.
   @Id(8)
   EntityRefKind get entityKind;
 
-  /**
-   * Notice: This will be deprecated. However, its not deprecated yet, as we're
-   * keeping it for backwards compatibilty, and marking it deprecated makes it
-   * unreadable.
-   *
-   * TODO(mfairhurst) mark this deprecated, and remove its logic.
-   *
-   * If this is a reference to a function type implicitly defined by a
-   * function-typed parameter, a list of zero-based indices indicating the path
-   * from the entity referred to by [reference] to the appropriate type
-   * parameter.  Otherwise the empty list.
-   *
-   * If there are N indices in this list, then the entity being referred to is
-   * the function type implicitly defined by a function-typed parameter of a
-   * function-typed parameter, to N levels of nesting.  The first index in the
-   * list refers to the outermost level of nesting; for example if [reference]
-   * refers to the entity defined by:
-   *
-   *     void f(x, void g(y, z, int h(String w))) { ... }
-   *
-   * Then to refer to the function type implicitly defined by parameter `h`
-   * (which is parameter 2 of parameter 1 of `f`), then
-   * [implicitFunctionTypeIndices] should be [1, 2].
-   *
-   * Note that if the entity being referred to is a generic method inside a
-   * generic class, then the type arguments in [typeArguments] are applied
-   * first to the class and then to the method.
-   */
+  /// Notice: This will be deprecated. However, its not deprecated yet, as we're
+  /// keeping it for backwards compatibilty, and marking it deprecated makes it
+  /// unreadable.
+  ///
+  /// TODO(mfairhurst) mark this deprecated, and remove its logic.
+  ///
+  /// If this is a reference to a function type implicitly defined by a
+  /// function-typed parameter, a list of zero-based indices indicating the path
+  /// from the entity referred to by [reference] to the appropriate type
+  /// parameter.  Otherwise the empty list.
+  ///
+  /// If there are N indices in this list, then the entity being referred to is
+  /// the function type implicitly defined by a function-typed parameter of a
+  /// function-typed parameter, to N levels of nesting.  The first index in the
+  /// list refers to the outermost level of nesting; for example if [reference]
+  /// refers to the entity defined by:
+  ///
+  ///     void f(x, void g(y, z, int h(String w))) { ... }
+  ///
+  /// Then to refer to the function type implicitly defined by parameter `h`
+  /// (which is parameter 2 of parameter 1 of `f`), then
+  /// [implicitFunctionTypeIndices] should be [1, 2].
+  ///
+  /// Note that if the entity being referred to is a generic method inside a
+  /// generic class, then the type arguments in [typeArguments] are applied
+  /// first to the class and then to the method.
   @Id(4)
   List<int> get implicitFunctionTypeIndices;
 
-  /**
-   * If this is a reference to a type parameter, one-based index into the list
-   * of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
-   * Bruijn index conventions; that is, innermost parameters come first, and
-   * if a class or method has multiple parameters, they are indexed from right
-   * to left.  So for instance, if the enclosing declaration is
-   *
-   *     class C<T,U> {
-   *       m<V,W> {
-   *         ...
-   *       }
-   *     }
-   *
-   * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
-   * respectively.
-   *
-   * If the type being referred to is not a type parameter, [paramReference] is
-   * zero.
-   */
+  /// If this is a reference to a type parameter, one-based index into the list
+  /// of [UnlinkedTypeParam]s currently in effect.  Indexing is done using De
+  /// Bruijn index conventions; that is, innermost parameters come first, and
+  /// if a class or method has multiple parameters, they are indexed from right
+  /// to left.  So for instance, if the enclosing declaration is
+  ///
+  ///     class C<T,U> {
+  ///       m<V,W> {
+  ///         ...
+  ///       }
+  ///     }
+  ///
+  /// Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
+  /// respectively.
+  ///
+  /// If the type being referred to is not a type parameter, [paramReference] is
+  /// zero.
   @Id(3)
   int get paramReference;
 
-  /**
-   * Index into [UnlinkedUnit.references] for the entity being referred to, or
-   * zero if this is a reference to a type parameter.
-   */
+  /// Index into [UnlinkedUnit.references] for the entity being referred to, or
+  /// zero if this is a reference to a type parameter.
   @Id(0)
   int get reference;
 
-  /**
-   * If this [EntityRef] appears in a syntactic context where its type arguments
-   * might need to be inferred by a method other than instantiate-to-bounds,
-   * and [typeArguments] is empty, a slot id (which is unique within the
-   * compilation unit).  If an entry appears in [LinkedUnit.types] whose [slot]
-   * matches this value, that entry will contain the complete inferred type.
-   *
-   * This is called `refinedSlot` to clarify that if it points to an inferred
-   * type, it points to a type that is a "refinement" of this one (one in which
-   * some type arguments have been inferred).
-   */
+  /// If this [EntityRef] appears in a syntactic context where its type
+  /// arguments might need to be inferred by a method other than
+  /// instantiate-to-bounds, and [typeArguments] is empty, a slot id (which is
+  /// unique within the compilation unit).  If an entry appears in
+  /// [LinkedUnit.types] whose [slot] matches this value, that entry will
+  /// contain the complete inferred type.
+  ///
+  /// This is called `refinedSlot` to clarify that if it points to an inferred
+  /// type, it points to a type that is a "refinement" of this one (one in which
+  /// some type arguments have been inferred).
   @Id(9)
   int get refinedSlot;
 
-  /**
-   * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
-   * is unique within the compilation unit) identifying the target of type
-   * propagation or type inference with which this [EntityRef] is associated.
-   *
-   * Otherwise zero.
-   */
+  /// If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
+  /// is unique within the compilation unit) identifying the target of type
+  /// propagation or type inference with which this [EntityRef] is associated.
+  ///
+  /// Otherwise zero.
   @Id(2)
   int get slot;
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the function parameters.  Otherwise
-   * empty.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the function parameters.  Otherwise
+  /// empty.
   @Id(6)
   List<UnlinkedParam> get syntheticParams;
 
-  /**
-   * If this [EntityRef] is a reference to a function type whose
-   * [FunctionElement] is not in any library (e.g. a function type that was
-   * synthesized by a LUB computation), the return type of the function.
-   * Otherwise `null`.
-   */
+  /// If this [EntityRef] is a reference to a function type whose
+  /// [FunctionElement] is not in any library (e.g. a function type that was
+  /// synthesized by a LUB computation), the return type of the function.
+  /// Otherwise `null`.
   @Id(5)
   EntityRef get syntheticReturnType;
 
-  /**
-   * If this is an instantiation of a generic type or generic executable, the
-   * type arguments used to instantiate it (if any).
-   */
+  /// If this is an instantiation of a generic type or generic executable, the
+  /// type arguments used to instantiate it (if any).
   @Id(1)
   List<EntityRef> get typeArguments;
 
-  /**
-   * If this is a function type, the type parameters defined for the function
-   * type (if any).
-   */
+  /// If this is a function type, the type parameters defined for the function
+  /// type (if any).
   @Id(7)
   List<UnlinkedTypeParam> get typeParameters;
 }
 
-/**
- * Enum used to indicate the kind of an entity reference.
- */
+/// Enum used to indicate the kind of an entity reference.
 enum EntityRefKind {
-  /**
-   * The entity represents a named type.
-   */
+  /// The entity represents a named type.
   named,
 
-  /**
-   * The entity represents a generic function type.
-   */
+  /// The entity represents a generic function type.
   genericFunctionType,
 
-  /**
-   * The entity represents a function type that was synthesized by a LUB
-   * computation.
-   */
+  /// The entity represents a function type that was synthesized by a LUB
+  /// computation.
   syntheticFunction
 }
 
-/**
- * Enum used to indicate the kind of a name in index.
- */
+/// Enum used to indicate the kind of a name in index.
 enum IndexNameKind {
-  /**
-   * A top-level element.
-   */
+  /// A top-level element.
   topLevel,
 
-  /**
-   * A class member.
-   */
+  /// A class member.
   classMember
 }
 
-/**
- * Enum used to indicate the kind of an index relation.
- */
+/// Enum used to indicate the kind of an index relation.
 enum IndexRelationKind {
-  /**
-   * Left: class.
-   *   Is ancestor of (is extended or implemented, directly or indirectly).
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is ancestor of (is extended or implemented, directly or indirectly).
+  /// Right: other class declaration.
   IS_ANCESTOR_OF,
 
-  /**
-   * Left: class.
-   *   Is extended by.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is extended by.
+  /// Right: other class declaration.
   IS_EXTENDED_BY,
 
-  /**
-   * Left: class.
-   *   Is implemented by.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is implemented by.
+  /// Right: other class declaration.
   IS_IMPLEMENTED_BY,
 
-  /**
-   * Left: class.
-   *   Is mixed into.
-   * Right: other class declaration.
-   */
+  /// Left: class.
+  ///   Is mixed into.
+  /// Right: other class declaration.
   IS_MIXED_IN_BY,
 
-  /**
-   * Left: method, property accessor, function, variable.
-   *   Is invoked at.
-   * Right: location.
-   */
+  /// Left: method, property accessor, function, variable.
+  ///   Is invoked at.
+  /// Right: location.
   IS_INVOKED_BY,
 
-  /**
-   * Left: any element.
-   *   Is referenced (and not invoked, read/written) at.
-   * Right: location.
-   */
+  /// Left: any element.
+  ///   Is referenced (and not invoked, read/written) at.
+  /// Right: location.
   IS_REFERENCED_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is read at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is read at.
+  /// Right: location.
   IS_READ_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is both read and written at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is both read and written at.
+  /// Right: location.
   IS_READ_WRITTEN_BY,
 
-  /**
-   * Left: unresolved member name.
-   *   Is written at.
-   * Right: location.
-   */
+  /// Left: unresolved member name.
+  ///   Is written at.
+  /// Right: location.
   IS_WRITTEN_BY
 }
 
-/**
- * When we need to reference a synthetic element in [PackageIndex] we use a
- * value of this enum to specify which kind of the synthetic element we
- * actually reference.
- */
+/// When we need to reference a synthetic element in [PackageIndex] we use a
+/// value of this enum to specify which kind of the synthetic element we
+/// actually reference.
 enum IndexSyntheticElementKind {
-  /**
-   * Not a synthetic element.
-   */
+  /// Not a synthetic element.
   notSynthetic,
 
-  /**
-   * The unnamed synthetic constructor a class element.
-   */
+  /// The unnamed synthetic constructor a class element.
   constructor,
 
-  /**
-   * The synthetic field element.
-   */
+  /// The synthetic field element.
   field,
 
-  /**
-   * The synthetic getter of a property introducing element.
-   */
+  /// The synthetic getter of a property introducing element.
   getter,
 
-  /**
-   * The synthetic setter of a property introducing element.
-   */
+  /// The synthetic setter of a property introducing element.
   setter,
 
-  /**
-   * The synthetic top-level variable element.
-   */
+  /// The synthetic top-level variable element.
   topLevelVariable,
 
-  /**
-   * The synthetic `loadLibrary` element.
-   */
+  /// The synthetic `loadLibrary` element.
   loadLibrary,
 
-  /**
-   * The synthetic `index` getter of an enum.
-   */
+  /// The synthetic `index` getter of an enum.
   enumIndex,
 
-  /**
-   * The synthetic `values` getter of an enum.
-   */
+  /// The synthetic `values` getter of an enum.
   enumValues,
 
-  /**
-   * The containing unit itself.
-   */
+  /// The containing unit itself.
   unit
 }
 
-/**
- * Information about a dependency that exists between one library and another
- * due to an "import" declaration.
- */
+/// Information about a dependency that exists between one library and another
+/// due to an "import" declaration.
 abstract class LinkedDependency extends base.SummaryClass {
-  /**
-   * Absolute URI for the compilation units listed in the library's `part`
-   * declarations, empty string for invalid URI.
-   */
+  /// Absolute URI for the compilation units listed in the library's `part`
+  /// declarations, empty string for invalid URI.
   @Id(1)
   List<String> get parts;
 
-  /**
-   * The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
-   */
+  /// The absolute URI of the dependent library, e.g. `package:foo/bar.dart`.
   @Id(0)
   String get uri;
 }
 
-/**
- * Information about a single name in the export namespace of the library that
- * is not in the public namespace.
- */
+/// Information about a single name in the export namespace of the library that
+/// is not in the public namespace.
 abstract class LinkedExportName extends base.SummaryClass {
-  /**
-   * Index into [LinkedLibrary.dependencies] for the library in which the
-   * entity is defined.
-   */
+  /// Index into [LinkedLibrary.dependencies] for the library in which the
+  /// entity is defined.
   @Id(0)
   int get dependency;
 
-  /**
-   * The kind of the entity being referred to.
-   */
+  /// The kind of the entity being referred to.
   @Id(3)
   ReferenceKind get kind;
 
-  /**
-   * Name of the exported entity.  For an exported setter, this name includes
-   * the trailing '='.
-   */
+  /// Name of the exported entity.  For an exported setter, this name includes
+  /// the trailing '='.
   @Id(1)
   String get name;
 
-  /**
-   * Integer index indicating which unit in the exported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   */
+  /// Integer index indicating which unit in the exported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
   @Id(2)
   int get unit;
 }
 
-/**
- * Linked summary of a library.
- */
+/// Linked summary of a library.
 @TopLevel('LLib')
 abstract class LinkedLibrary extends base.SummaryClass {
   factory LinkedLibrary.fromBuffer(List<int> buffer) =>
       generated.readLinkedLibrary(buffer);
 
-  /**
-   * The libraries that this library depends on (either via an explicit import
-   * statement or via the implicit dependencies on `dart:core` and
-   * `dart:async`).  The first element of this array is a pseudo-dependency
-   * representing the library itself (it is also used for `dynamic` and
-   * `void`).  This is followed by elements representing "prelinked"
-   * dependencies (direct imports and the transitive closure of exports).
-   * After the prelinked dependencies are elements representing "linked"
-   * dependencies.
-   *
-   * A library is only included as a "linked" dependency if it is a true
-   * dependency (e.g. a propagated or inferred type or constant value
-   * implicitly refers to an element declared in the library) or
-   * anti-dependency (e.g. the result of type propagation or type inference
-   * depends on the lack of a certain declaration in the library).
-   */
+  /// The libraries that this library depends on (either via an explicit import
+  /// statement or via the implicit dependencies on `dart:core` and
+  /// `dart:async`).  The first element of this array is a pseudo-dependency
+  /// representing the library itself (it is also used for `dynamic` and
+  /// `void`).  This is followed by elements representing "prelinked"
+  /// dependencies (direct imports and the transitive closure of exports).
+  /// After the prelinked dependencies are elements representing "linked"
+  /// dependencies.
+  ///
+  /// A library is only included as a "linked" dependency if it is a true
+  /// dependency (e.g. a propagated or inferred type or constant value
+  /// implicitly refers to an element declared in the library) or
+  /// anti-dependency (e.g. the result of type propagation or type inference
+  /// depends on the lack of a certain declaration in the library).
   @Id(0)
   List<LinkedDependency> get dependencies;
 
-  /**
-   * For each export in [UnlinkedUnit.exports], an index into [dependencies]
-   * of the library being exported.
-   */
+  /// For each export in [UnlinkedUnit.exports], an index into [dependencies]
+  /// of the library being exported.
   @Id(6)
   List<int> get exportDependencies;
 
-  /**
-   * Information about entities in the export namespace of the library that are
-   * not in the public namespace of the library (that is, entities that are
-   * brought into the namespace via `export` directives).
-   *
-   * Sorted by name.
-   */
+  /// Information about entities in the export namespace of the library that are
+  /// not in the public namespace of the library (that is, entities that are
+  /// brought into the namespace via `export` directives).
+  ///
+  /// Sorted by name.
   @Id(4)
   List<LinkedExportName> get exportNames;
 
-  /**
-   * Indicates whether this library was summarized in "fallback mode".  If
-   * true, all other fields in the data structure have their default values.
-   */
+  /// Indicates whether this library was summarized in "fallback mode".  If
+  /// true, all other fields in the data structure have their default values.
   @deprecated
   @Id(5)
   bool get fallbackMode;
 
-  /**
-   * For each import in [UnlinkedUnit.imports], an index into [dependencies]
-   * of the library being imported.
-   */
+  /// For each import in [UnlinkedUnit.imports], an index into [dependencies]
+  /// of the library being imported.
   @Id(1)
   List<int> get importDependencies;
 
-  /**
-   * The number of elements in [dependencies] which are not "linked"
-   * dependencies (that is, the number of libraries in the direct imports plus
-   * the transitive closure of exports, plus the library itself).
-   */
+  /// The number of elements in [dependencies] which are not "linked"
+  /// dependencies (that is, the number of libraries in the direct imports plus
+  /// the transitive closure of exports, plus the library itself).
   @Id(2)
   int get numPrelinkedDependencies;
 
-  /**
-   * The linked summary of all the compilation units constituting the
-   * library.  The summary of the defining compilation unit is listed first,
-   * followed by the summary of each part, in the order of the `part`
-   * declarations in the defining compilation unit.
-   */
+  /// The linked summary of all the compilation units constituting the
+  /// library.  The summary of the defining compilation unit is listed first,
+  /// followed by the summary of each part, in the order of the `part`
+  /// declarations in the defining compilation unit.
   @Id(3)
   List<LinkedUnit> get units;
 }
 
-/**
- * Information about the resolution of an [UnlinkedReference].
- */
+/// Information about the resolution of an [UnlinkedReference].
 abstract class LinkedReference extends base.SummaryClass {
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * and the entity being referred to is contained within another entity, index
-   * of the containing entity.  This behaves similarly to
-   * [UnlinkedReference.prefixReference], however it is only used for class
-   * members, not for prefixed imports.
-   *
-   * Containing references must always point backward; that is, for all i, if
-   * LinkedUnit.references[i].containingReference != 0, then
-   * LinkedUnit.references[i].containingReference < i.
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// and the entity being referred to is contained within another entity, index
+  /// of the containing entity.  This behaves similarly to
+  /// [UnlinkedReference.prefixReference], however it is only used for class
+  /// members, not for prefixed imports.
+  ///
+  /// Containing references must always point backward; that is, for all i, if
+  /// LinkedUnit.references[i].containingReference != 0, then
+  /// LinkedUnit.references[i].containingReference < i.
   @Id(5)
   int get containingReference;
 
-  /**
-   * Index into [LinkedLibrary.dependencies] indicating which imported library
-   * declares the entity being referred to.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member), or if [kind] is [ReferenceKind.prefix].
-   */
+  /// Index into [LinkedLibrary.dependencies] indicating which imported library
+  /// declares the entity being referred to.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member), or if [kind] is [ReferenceKind.prefix].
   @Id(1)
   int get dependency;
 
-  /**
-   * The kind of the entity being referred to.  For the pseudo-types `dynamic`
-   * and `void`, the kind is [ReferenceKind.classOrEnum].
-   */
+  /// The kind of the entity being referred to.  For the pseudo-types `dynamic`
+  /// and `void`, the kind is [ReferenceKind.classOrEnum].
   @Id(2)
   ReferenceKind get kind;
 
-  /**
-   * If [kind] is [ReferenceKind.function] (that is, the entity being referred
-   * to is a local function), the index of the function within
-   * [UnlinkedExecutable.localFunctions].  Otherwise zero.
-   */
+  /// If [kind] is [ReferenceKind.function] (that is, the entity being referred
+  /// to is a local function), the index of the function within
+  /// [UnlinkedExecutable.localFunctions].  Otherwise zero.
   @deprecated
   @Id(6)
   int get localIndex;
 
-  /**
-   * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
-   * name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   */
+  /// If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+  /// name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
   @Id(3)
   String get name;
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it declares (does not include type parameters of enclosing entities).
-   * Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it declares (does not include type parameters of enclosing entities).
+  /// Otherwise zero.
   @Id(4)
   int get numTypeParameters;
 
-  /**
-   * Integer index indicating which unit in the imported library contains the
-   * definition of the entity.  As with indices into [LinkedLibrary.units],
-   * zero represents the defining compilation unit, and nonzero values
-   * represent parts in the order of the corresponding `part` declarations.
-   *
-   * Zero if this entity is contained within another entity (e.g. a class
-   * member).
-   */
+  /// Integer index indicating which unit in the imported library contains the
+  /// definition of the entity.  As with indices into [LinkedLibrary.units],
+  /// zero represents the defining compilation unit, and nonzero values
+  /// represent parts in the order of the corresponding `part` declarations.
+  ///
+  /// Zero if this entity is contained within another entity (e.g. a class
+  /// member).
   @Id(0)
   int get unit;
 }
 
-/**
- * Linked summary of a compilation unit.
- */
+/// Linked summary of a compilation unit.
 abstract class LinkedUnit extends base.SummaryClass {
-  /**
-   * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
-   * corresponding to const constructors that are part of cycles.
-   */
+  /// List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
+  /// corresponding to const constructors that are part of cycles.
   @Id(2)
   List<int> get constCycles;
 
-  /**
-   * List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
-   * [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
-   * that inherit `@covariant` behavior from a base class.
-   */
+  /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
+  /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
+  /// that inherit `@covariant` behavior from a base class.
   @Id(3)
   List<int> get parametersInheritingCovariant;
 
-  /**
-   * Information about the resolution of references within the compilation
-   * unit.  Each element of [UnlinkedUnit.references] has a corresponding
-   * element in this list (at the same index).  If this list has additional
-   * elements beyond the number of elements in [UnlinkedUnit.references], those
-   * additional elements are references that are only referred to implicitly
-   * (e.g. elements involved in inferred or propagated types).
-   */
+  /// Information about the resolution of references within the compilation
+  /// unit.  Each element of [UnlinkedUnit.references] has a corresponding
+  /// element in this list (at the same index).  If this list has additional
+  /// elements beyond the number of elements in [UnlinkedUnit.references], those
+  /// additional elements are references that are only referred to implicitly
+  /// (e.g. elements involved in inferred or propagated types).
   @Id(0)
   List<LinkedReference> get references;
 
-  /**
-   * The list of type inference errors.
-   */
+  /// The list of type inference errors.
   @Id(4)
   List<TopLevelInferenceError> get topLevelInferenceErrors;
 
-  /**
-   * List associating slot ids found inside the unlinked summary for the
-   * compilation unit with propagated and inferred types.
-   */
+  /// List associating slot ids found inside the unlinked summary for the
+  /// compilation unit with propagated and inferred types.
   @Id(1)
   List<EntityRef> get types;
 }
 
-/**
- * Summary information about a package.
- */
+/// Summary information about a package.
 @TopLevel('PBdl')
 abstract class PackageBundle extends base.SummaryClass {
   factory PackageBundle.fromBuffer(List<int> buffer) =>
       generated.readPackageBundle(buffer);
 
-  /**
-   * MD5 hash of the non-informative fields of the [PackageBundle] (not
-   * including this one).  This can be used to identify when the API of a
-   * package may have changed.
-   */
+  /// MD5 hash of the non-informative fields of the [PackageBundle] (not
+  /// including this one).  This can be used to identify when the API of a
+  /// package may have changed.
   @Id(7)
   @deprecated
   String get apiSignature;
 
-  /**
-   * Information about the packages this package depends on, if known.
-   */
+  /// Information about the packages this package depends on, if known.
   @Id(8)
   @informative
   @deprecated
   List<PackageDependencyInfo> get dependencies;
 
-  /**
-   * Linked libraries.
-   */
+  /// Linked libraries.
   @Id(0)
   List<LinkedLibrary> get linkedLibraries;
 
-  /**
-   * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
-   * `package:foo/bar.dart`.
-   */
+  /// The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
+  /// `package:foo/bar.dart`.
   @Id(1)
   List<String> get linkedLibraryUris;
 
-  /**
-   * Major version of the summary format.  See
-   * [PackageBundleAssembler.currentMajorVersion].
-   */
+  /// Major version of the summary format.  See
+  /// [PackageBundleAssembler.currentMajorVersion].
   @Id(5)
   int get majorVersion;
 
-  /**
-   * Minor version of the summary format.  See
-   * [PackageBundleAssembler.currentMinorVersion].
-   */
+  /// Minor version of the summary format.  See
+  /// [PackageBundleAssembler.currentMinorVersion].
   @Id(6)
   int get minorVersion;
 
-  /**
-   * List of MD5 hashes of the files listed in [unlinkedUnitUris].  Each hash
-   * is encoded as a hexadecimal string using lower case letters.
-   */
+  /// List of MD5 hashes of the files listed in [unlinkedUnitUris].  Each hash
+  /// is encoded as a hexadecimal string using lower case letters.
   @Id(4)
   @deprecated
   @informative
   List<String> get unlinkedUnitHashes;
 
-  /**
-   * Unlinked information for the compilation units constituting the package.
-   */
+  /// Unlinked information for the compilation units constituting the package.
   @Id(2)
   List<UnlinkedUnit> get unlinkedUnits;
 
-  /**
-   * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
-   */
+  /// The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
   @Id(3)
   List<String> get unlinkedUnitUris;
 }
 
-/**
- * Information about a single dependency of a summary package.
- */
+/// Information about a single dependency of a summary package.
 @deprecated
 abstract class PackageDependencyInfo extends base.SummaryClass {
-  /**
-   * API signature of this dependency.
-   */
+  /// API signature of this dependency.
   @Id(0)
   String get apiSignature;
 
-  /**
-   * If this dependency summarizes any files whose URI takes the form
-   * "package:<package_name>/...", a list of all such package names, sorted
-   * lexicographically.  Otherwise empty.
-   */
+  /// If this dependency summarizes any files whose URI takes the form
+  /// "package:<package_name>/...", a list of all such package names, sorted
+  /// lexicographically.  Otherwise empty.
   @Id(2)
   List<String> get includedPackageNames;
 
-  /**
-   * Indicates whether this dependency summarizes any files whose URI takes the
-   * form "dart:...".
-   */
+  /// Indicates whether this dependency summarizes any files whose URI takes the
+  /// form "dart:...".
   @Id(4)
   bool get includesDartUris;
 
-  /**
-   * Indicates whether this dependency summarizes any files whose URI takes the
-   * form "file:...".
-   */
+  /// Indicates whether this dependency summarizes any files whose URI takes the
+  /// form "file:...".
   @Id(3)
   bool get includesFileUris;
 
-  /**
-   * Relative path to the summary file for this dependency.  This is intended as
-   * a hint to help the analysis server locate summaries of dependencies.  We
-   * don't specify precisely what this path is relative to, but we expect it to
-   * be relative to a directory the analysis server can find (e.g. for projects
-   * built using Bazel, it would be relative to the "bazel-bin" directory).
-   *
-   * Absent if the path is not known.
-   */
+  /// Relative path to the summary file for this dependency.  This is intended
+  /// as a hint to help the analysis server locate summaries of dependencies.
+  /// We don't specify precisely what this path is relative to, but we expect
+  /// it to be relative to a directory the analysis server can find (e.g. for
+  /// projects built using Bazel, it would be relative to the "bazel-bin"
+  /// directory).
+  ///
+  /// Absent if the path is not known.
   @Id(1)
   String get summaryPath;
 }
 
-/**
- * Index information about a package.
- */
+/// Index information about a package.
 @TopLevel('Indx')
 abstract class PackageIndex extends base.SummaryClass {
   factory PackageIndex.fromBuffer(List<int> buffer) =>
       generated.readPackageIndex(buffer);
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the kind of the synthetic element.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the kind of the synthetic element.
   @Id(5)
   List<IndexSyntheticElementKind> get elementKinds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the class member element name, or `null` if the element
-   * is a top-level element.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the class member element name, or `null` if the element
+  /// is a top-level element.  The list is sorted in ascending order, so that
+  /// the client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   @Id(7)
   List<int> get elementNameClassMemberIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the named parameter name, or `null` if the element is not
-   * a named parameter.  The list is sorted in ascending order, so that the
-   * client can quickly check whether an element is referenced in this
-   * [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the named parameter name, or `null` if the element is
+  /// not a named parameter.  The list is sorted in ascending order, so that the
+  /// client can quickly check whether an element is referenced in this
+  /// [PackageIndex].
   @Id(8)
   List<int> get elementNameParameterIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the identifier of the top-level element name, or `null` if the element is
-   * the unit.  The list is sorted in ascending order, so that the client can
-   * quickly check whether an element is referenced in this [PackageIndex].
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the identifier of the top-level element name, or `null` if the element is
+  /// the unit.  The list is sorted in ascending order, so that the client can
+  /// quickly check whether an element is referenced in this [PackageIndex].
   @Id(1)
   List<int> get elementNameUnitMemberIds;
 
-  /**
-   * Each item of this list corresponds to a unique referenced element.  It is
-   * the index into [unitLibraryUris] and [unitUnitUris] for the library
-   * specific unit where the element is declared.
-   */
+  /// Each item of this list corresponds to a unique referenced element.  It is
+  /// the index into [unitLibraryUris] and [unitUnitUris] for the library
+  /// specific unit where the element is declared.
   @Id(0)
   List<int> get elementUnits;
 
-  /**
-   * List of unique element strings used in this [PackageIndex].  The list is
-   * sorted in ascending order, so that the client can quickly check the
-   * presence of a string in this [PackageIndex].
-   */
+  /// List of unique element strings used in this [PackageIndex].  The list is
+  /// sorted in ascending order, so that the client can quickly check the
+  /// presence of a string in this [PackageIndex].
   @Id(6)
   List<String> get strings;
 
-  /**
-   * Each item of this list corresponds to the library URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the library URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   @Id(2)
   List<int> get unitLibraryUris;
 
-  /**
-   * List of indexes of each unit in this [PackageIndex].
-   */
+  /// List of indexes of each unit in this [PackageIndex].
   @Id(4)
   List<UnitIndex> get units;
 
-  /**
-   * Each item of this list corresponds to the unit URI of a unique library
-   * specific unit referenced in the [PackageIndex].  It is an index into
-   * [strings] list.
-   */
+  /// Each item of this list corresponds to the unit URI of a unique library
+  /// specific unit referenced in the [PackageIndex].  It is an index into
+  /// [strings] list.
   @Id(3)
   List<int> get unitUnitUris;
 }
 
-/**
- * Enum used to indicate the kind of entity referred to by a
- * [LinkedReference].
- */
+/// Enum used to indicate the kind of entity referred to by a
+/// [LinkedReference].
 enum ReferenceKind {
-  /**
-   * The entity is a class or enum.
-   */
+  /// The entity is a class or enum.
   classOrEnum,
 
-  /**
-   * The entity is a constructor.
-   */
+  /// The entity is a constructor.
   constructor,
 
-  /**
-   * The entity is a getter or setter inside a class.  Note: this is used in
-   * the case where a constant refers to a static const declared inside a
-   * class.
-   */
+  /// The entity is a getter or setter inside a class.  Note: this is used in
+  /// the case where a constant refers to a static const declared inside a
+  /// class.
   propertyAccessor,
 
-  /**
-   * The entity is a method.
-   */
+  /// The entity is a method.
   method,
 
-  /**
-   * The entity is a typedef.
-   */
+  /// The entity is a typedef.
   typedef,
 
-  /**
-   * The entity is a local function.
-   */
+  /// The entity is a local function.
   function,
 
-  /**
-   * The entity is a local variable.
-   */
+  /// The entity is a local variable.
   variable,
 
-  /**
-   * The entity is a top level function.
-   */
+  /// The entity is a top level function.
   topLevelFunction,
 
-  /**
-   * The entity is a top level getter or setter.
-   */
+  /// The entity is a top level getter or setter.
   topLevelPropertyAccessor,
 
-  /**
-   * The entity is a prefix.
-   */
+  /// The entity is a prefix.
   prefix,
 
-  /**
-   * The entity being referred to does not exist.
-   */
+  /// The entity being referred to does not exist.
   unresolved,
 
-  /**
-   * The entity is a typedef expressed using generic function type syntax.
-   */
+  /// The entity is a typedef expressed using generic function type syntax.
   genericFunctionTypedef
 }
 
-/**
- * Summary information about a top-level type inference error.
- */
+/// Summary information about a top-level type inference error.
 abstract class TopLevelInferenceError extends base.SummaryClass {
-  /**
-   * The [kind] specific arguments.
-   */
+  /// The [kind] specific arguments.
   @Id(2)
   List<String> get arguments;
 
-  /**
-   * The kind of the error.
-   */
+  /// The kind of the error.
   @Id(1)
   TopLevelInferenceErrorKind get kind;
 
-  /**
-   * The slot id (which is unique within the compilation unit) identifying the
-   * target of type inference with which this [TopLevelInferenceError] is
-   * associated.
-   */
+  /// The slot id (which is unique within the compilation unit) identifying the
+  /// target of type inference with which this [TopLevelInferenceError] is
+  /// associated.
   @Id(0)
   int get slot;
 }
 
-/**
- * Enum used to indicate the kind of the error during top-level inference.
- */
+/// Enum used to indicate the kind of the error during top-level inference.
 enum TopLevelInferenceErrorKind {
   assignment,
   instanceGetter,
@@ -1242,2177 +917,1567 @@
   overrideConflictParameterType
 }
 
-/**
- * Enum used to indicate the style of a typedef.
- */
+/// Enum used to indicate the style of a typedef.
 enum TypedefStyle {
-  /**
-   * A typedef that defines a non-generic function type. The syntax is
-   * ```
-   * 'typedef' returnType? identifier typeParameters? formalParameterList ';'
-   * ```
-   * The typedef can have type parameters associated with it, but the function
-   * type that results from applying type arguments does not.
-   */
+  /// A typedef that defines a non-generic function type. The syntax is
+  /// ```
+  /// 'typedef' returnType? identifier typeParameters? formalParameterList ';'
+  /// ```
+  /// The typedef can have type parameters associated with it, but the function
+  /// type that results from applying type arguments does not.
   functionType,
 
-  /**
-   * A typedef expressed using generic function type syntax. The syntax is
-   * ```
-   * typeAlias ::=
-   *     'typedef' identifier typeParameters? '=' genericFunctionType ';'
-   * genericFunctionType ::=
-   *     returnType? 'Function' typeParameters? parameterTypeList
-   * ```
-   * Both the typedef itself and the function type that results from applying
-   * type arguments can have type parameters.
-   */
+  /// A typedef expressed using generic function type syntax. The syntax is
+  /// ```
+  /// typeAlias ::=
+  ///     'typedef' identifier typeParameters? '=' genericFunctionType ';'
+  /// genericFunctionType ::=
+  ///     returnType? 'Function' typeParameters? parameterTypeList
+  /// ```
+  /// Both the typedef itself and the function type that results from applying
+  /// type arguments can have type parameters.
   genericFunctionType
 }
 
-/**
- * Index information about a unit in a [PackageIndex].
- */
+/// Index information about a unit in a [PackageIndex].
 abstract class UnitIndex extends base.SummaryClass {
-  /**
-   * Each item of this list is the kind of an element defined in this unit.
-   */
+  /// Each item of this list is the kind of an element defined in this unit.
   @Id(6)
   List<IndexNameKind> get definedNameKinds;
 
-  /**
-   * Each item of this list is the name offset of an element defined in this
-   * unit relative to the beginning of the file.
-   */
+  /// Each item of this list is the name offset of an element defined in this
+  /// unit relative to the beginning of the file.
   @Id(7)
   List<int> get definedNameOffsets;
 
-  /**
-   * Each item of this list corresponds to an element defined in this unit.  It
-   * is an index into [PackageIndex.strings] list.  The list is sorted in
-   * ascending order, so that the client can quickly find name definitions in
-   * this [UnitIndex].
-   */
+  /// Each item of this list corresponds to an element defined in this unit.  It
+  /// is an index into [PackageIndex.strings] list.  The list is sorted in
+  /// ascending order, so that the client can quickly find name definitions in
+  /// this [UnitIndex].
   @Id(5)
   List<int> get definedNames;
 
-  /**
-   * Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
-   * for the library specific unit that corresponds to this [UnitIndex].
-   */
+  /// Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
+  /// for the library specific unit that corresponds to this [UnitIndex].
   @Id(0)
   int get unit;
 
-  /**
-   * Each item of this list is the `true` if the corresponding element usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding element usage
+  /// is qualified with some prefix.
   @Id(11)
   List<bool> get usedElementIsQualifiedFlags;
 
-  /**
-   * Each item of this list is the kind of the element usage.
-   */
+  /// Each item of this list is the kind of the element usage.
   @Id(4)
   List<IndexRelationKind> get usedElementKinds;
 
-  /**
-   * Each item of this list is the length of the element usage.
-   */
+  /// Each item of this list is the length of the element usage.
   @Id(1)
   List<int> get usedElementLengths;
 
-  /**
-   * Each item of this list is the offset of the element usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the element usage relative to the
+  /// beginning of the file.
   @Id(2)
   List<int> get usedElementOffsets;
 
-  /**
-   * Each item of this list is the index into [PackageIndex.elementUnits] and
-   * [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
-   * that the client can quickly find element references in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.elementUnits] and
+  /// [PackageIndex.elementOffsets].  The list is sorted in ascending order, so
+  /// that the client can quickly find element references in this [UnitIndex].
   @Id(3)
   List<int> get usedElements;
 
-  /**
-   * Each item of this list is the `true` if the corresponding name usage
-   * is qualified with some prefix.
-   */
+  /// Each item of this list is the `true` if the corresponding name usage
+  /// is qualified with some prefix.
   @Id(12)
   List<bool> get usedNameIsQualifiedFlags;
 
-  /**
-   * Each item of this list is the kind of the name usage.
-   */
+  /// Each item of this list is the kind of the name usage.
   @Id(10)
   List<IndexRelationKind> get usedNameKinds;
 
-  /**
-   * Each item of this list is the offset of the name usage relative to the
-   * beginning of the file.
-   */
+  /// Each item of this list is the offset of the name usage relative to the
+  /// beginning of the file.
   @Id(9)
   List<int> get usedNameOffsets;
 
-  /**
-   * Each item of this list is the index into [PackageIndex.strings] for a
-   * used name.  The list is sorted in ascending order, so that the client can
-   * quickly find name uses in this [UnitIndex].
-   */
+  /// Each item of this list is the index into [PackageIndex.strings] for a
+  /// used name.  The list is sorted in ascending order, so that the client can
+  /// quickly find name uses in this [UnitIndex].
   @Id(8)
   List<int> get usedNames;
 }
 
-/**
- * Unlinked summary information about a class declaration.
- */
+/// Unlinked summary information about a class declaration.
 abstract class UnlinkedClass extends base.SummaryClass {
-  /**
-   * Annotations for this class.
-   */
+  /// Annotations for this class.
   @Id(5)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Code range of the class.
-   */
+  /// Code range of the class.
   @informative
   @Id(13)
   CodeRange get codeRange;
 
-  /**
-   * Documentation comment for the class, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the class, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(6)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * Executable objects (methods, getters, and setters) contained in the class.
-   */
+  /// Executable objects (methods, getters, and setters) contained in the class.
   @Id(2)
   List<UnlinkedExecutable> get executables;
 
-  /**
-   * Field declarations contained in the class.
-   */
+  /// Field declarations contained in the class.
   @Id(4)
   List<UnlinkedVariable> get fields;
 
-  /**
-   * Indicates whether this class is the core "Object" class (and hence has no
-   * supertype)
-   */
+  /// Indicates whether this class is the core "Object" class (and hence has no
+  /// supertype)
   @Id(12)
   bool get hasNoSupertype;
 
-  /**
-   * Interfaces appearing in an `implements` clause, if any.
-   */
+  /// Interfaces appearing in an `implements` clause, if any.
   @Id(7)
   List<EntityRef> get interfaces;
 
-  /**
-   * Indicates whether the class is declared with the `abstract` keyword.
-   */
+  /// Indicates whether the class is declared with the `abstract` keyword.
   @Id(8)
   bool get isAbstract;
 
-  /**
-   * Indicates whether the class is declared using mixin application syntax.
-   */
+  /// Indicates whether the class is declared using mixin application syntax.
   @Id(11)
   bool get isMixinApplication;
 
-  /**
-   * Mixins appearing in a `with` clause, if any.
-   */
+  /// Mixins appearing in a `with` clause, if any.
   @Id(10)
   List<EntityRef> get mixins;
 
-  /**
-   * Name of the class.
-   */
+  /// Name of the class.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the class name relative to the beginning of the file.
-   */
+  /// Offset of the class name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 
-  /**
-   * Superclass constraints for this mixin declaration. The list will be empty
-   * if this class is not a mixin declaration, or if the declaration does not
-   * have an `on` clause (in which case the type `Object` is implied).
-   */
+  /// Superclass constraints for this mixin declaration. The list will be empty
+  /// if this class is not a mixin declaration, or if the declaration does not
+  /// have an `on` clause (in which case the type `Object` is implied).
   @Id(14)
   List<EntityRef> get superclassConstraints;
 
-  /**
-   * Names of methods, getters, setters, and operators that this mixin
-   * declaration super-invokes.  For setters this includes the trailing "=".
-   * The list will be empty if this class is not a mixin declaration.
-   */
+  /// Names of methods, getters, setters, and operators that this mixin
+  /// declaration super-invokes.  For setters this includes the trailing "=".
+  /// The list will be empty if this class is not a mixin declaration.
   @Id(15)
   List<String> get superInvokedNames;
 
-  /**
-   * Supertype of the class, or `null` if either (a) the class doesn't
-   * explicitly declare a supertype (and hence has supertype `Object`), or (b)
-   * the class *is* `Object` (and hence has no supertype).
-   */
+  /// Supertype of the class, or `null` if either (a) the class doesn't
+  /// explicitly declare a supertype (and hence has supertype `Object`), or (b)
+  /// the class *is* `Object` (and hence has no supertype).
   @Id(3)
   EntityRef get supertype;
 
-  /**
-   * Type parameters of the class, if any.
-   */
+  /// Type parameters of the class, if any.
   @Id(9)
   List<UnlinkedTypeParam> get typeParameters;
 }
 
-/**
- * Unlinked summary information about a `show` or `hide` combinator in an
- * import or export declaration.
- */
+/// Unlinked summary information about a `show` or `hide` combinator in an
+/// import or export declaration.
 abstract class UnlinkedCombinator extends base.SummaryClass {
-  /**
-   * If this is a `show` combinator, offset of the end of the list of shown
-   * names.  Otherwise zero.
-   */
+  /// If this is a `show` combinator, offset of the end of the list of shown
+  /// names.  Otherwise zero.
   @informative
   @Id(3)
   int get end;
 
-  /**
-   * List of names which are hidden.  Empty if this is a `show` combinator.
-   */
+  /// List of names which are hidden.  Empty if this is a `show` combinator.
   @Id(1)
   List<String> get hides;
 
-  /**
-   * If this is a `show` combinator, offset of the `show` keyword.  Otherwise
-   * zero.
-   */
+  /// If this is a `show` combinator, offset of the `show` keyword.  Otherwise
+  /// zero.
   @informative
   @Id(2)
   int get offset;
 
-  /**
-   * List of names which are shown.  Empty if this is a `hide` combinator.
-   */
+  /// List of names which are shown.  Empty if this is a `hide` combinator.
   @Id(0)
   List<String> get shows;
 }
 
-/**
- * Unlinked summary information about a single import or export configuration.
- */
+/// Unlinked summary information about a single import or export configuration.
 abstract class UnlinkedConfiguration extends base.SummaryClass {
-  /**
-   * The name of the declared variable whose value is being used in the
-   * condition.
-   */
+  /// The name of the declared variable whose value is being used in the
+  /// condition.
   @Id(0)
   String get name;
 
-  /**
-   * The URI of the implementation library to be used if the condition is true.
-   */
+  /// The URI of the implementation library to be used if the condition is true.
   @Id(2)
   String get uri;
 
-  /**
-   * The value to which the value of the declared variable will be compared,
-   * or `true` if the condition does not include an equality test.
-   */
+  /// The value to which the value of the declared variable will be compared,
+  /// or `true` if the condition does not include an equality test.
   @Id(1)
   String get value;
 }
 
-/**
- * Unlinked summary information about a constructor initializer.
- */
+/// Unlinked summary information about a constructor initializer.
 abstract class UnlinkedConstructorInitializer extends base.SummaryClass {
-  /**
-   * If there are `m` [arguments] and `n` [argumentNames], then each argument
-   * from [arguments] with index `i` such that `n + i - m >= 0`, should be used
-   * with the name at `n + i - m`.
-   */
+  /// If there are `m` [arguments] and `n` [argumentNames], then each argument
+  /// from [arguments] with index `i` such that `n + i - m >= 0`, should be used
+  /// with the name at `n + i - m`.
   @Id(4)
   List<String> get argumentNames;
 
-  /**
-   * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
-   * invocation.  Otherwise empty.
-   */
+  /// If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
+  /// invocation.  Otherwise empty.
   @Id(3)
   List<UnlinkedExpr> get arguments;
 
-  /**
-   * If [kind] is `field`, the expression of the field initializer.
-   * Otherwise `null`.
-   */
+  /// If [kind] is `field`, the expression of the field initializer.
+  /// Otherwise `null`.
   @Id(1)
   UnlinkedExpr get expression;
 
-  /**
-   * The kind of the constructor initializer (field, redirect, super).
-   */
+  /// The kind of the constructor initializer (field, redirect, super).
   @Id(2)
   UnlinkedConstructorInitializerKind get kind;
 
-  /**
-   * If [kind] is `field`, the name of the field declared in the class.  If
-   * [kind] is `thisInvocation`, the name of the constructor, declared in this
-   * class, to redirect to.  If [kind] is `superInvocation`, the name of the
-   * constructor, declared in the superclass, to invoke.
-   */
+  /// If [kind] is `field`, the name of the field declared in the class.  If
+  /// [kind] is `thisInvocation`, the name of the constructor, declared in this
+  /// class, to redirect to.  If [kind] is `superInvocation`, the name of the
+  /// constructor, declared in the superclass, to invoke.
   @Id(0)
   String get name;
 }
 
-/**
- * Enum used to indicate the kind of an constructor initializer.
- */
+/// Enum used to indicate the kind of an constructor initializer.
 enum UnlinkedConstructorInitializerKind {
-  /**
-   * Initialization of a field.
-   */
+  /// Initialization of a field.
   field,
 
-  /**
-   * Invocation of a constructor in the same class.
-   */
+  /// Invocation of a constructor in the same class.
   thisInvocation,
 
-  /**
-   * Invocation of a superclass' constructor.
-   */
+  /// Invocation of a superclass' constructor.
   superInvocation,
 
-  /**
-   * Invocation of `assert`.
-   */
+  /// Invocation of `assert`.
   assertInvocation
 }
 
-/**
- * Unlinked summary information about a documentation comment.
- */
+/// Unlinked summary information about a documentation comment.
 abstract class UnlinkedDocumentationComment extends base.SummaryClass {
-  /**
-   * Length of the documentation comment (prior to replacing '\r\n' with '\n').
-   */
+  /// Length of the documentation comment (prior to replacing '\r\n' with '\n').
   @Id(0)
   @deprecated
   int get length;
 
-  /**
-   * Offset of the beginning of the documentation comment relative to the
-   * beginning of the file.
-   */
+  /// Offset of the beginning of the documentation comment relative to the
+  /// beginning of the file.
   @Id(2)
   @deprecated
   int get offset;
 
-  /**
-   * Text of the documentation comment, with '\r\n' replaced by '\n'.
-   *
-   * References appearing within the doc comment in square brackets are not
-   * specially encoded.
-   */
+  /// Text of the documentation comment, with '\r\n' replaced by '\n'.
+  ///
+  /// References appearing within the doc comment in square brackets are not
+  /// specially encoded.
   @Id(1)
   String get text;
 }
 
-/**
- * Unlinked summary information about an enum declaration.
- */
+/// Unlinked summary information about an enum declaration.
 abstract class UnlinkedEnum extends base.SummaryClass {
-  /**
-   * Annotations for this enum.
-   */
+  /// Annotations for this enum.
   @Id(4)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Code range of the enum.
-   */
+  /// Code range of the enum.
   @informative
   @Id(5)
   CodeRange get codeRange;
 
-  /**
-   * Documentation comment for the enum, or `null` if there is no documentation
-   * comment.
-   */
+  /// Documentation comment for the enum, or `null` if there is no documentation
+  /// comment.
   @informative
   @Id(3)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * Name of the enum type.
-   */
+  /// Name of the enum type.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the enum name relative to the beginning of the file.
-   */
+  /// Offset of the enum name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 
-  /**
-   * Values listed in the enum declaration, in declaration order.
-   */
+  /// Values listed in the enum declaration, in declaration order.
   @Id(2)
   List<UnlinkedEnumValue> get values;
 }
 
-/**
- * Unlinked summary information about a single enumerated value in an enum
- * declaration.
- */
+/// Unlinked summary information about a single enumerated value in an enum
+/// declaration.
 abstract class UnlinkedEnumValue extends base.SummaryClass {
-  /**
-   * Annotations for this value.
-   */
+  /// Annotations for this value.
   @Id(3)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Documentation comment for the enum value, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the enum value, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(2)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * Name of the enumerated value.
-   */
+  /// Name of the enumerated value.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the enum value name relative to the beginning of the file.
-   */
+  /// Offset of the enum value name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 }
 
-/**
- * Unlinked summary information about a function, method, getter, or setter
- * declaration.
- */
+/// Unlinked summary information about a function, method, getter, or setter
+/// declaration.
 abstract class UnlinkedExecutable extends base.SummaryClass {
-  /**
-   * Annotations for this executable.
-   */
+  /// Annotations for this executable.
   @Id(6)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * If this executable's function body is declared using `=>`, the expression
-   * to the right of the `=>`.  May be omitted if neither type inference nor
-   * constant evaluation depends on the function body.
-   */
+  /// If this executable's function body is declared using `=>`, the expression
+  /// to the right of the `=>`.  May be omitted if neither type inference nor
+  /// constant evaluation depends on the function body.
   @Id(29)
   UnlinkedExpr get bodyExpr;
 
-  /**
-   * Code range of the executable.
-   */
+  /// Code range of the executable.
   @informative
   @Id(26)
   CodeRange get codeRange;
 
-  /**
-   * If a constant [UnlinkedExecutableKind.constructor], the constructor
-   * initializers.  Otherwise empty.
-   */
+  /// If a constant [UnlinkedExecutableKind.constructor], the constructor
+  /// initializers.  Otherwise empty.
   @Id(14)
   List<UnlinkedConstructorInitializer> get constantInitializers;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
-   * a nonzero slot id which is unique within this compilation unit.  If this id
-   * is found in [LinkedUnit.constCycles], then this constructor is part of a
-   * cycle.
-   *
-   * Otherwise, zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
+  /// a nonzero slot id which is unique within this compilation unit.  If this
+  /// id is found in [LinkedUnit.constCycles], then this constructor is part of
+  /// a cycle.
+  ///
+  /// Otherwise, zero.
   @Id(25)
   int get constCycleSlot;
 
-  /**
-   * Documentation comment for the executable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the executable, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(7)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * If this executable's return type is inferable, nonzero slot id
-   * identifying which entry in [LinkedUnit.types] contains the inferred
-   * return type.  If there is no matching entry in [LinkedUnit.types], then
-   * no return type was inferred for this variable, so its static type is
-   * `dynamic`.
-   */
+  /// If this executable's return type is inferable, nonzero slot id
+  /// identifying which entry in [LinkedUnit.types] contains the inferred
+  /// return type.  If there is no matching entry in [LinkedUnit.types], then
+  /// no return type was inferred for this variable, so its static type is
+  /// `dynamic`.
   @Id(5)
   int get inferredReturnTypeSlot;
 
-  /**
-   * Indicates whether the executable is declared using the `abstract` keyword.
-   */
+  /// Indicates whether the executable is declared using the `abstract` keyword.
   @Id(10)
   bool get isAbstract;
 
-  /**
-   * Indicates whether the executable has body marked as being asynchronous.
-   */
+  /// Indicates whether the executable has body marked as being asynchronous.
   @informative
   @Id(27)
   bool get isAsynchronous;
 
-  /**
-   * Indicates whether the executable is declared using the `const` keyword.
-   */
+  /// Indicates whether the executable is declared using the `const` keyword.
   @Id(12)
   bool get isConst;
 
-  /**
-   * Indicates whether the executable is declared using the `external` keyword.
-   */
+  /// Indicates whether the executable is declared using the `external` keyword.
   @Id(11)
   bool get isExternal;
 
-  /**
-   * Indicates whether the executable is declared using the `factory` keyword.
-   */
+  /// Indicates whether the executable is declared using the `factory` keyword.
   @Id(8)
   bool get isFactory;
 
-  /**
-   * Indicates whether the executable has body marked as being a generator.
-   */
+  /// Indicates whether the executable has body marked as being a generator.
   @informative
   @Id(28)
   bool get isGenerator;
 
-  /**
-   * Indicates whether the executable is a redirected constructor.
-   */
+  /// Indicates whether the executable is a redirected constructor.
   @Id(13)
   bool get isRedirectedConstructor;
 
-  /**
-   * Indicates whether the executable is declared using the `static` keyword.
-   *
-   * Note that for top level executables, this flag is false, since they are
-   * not declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the executable is declared using the `static` keyword.
+  ///
+  /// Note that for top level executables, this flag is false, since they are
+  /// not declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   @Id(9)
   bool get isStatic;
 
-  /**
-   * The kind of the executable (function/method, getter, setter, or
-   * constructor).
-   */
+  /// The kind of the executable (function/method, getter, setter, or
+  /// constructor).
   @Id(4)
   UnlinkedExecutableKind get kind;
 
-  /**
-   * The list of local functions.
-   */
+  /// The list of local functions.
   @Id(18)
   List<UnlinkedExecutable> get localFunctions;
 
-  /**
-   * The list of local labels.
-   */
+  /// The list of local labels.
   @informative
   @deprecated
   @Id(22)
   List<String> get localLabels;
 
-  /**
-   * The list of local variables.
-   */
+  /// The list of local variables.
   @informative
   @deprecated
   @Id(19)
   List<UnlinkedVariable> get localVariables;
 
-  /**
-   * Name of the executable.  For setters, this includes the trailing "=".  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the empty string.
-   */
+  /// Name of the executable.  For setters, this includes the trailing "=".  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the empty string.
   @Id(1)
   String get name;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the end of the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the end of the constructor name.  Otherwise zero.
   @informative
   @Id(23)
   int get nameEnd;
 
-  /**
-   * Offset of the executable name relative to the beginning of the file.  For
-   * named constructors, this excludes the class name and excludes the ".".
-   * For unnamed constructors, this is the offset of the class name (i.e. the
-   * offset of the second "C" in "class C { C(); }").
-   */
+  /// Offset of the executable name relative to the beginning of the file.  For
+  /// named constructors, this excludes the class name and excludes the ".".
+  /// For unnamed constructors, this is the offset of the class name (i.e. the
+  /// offset of the second "C" in "class C { C(); }").
   @informative
   @Id(0)
   int get nameOffset;
 
-  /**
-   * Parameters of the executable, if any.  Note that getters have no
-   * parameters (hence this will be the empty list), and setters have a single
-   * parameter.
-   */
+  /// Parameters of the executable, if any.  Note that getters have no
+  /// parameters (hence this will be the empty list), and setters have a single
+  /// parameter.
   @Id(2)
   List<UnlinkedParam> get parameters;
 
-  /**
-   * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
-   * the offset of the period before the constructor name.  Otherwise zero.
-   */
+  /// If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+  /// the offset of the period before the constructor name.  Otherwise zero.
   @informative
   @Id(24)
   int get periodOffset;
 
-  /**
-   * If [isRedirectedConstructor] and [isFactory] are both `true`, the
-   * constructor to which this constructor redirects; otherwise empty.
-   */
+  /// If [isRedirectedConstructor] and [isFactory] are both `true`, the
+  /// constructor to which this constructor redirects; otherwise empty.
   @Id(15)
   EntityRef get redirectedConstructor;
 
-  /**
-   * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
-   * name of the constructor that this constructor redirects to; otherwise
-   * empty.
-   */
+  /// If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
+  /// name of the constructor that this constructor redirects to; otherwise
+  /// empty.
   @Id(17)
   String get redirectedConstructorName;
 
-  /**
-   * Declared return type of the executable.  Absent if the executable is a
-   * constructor or the return type is implicit.  Absent for executables
-   * associated with variable initializers and closures, since these
-   * executables may have return types that are not accessible via direct
-   * imports.
-   */
+  /// Declared return type of the executable.  Absent if the executable is a
+  /// constructor or the return type is implicit.  Absent for executables
+  /// associated with variable initializers and closures, since these
+  /// executables may have return types that are not accessible via direct
+  /// imports.
   @Id(3)
   EntityRef get returnType;
 
-  /**
-   * Type parameters of the executable, if any.  Empty if support for generic
-   * method syntax is disabled.
-   */
+  /// Type parameters of the executable, if any.  Empty if support for generic
+  /// method syntax is disabled.
   @Id(16)
   List<UnlinkedTypeParam> get typeParameters;
 
-  /**
-   * If a local function, the length of the visible range; zero otherwise.
-   */
+  /// If a local function, the length of the visible range; zero otherwise.
   @informative
   @Id(20)
   int get visibleLength;
 
-  /**
-   * If a local function, the beginning of the visible range; zero otherwise.
-   */
+  /// If a local function, the beginning of the visible range; zero otherwise.
   @informative
   @Id(21)
   int get visibleOffset;
 }
 
-/**
- * Enum used to indicate the kind of an executable.
- */
+/// Enum used to indicate the kind of an executable.
 enum UnlinkedExecutableKind {
-  /**
-   * Executable is a function or method.
-   */
+  /// Executable is a function or method.
   functionOrMethod,
 
-  /**
-   * Executable is a getter.
-   */
+  /// Executable is a getter.
   getter,
 
-  /**
-   * Executable is a setter.
-   */
+  /// Executable is a setter.
   setter,
 
-  /**
-   * Executable is a constructor.
-   */
+  /// Executable is a constructor.
   constructor
 }
 
-/**
- * Unlinked summary information about an export declaration (stored outside
- * [UnlinkedPublicNamespace]).
- */
+/// Unlinked summary information about an export declaration (stored outside
+/// [UnlinkedPublicNamespace]).
 abstract class UnlinkedExportNonPublic extends base.SummaryClass {
-  /**
-   * Annotations for this export directive.
-   */
+  /// Annotations for this export directive.
   @Id(3)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Offset of the "export" keyword.
-   */
+  /// Offset of the "export" keyword.
   @informative
   @Id(0)
   int get offset;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   @informative
   @Id(1)
   int get uriEnd;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   @informative
   @Id(2)
   int get uriOffset;
 }
 
-/**
- * Unlinked summary information about an export declaration (stored inside
- * [UnlinkedPublicNamespace]).
- */
+/// Unlinked summary information about an export declaration (stored inside
+/// [UnlinkedPublicNamespace]).
 abstract class UnlinkedExportPublic extends base.SummaryClass {
-  /**
-   * Combinators contained in this export declaration.
-   */
+  /// Combinators contained in this export declaration.
   @Id(1)
   List<UnlinkedCombinator> get combinators;
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   @Id(2)
   List<UnlinkedConfiguration> get configurations;
 
-  /**
-   * URI used in the source code to reference the exported library.
-   */
+  /// URI used in the source code to reference the exported library.
   @Id(0)
   String get uri;
 }
 
-/**
- * Unlinked summary information about an expression.
- *
- * Expressions are represented using a simple stack-based language
- * where [operations] is a sequence of operations to execute starting with an
- * empty stack.  Once all operations have been executed, the stack should
- * contain a single value which is the value of the constant.  Note that some
- * operations consume additional data from the other fields of this class.
- */
+/// Unlinked summary information about an expression.
+///
+/// Expressions are represented using a simple stack-based language
+/// where [operations] is a sequence of operations to execute starting with an
+/// empty stack.  Once all operations have been executed, the stack should
+/// contain a single value which is the value of the constant.  Note that some
+/// operations consume additional data from the other fields of this class.
 abstract class UnlinkedExpr extends base.SummaryClass {
-  /**
-   * Sequence of operators used by assignment operations.
-   */
+  /// Sequence of operators used by assignment operations.
   @Id(6)
   List<UnlinkedExprAssignOperator> get assignmentOperators;
 
-  /**
-   * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
-   */
+  /// Sequence of 64-bit doubles consumed by the operation `pushDouble`.
   @Id(4)
   List<double> get doubles;
 
-  /**
-   * Sequence of unsigned 32-bit integers consumed by the operations
-   * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
-   * `makeList`, and `makeMap`.
-   */
+  /// Sequence of unsigned 32-bit integers consumed by the operations
+  /// `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
+  /// `makeList`, and `makeMap`.
   @Id(1)
   List<int> get ints;
 
-  /**
-   * Indicates whether the expression is a valid potentially constant
-   * expression.
-   */
+  /// Indicates whether the expression is a valid potentially constant
+  /// expression.
   @Id(5)
   bool get isValidConst;
 
-  /**
-   * Sequence of operations to execute (starting with an empty stack) to form
-   * the constant value.
-   */
+  /// Sequence of operations to execute (starting with an empty stack) to form
+  /// the constant value.
   @Id(0)
   List<UnlinkedExprOperation> get operations;
 
-  /**
-   * Sequence of language constructs consumed by the operations
-   * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
-   * that in the case of `pushReference` (and sometimes `invokeConstructor` the
-   * actual entity being referred to may be something other than a type.
-   */
+  /// Sequence of language constructs consumed by the operations
+  /// `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`.  Note
+  /// that in the case of `pushReference` (and sometimes `invokeConstructor` the
+  /// actual entity being referred to may be something other than a type.
   @Id(2)
   List<EntityRef> get references;
 
-  /**
-   * Sequence of strings consumed by the operations `pushString` and
-   * `invokeConstructor`.
-   */
+  /// Sequence of strings consumed by the operations `pushString` and
+  /// `invokeConstructor`.
   @Id(3)
   List<String> get strings;
 }
 
-/**
- * Enum representing the various kinds of assignment operations combined
- * with:
- *    [UnlinkedExprOperation.assignToRef],
- *    [UnlinkedExprOperation.assignToProperty],
- *    [UnlinkedExprOperation.assignToIndex].
- */
+/// Enum representing the various kinds of assignment operations combined
+/// with:
+///    [UnlinkedExprOperation.assignToRef],
+///    [UnlinkedExprOperation.assignToProperty],
+///    [UnlinkedExprOperation.assignToIndex].
 enum UnlinkedExprAssignOperator {
-  /**
-   * Perform simple assignment `target = operand`.
-   */
+  /// Perform simple assignment `target = operand`.
   assign,
 
-  /**
-   * Perform `target ??= operand`.
-   */
+  /// Perform `target ??= operand`.
   ifNull,
 
-  /**
-   * Perform `target *= operand`.
-   */
+  /// Perform `target *= operand`.
   multiply,
 
-  /**
-   * Perform `target /= operand`.
-   */
+  /// Perform `target /= operand`.
   divide,
 
-  /**
-   * Perform `target ~/= operand`.
-   */
+  /// Perform `target ~/= operand`.
   floorDivide,
 
-  /**
-   * Perform `target %= operand`.
-   */
+  /// Perform `target %= operand`.
   modulo,
 
-  /**
-   * Perform `target += operand`.
-   */
+  /// Perform `target += operand`.
   plus,
 
-  /**
-   * Perform `target -= operand`.
-   */
+  /// Perform `target -= operand`.
   minus,
 
-  /**
-   * Perform `target <<= operand`.
-   */
+  /// Perform `target <<= operand`.
   shiftLeft,
 
-  /**
-   * Perform `target >>= operand`.
-   */
+  /// Perform `target >>= operand`.
   shiftRight,
 
-  /**
-   * Perform `target &= operand`.
-   */
+  /// Perform `target &= operand`.
   bitAnd,
 
-  /**
-   * Perform `target ^= operand`.
-   */
+  /// Perform `target ^= operand`.
   bitXor,
 
-  /**
-   * Perform `target |= operand`.
-   */
+  /// Perform `target |= operand`.
   bitOr,
 
-  /**
-   * Perform `++target`.
-   */
+  /// Perform `++target`.
   prefixIncrement,
 
-  /**
-   * Perform `--target`.
-   */
+  /// Perform `--target`.
   prefixDecrement,
 
-  /**
-   * Perform `target++`.
-   */
+  /// Perform `target++`.
   postfixIncrement,
 
-  /**
-   * Perform `target++`.
-   */
+  /// Perform `target++`.
   postfixDecrement,
 }
 
-/**
- * Enum representing the various kinds of operations which may be performed to
- * in an expression.  These options are assumed to execute in the
- * context of a stack which is initially empty.
- */
+/// Enum representing the various kinds of operations which may be performed to
+/// in an expression.  These options are assumed to execute in the
+/// context of a stack which is initially empty.
 enum UnlinkedExprOperation {
-  /**
-   * Push the next value from [UnlinkedExpr.ints] (a 32-bit unsigned integer)
-   * onto the stack.
-   *
-   * Note that Dart supports integers larger than 32 bits; these are
-   * represented by composing 32-bit values using the [pushLongInt] operation.
-   */
+  /// Push the next value from [UnlinkedExpr.ints] (a 32-bit unsigned integer)
+  /// onto the stack.
+  ///
+  /// Note that Dart supports integers larger than 32 bits; these are
+  /// represented by composing 32-bit values using the [pushLongInt] operation.
   pushInt,
 
-  /**
-   * Get the number of components from [UnlinkedExpr.ints], then do this number
-   * of times the following operations: multiple the current value by 2^32, "or"
-   * it with the next value in [UnlinkedExpr.ints]. The initial value is zero.
-   * Push the result into the stack.
-   */
+  /// Get the number of components from [UnlinkedExpr.ints], then do this number
+  /// of times the following operations: multiple the current value by 2^32,
+  /// "or" it with the next value in [UnlinkedExpr.ints]. The initial value is
+  /// zero. Push the result into the stack.
   pushLongInt,
 
-  /**
-   * Push the next value from [UnlinkedExpr.doubles] (a double precision
-   * floating point value) onto the stack.
-   */
+  /// Push the next value from [UnlinkedExpr.doubles] (a double precision
+  /// floating point value) onto the stack.
   pushDouble,
 
-  /**
-   * Push the constant `true` onto the stack.
-   */
+  /// Push the constant `true` onto the stack.
   pushTrue,
 
-  /**
-   * Push the constant `false` onto the stack.
-   */
+  /// Push the constant `false` onto the stack.
   pushFalse,
 
-  /**
-   * Push the next value from [UnlinkedExpr.strings] onto the stack.
-   */
+  /// Push the next value from [UnlinkedExpr.strings] onto the stack.
   pushString,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), convert them to strings (if they aren't already),
-   * concatenate them into a single string, and push it back onto the stack.
-   *
-   * This operation is used to represent constants whose value is a literal
-   * string containing string interpolations.
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), convert them to strings (if they aren't already),
+  /// concatenate them into a single string, and push it back onto the stack.
+  ///
+  /// This operation is used to represent constants whose value is a literal
+  /// string containing string interpolations.
   concatenate,
 
-  /**
-   * Get the next value from [UnlinkedExpr.strings], convert it to a symbol,
-   * and push it onto the stack.
-   */
+  /// Get the next value from [UnlinkedExpr.strings], convert it to a symbol,
+  /// and push it onto the stack.
   makeSymbol,
 
-  /**
-   * Push the constant `null` onto the stack.
-   */
+  /// Push the constant `null` onto the stack.
   pushNull,
 
-  /**
-   * Push the value of the function parameter with the name obtained from
-   * [UnlinkedExpr.strings].
-   */
+  /// Push the value of the function parameter with the name obtained from
+  /// [UnlinkedExpr.strings].
   pushParameter,
 
-  /**
-   * Evaluate a (potentially qualified) identifier expression and push the
-   * resulting value onto the stack.  The identifier to be evaluated is
-   * obtained from [UnlinkedExpr.references].
-   *
-   * This operation is used to represent the following kinds of constants
-   * (which are indistinguishable from an unresolved AST alone):
-   *
-   * - A qualified reference to a static constant variable (e.g. `C.v`, where
-   *   C is a class and `v` is a constant static variable in `C`).
-   * - An identifier expression referring to a constant variable.
-   * - A simple or qualified identifier denoting a class or type alias.
-   * - A simple or qualified identifier denoting a top-level function or a
-   *   static method.
-   */
+  /// Evaluate a (potentially qualified) identifier expression and push the
+  /// resulting value onto the stack.  The identifier to be evaluated is
+  /// obtained from [UnlinkedExpr.references].
+  ///
+  /// This operation is used to represent the following kinds of constants
+  /// (which are indistinguishable from an unresolved AST alone):
+  ///
+  /// - A qualified reference to a static constant variable (e.g. `C.v`, where
+  ///   C is a class and `v` is a constant static variable in `C`).
+  /// - An identifier expression referring to a constant variable.
+  /// - A simple or qualified identifier denoting a class or type alias.
+  /// - A simple or qualified identifier denoting a top-level function or a
+  ///   static method.
   pushReference,
 
-  /**
-   * Pop the top value from the stack, extract the value of the property with
-   * the name obtained from [UnlinkedExpr.strings], and push the result back
-   * onto the stack.
-   */
+  /// Pop the top value from the stack, extract the value of the property with
+  /// the name obtained from [UnlinkedExpr.strings], and push the result back
+  /// onto the stack.
   extractProperty,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke a constant constructor obtained
-   * from [UnlinkedExpr.references], and push the resulting value back onto the
-   * stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * Note that for an invocation of the form `const a.b(...)` (where no type
-   * arguments are specified), it is impossible to tell from the unresolved AST
-   * alone whether `a` is a class name and `b` is a constructor name, or `a` is
-   * a prefix name and `b` is a class name.  For consistency between AST based
-   * and elements based summaries, references to default constructors are always
-   * recorded as references to corresponding classes.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke a constant constructor obtained
+  /// from [UnlinkedExpr.references], and push the resulting value back onto the
+  /// stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// Note that for an invocation of the form `const a.b(...)` (where no type
+  /// arguments are specified), it is impossible to tell from the unresolved AST
+  /// alone whether `a` is a class name and `b` is a constructor name, or `a` is
+  /// a prefix name and `b` is a class name.  For consistency between AST based
+  /// and elements based summaries, references to default constructors are
+  /// always recorded as references to corresponding classes.
   invokeConstructor,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), place them in a [List], and push the result back
-   * onto the stack.  The type parameter for the [List] is implicitly `dynamic`.
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), place them in a [List], and push the result back
+  /// onto the stack.  The type parameter for the [List] is implicitly
+  /// `dynamic`.
   makeUntypedList,
 
-  /**
-   * Pop the top 2*n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
-   * [Map], and push the result back onto the stack.  The two type parameters
-   * for the [Map] are implicitly `dynamic`.
-   */
+  /// Pop the top 2*n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
+  /// [Map], and push the result back onto the stack.  The two type parameters
+  /// for the [Map] are implicitly `dynamic`.
   makeUntypedMap,
 
-  /**
-   * Pop the top n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), place them in a [List], and push the result back
-   * onto the stack.  The type parameter for the [List] is obtained from
-   * [UnlinkedExpr.references].
-   */
+  /// Pop the top n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), place them in a [List], and push the result back
+  /// onto the stack.  The type parameter for the [List] is obtained from
+  /// [UnlinkedExpr.references].
   makeTypedList,
 
-  /**
-   * Pop the top 2*n values from the stack (where n is obtained from
-   * [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
-   * [Map], and push the result back onto the stack.  The two type parameters
-   * for the [Map] are obtained from [UnlinkedExpr.references].
-   */
+  /// Pop the top 2*n values from the stack (where n is obtained from
+  /// [UnlinkedExpr.ints]), interpret them as key/value pairs, place them in a
+  /// [Map], and push the result back onto the stack.  The two type parameters
+  /// for the [Map] are obtained from [UnlinkedExpr.references].
   makeTypedMap,
 
-  /**
-   * Pop the top 2 values from the stack, evaluate `v1 == v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, evaluate `v1 == v2`, and push the
+  /// result back onto the stack.
   equal,
 
-  /**
-   * Pop the top 2 values from the stack, evaluate `v1 != v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, evaluate `v1 != v2`, and push the
+  /// result back onto the stack.
   notEqual,
 
-  /**
-   * Pop the top value from the stack, compute its boolean negation, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its boolean negation, and push
+  /// the result back onto the stack.
   not,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 && v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 && v2`, and push the
+  /// result back onto the stack.
   and,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 || v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 || v2`, and push the
+  /// result back onto the stack.
   or,
 
-  /**
-   * Pop the top value from the stack, compute its integer complement, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its integer complement, and push
+  /// the result back onto the stack.
   complement,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 ^ v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 ^ v2`, and push the
+  /// result back onto the stack.
   bitXor,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 & v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 & v2`, and push the
+  /// result back onto the stack.
   bitAnd,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 | v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 | v2`, and push the
+  /// result back onto the stack.
   bitOr,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 >> v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 >> v2`, and push the
+  /// result back onto the stack.
   bitShiftRight,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 << v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 << v2`, and push the
+  /// result back onto the stack.
   bitShiftLeft,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 + v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 + v2`, and push the
+  /// result back onto the stack.
   add,
 
-  /**
-   * Pop the top value from the stack, compute its integer negation, and push
-   * the result back onto the stack.
-   */
+  /// Pop the top value from the stack, compute its integer negation, and push
+  /// the result back onto the stack.
   negate,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 - v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 - v2`, and push the
+  /// result back onto the stack.
   subtract,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 * v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 * v2`, and push the
+  /// result back onto the stack.
   multiply,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 / v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 / v2`, and push the
+  /// result back onto the stack.
   divide,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the
+  /// result back onto the stack.
   floorDivide,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 > v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 > v2`, and push the
+  /// result back onto the stack.
   greater,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 < v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 < v2`, and push the
+  /// result back onto the stack.
   less,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 >= v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 >= v2`, and push the
+  /// result back onto the stack.
   greaterEqual,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 <= v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 <= v2`, and push the
+  /// result back onto the stack.
   lessEqual,
 
-  /**
-   * Pop the top 2 values from the stack, compute `v1 % v2`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 2 values from the stack, compute `v1 % v2`, and push the
+  /// result back onto the stack.
   modulo,
 
-  /**
-   * Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
-   * result back onto the stack.
-   */
+  /// Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
+  /// result back onto the stack.
   conditional,
 
-  /**
-   * Pop from the stack `value` and get the next `target` reference from
-   * [UnlinkedExpr.references] - a top-level variable (prefixed or not), an
-   * assignable field of a class (prefixed or not), or a sequence of getters
-   * ending with an assignable property `a.b.b.c.d.e`.  In general `a.b` cannot
-   * not be distinguished between: `a` is a prefix and `b` is a top-level
-   * variable; or `a` is an object and `b` is the name of a property.  Perform
-   * `reference op= value` where `op` is the next assignment operator from
-   * [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `value` and get the next `target` reference from
+  /// [UnlinkedExpr.references] - a top-level variable (prefixed or not), an
+  /// assignable field of a class (prefixed or not), or a sequence of getters
+  /// ending with an assignable property `a.b.b.c.d.e`.  In general `a.b` cannot
+  /// not be distinguished between: `a` is a prefix and `b` is a top-level
+  /// variable; or `a` is an object and `b` is the name of a property.  Perform
+  /// `reference op= value` where `op` is the next assignment operator from
+  /// [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToRef,
 
-  /**
-   * Pop from the stack `target` and `value`.  Get the name of the property from
-   * `UnlinkedConst.strings` and assign the `value` to the named property of the
-   * `target`.  This operation is used when we know that the `target` is an
-   * object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
-   * Perform `target.property op= value` where `op` is the next assignment
-   * operator from [UnlinkedExpr.assignmentOperators].  Push `value` back into
-   * the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `target` and `value`.  Get the name of the property
+  /// from `UnlinkedConst.strings` and assign the `value` to the named property
+  /// of the `target`.  This operation is used when we know that the `target`
+  /// is an object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
+  /// Perform `target.property op= value` where `op` is the next assignment
+  /// operator from [UnlinkedExpr.assignmentOperators].  Push `value` back into
+  /// the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToProperty,
 
-  /**
-   * Pop from the stack `index`, `target` and `value`.  Perform
-   * `target[index] op= value`  where `op` is the next assignment operator from
-   * [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
-   *
-   * If the assignment operator is a prefix/postfix increment/decrement, then
-   * `value` is not present in the stack, so it should not be popped and the
-   * corresponding value of the `target` after/before update is pushed into the
-   * stack instead.
-   */
+  /// Pop from the stack `index`, `target` and `value`.  Perform
+  /// `target[index] op= value`  where `op` is the next assignment operator from
+  /// [UnlinkedExpr.assignmentOperators].  Push `value` back into the stack.
+  ///
+  /// If the assignment operator is a prefix/postfix increment/decrement, then
+  /// `value` is not present in the stack, so it should not be popped and the
+  /// corresponding value of the `target` after/before update is pushed into the
+  /// stack instead.
   assignToIndex,
 
-  /**
-   * Pop from the stack `index` and `target`.  Push into the stack the result
-   * of evaluation of `target[index]`.
-   */
+  /// Pop from the stack `index` and `target`.  Push into the stack the result
+  /// of evaluation of `target[index]`.
   extractIndex,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke a method (or a function) with
-   * the reference from [UnlinkedExpr.references].  If `k` is nonzero (where
-   * `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type arguments from
-   * [UnlinkedExpr.references] and use them as generic type arguments for the
-   * aforementioned method or function.  Push the result of the invocation onto
-   * the stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * In general `a.b` cannot not be distinguished between: `a` is a prefix and
-   * `b` is a top-level function; or `a` is an object and `b` is the name of a
-   * method.  This operation should be used for a sequence of identifiers
-   * `a.b.b.c.d.e` ending with an invokable result.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke a method (or a function) with
+  /// the reference from [UnlinkedExpr.references].  If `k` is nonzero (where
+  /// `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type arguments from
+  /// [UnlinkedExpr.references] and use them as generic type arguments for the
+  /// aforementioned method or function.  Push the result of the invocation onto
+  /// the stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// In general `a.b` cannot not be distinguished between: `a` is a prefix and
+  /// `b` is a top-level function; or `a` is an object and `b` is the name of a
+  /// method.  This operation should be used for a sequence of identifiers
+  /// `a.b.b.c.d.e` ending with an invokable result.
   invokeMethodRef,
 
-  /**
-   * Pop the top `n` values from the stack (where `n` is obtained from
-   * [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
-   * `n` values from [UnlinkedExpr.strings] and use the lists of names and
-   * values to create named arguments.  Then pop the top `m` values from the
-   * stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
-   * from the end) and use them as positional arguments.  Use the lists of
-   * positional and names arguments to invoke the method with the name from
-   * [UnlinkedExpr.strings] of the target popped from the stack.  If `k` is
-   * nonzero (where `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type
-   * arguments from [UnlinkedExpr.references] and use them as generic type
-   * arguments for the aforementioned method.  Push the result of the
-   * invocation onto the stack.
-   *
-   * Arguments are skipped, and `0` are specified as the numbers of arguments
-   * on the stack, if the expression is not a constant. We store expression of
-   * variable initializers to perform top-level inference, and arguments are
-   * never used to infer types.
-   *
-   * This operation should be used for invocation of a method invocation
-   * where `target` is known to be an object instance.
-   */
+  /// Pop the top `n` values from the stack (where `n` is obtained from
+  /// [UnlinkedExpr.ints]) into a list (filled from the end) and take the next
+  /// `n` values from [UnlinkedExpr.strings] and use the lists of names and
+  /// values to create named arguments.  Then pop the top `m` values from the
+  /// stack (where `m` is obtained from [UnlinkedExpr.ints]) into a list (filled
+  /// from the end) and use them as positional arguments.  Use the lists of
+  /// positional and names arguments to invoke the method with the name from
+  /// [UnlinkedExpr.strings] of the target popped from the stack.  If `k` is
+  /// nonzero (where `k` is obtained from [UnlinkedExpr.ints]), obtain `k` type
+  /// arguments from [UnlinkedExpr.references] and use them as generic type
+  /// arguments for the aforementioned method.  Push the result of the
+  /// invocation onto the stack.
+  ///
+  /// Arguments are skipped, and `0` are specified as the numbers of arguments
+  /// on the stack, if the expression is not a constant. We store expression of
+  /// variable initializers to perform top-level inference, and arguments are
+  /// never used to infer types.
+  ///
+  /// This operation should be used for invocation of a method invocation
+  /// where `target` is known to be an object instance.
   invokeMethod,
 
-  /**
-   * Begin a new cascade section.  Duplicate the top value of the stack.
-   */
+  /// Begin a new cascade section.  Duplicate the top value of the stack.
   cascadeSectionBegin,
 
-  /**
-   * End a new cascade section.  Pop the top value from the stack and throw it
-   * away.
-   */
+  /// End a new cascade section.  Pop the top value from the stack and throw it
+  /// away.
   cascadeSectionEnd,
 
-  /**
-   * Pop the top value from the stack and cast it to the type with reference
-   * from [UnlinkedExpr.references], push the result into the stack.
-   */
+  /// Pop the top value from the stack and cast it to the type with reference
+  /// from [UnlinkedExpr.references], push the result into the stack.
   typeCast,
 
-  /**
-   * Pop the top value from the stack and check whether it is a subclass of the
-   * type with reference from [UnlinkedExpr.references], push the result into
-   * the stack.
-   */
+  /// Pop the top value from the stack and check whether it is a subclass of the
+  /// type with reference from [UnlinkedExpr.references], push the result into
+  /// the stack.
   typeCheck,
 
-  /**
-   * Pop the top value from the stack and raise an exception with this value.
-   */
+  /// Pop the top value from the stack and raise an exception with this value.
   throwException,
 
-  /**
-   * Obtain two values `n` and `m` from [UnlinkedExpr.ints].  Then, starting at
-   * the executable element for the expression being evaluated, if n > 0, pop to
-   * the nth enclosing function element.  Then, push the mth local function of
-   * that element onto the stack.
-   */
+  /// Obtain two values `n` and `m` from [UnlinkedExpr.ints].  Then, starting at
+  /// the executable element for the expression being evaluated, if n > 0, pop
+  /// to the nth enclosing function element.  Then, push the mth local function
+  /// of that element onto the stack.
   pushLocalFunctionReference,
 
-  /**
-   * Pop the top two values from the stack.  If the first value is non-null,
-   * keep it and discard the second.  Otherwise, keep the second and discard the
-   * first.
-   */
+  /// Pop the top two values from the stack.  If the first value is non-null,
+  /// keep it and discard the second.  Otherwise, keep the second and discard
+  /// the first.
   ifNull,
 
-  /**
-   * Pop the top value from the stack.  Treat it as a Future and await its
-   * completion.  Then push the awaited value onto the stack.
-   */
+  /// Pop the top value from the stack.  Treat it as a Future and await its
+  /// completion.  Then push the awaited value onto the stack.
   await,
 
-  /**
-   * Push an abstract value onto the stack. Abstract values mark the presence of
-   * a value, but whose details are not included.
-   *
-   * This is not used by the summary generators today, but it will be used to
-   * experiment with prunning the initializer expression tree, so only
-   * information that is necessary gets included in the output summary file.
-   */
+  /// Push an abstract value onto the stack. Abstract values mark the presence
+  /// of a value, but whose details are not included.
+  ///
+  /// This is not used by the summary generators today, but it will be used to
+  /// experiment with prunning the initializer expression tree, so only
+  /// information that is necessary gets included in the output summary file.
   pushUntypedAbstract,
 
-  /**
-   * Get the next type reference from [UnlinkedExpr.references] and push an
-   * abstract value onto the stack that has that type.
-   *
-   * Like [pushUntypedAbstract], this is also not used by the summary generators
-   * today. The plan is to experiment with prunning the initializer expression
-   * tree, and include just enough type information to perform strong-mode type
-   * inference, but not all the details of how this type was obtained.
-   */
+  /// Get the next type reference from [UnlinkedExpr.references] and push an
+  /// abstract value onto the stack that has that type.
+  ///
+  /// Like [pushUntypedAbstract], this is also not used by the summary
+  /// generators today. The plan is to experiment with prunning the initializer
+  /// expression tree, and include just enough type information to perform
+  /// strong-mode type inference, but not all the details of how this type was
+  /// obtained.
   pushTypedAbstract,
 
-  /**
-   * Push an error onto the stack.
-   *
-   * Like [pushUntypedAbstract], this is not used by summary generators today.
-   * This will be used to experiment with prunning the const expression tree. If
-   * a constant has an error, we can omit the subexpression containing the error
-   * and only include a marker that an error was detected.
-   */
+  /// Push an error onto the stack.
+  ///
+  /// Like [pushUntypedAbstract], this is not used by summary generators today.
+  /// This will be used to experiment with prunning the const expression tree.
+  /// If a constant has an error, we can omit the subexpression containing the
+  /// error and only include a marker that an error was detected.
   pushError,
 
-  /**
-   * Push `this` expression onto the stack.
-   */
+  /// Push `this` expression onto the stack.
   pushThis,
 
-  /**
-   * Push `super` expression onto the stack.
-   */
+  /// Push `super` expression onto the stack.
   pushSuper,
 }
 
-/**
- * Unlinked summary information about an import declaration.
- */
+/// Unlinked summary information about an import declaration.
 abstract class UnlinkedImport extends base.SummaryClass {
-  /**
-   * Annotations for this import declaration.
-   */
+  /// Annotations for this import declaration.
   @Id(8)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Combinators contained in this import declaration.
-   */
+  /// Combinators contained in this import declaration.
   @Id(4)
   List<UnlinkedCombinator> get combinators;
 
-  /**
-   * Configurations used to control which library will actually be loaded at
-   * run-time.
-   */
+  /// Configurations used to control which library will actually be loaded at
+  /// run-time.
   @Id(10)
   List<UnlinkedConfiguration> get configurations;
 
-  /**
-   * Indicates whether the import declaration uses the `deferred` keyword.
-   */
+  /// Indicates whether the import declaration uses the `deferred` keyword.
   @Id(9)
   bool get isDeferred;
 
-  /**
-   * Indicates whether the import declaration is implicit.
-   */
+  /// Indicates whether the import declaration is implicit.
   @Id(5)
   bool get isImplicit;
 
-  /**
-   * If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
-   * is true, zero.
-   */
+  /// If [isImplicit] is false, offset of the "import" keyword.  If [isImplicit]
+  /// is true, zero.
   @informative
   @Id(0)
   int get offset;
 
-  /**
-   * Offset of the prefix name relative to the beginning of the file, or zero
-   * if there is no prefix.
-   */
+  /// Offset of the prefix name relative to the beginning of the file, or zero
+  /// if there is no prefix.
   @informative
   @Id(6)
   int get prefixOffset;
 
-  /**
-   * Index into [UnlinkedUnit.references] of the prefix declared by this
-   * import declaration, or zero if this import declaration declares no prefix.
-   *
-   * Note that multiple imports can declare the same prefix.
-   */
+  /// Index into [UnlinkedUnit.references] of the prefix declared by this
+  /// import declaration, or zero if this import declaration declares no prefix.
+  ///
+  /// Note that multiple imports can declare the same prefix.
   @Id(7)
   int get prefixReference;
 
-  /**
-   * URI used in the source code to reference the imported library.
-   */
+  /// URI used in the source code to reference the imported library.
   @Id(1)
   String get uri;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.  If [isImplicit] is true, zero.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.  If [isImplicit] is true, zero.
   @informative
   @Id(2)
   int get uriEnd;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.  If [isImplicit] is true, zero.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.  If [isImplicit] is true, zero.
   @informative
   @Id(3)
   int get uriOffset;
 }
 
-/**
- * Unlinked summary information about a function parameter.
- */
+/// Unlinked summary information about a function parameter.
 abstract class UnlinkedParam extends base.SummaryClass {
-  /**
-   * Annotations for this parameter.
-   */
+  /// Annotations for this parameter.
   @Id(9)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Code range of the parameter.
-   */
+  /// Code range of the parameter.
   @informative
   @Id(7)
   CodeRange get codeRange;
 
-  /**
-   * If the parameter has a default value, the source text of the constant
-   * expression in the default value.  Otherwise the empty string.
-   */
+  /// If the parameter has a default value, the source text of the constant
+  /// expression in the default value.  Otherwise the empty string.
   @informative
   @Id(13)
   String get defaultValueCode;
 
-  /**
-   * If this parameter's type is inferable, nonzero slot id identifying which
-   * entry in [LinkedLibrary.types] contains the inferred type.  If there is no
-   * matching entry in [LinkedLibrary.types], then no type was inferred for
-   * this variable, so its static type is `dynamic`.
-   *
-   * Note that although strong mode considers initializing formals to be
-   * inferable, they are not marked as such in the summary; if their type is
-   * not specified, they always inherit the static type of the corresponding
-   * field.
-   */
+  /// If this parameter's type is inferable, nonzero slot id identifying which
+  /// entry in [LinkedLibrary.types] contains the inferred type.  If there is no
+  /// matching entry in [LinkedLibrary.types], then no type was inferred for
+  /// this variable, so its static type is `dynamic`.
+  ///
+  /// Note that although strong mode considers initializing formals to be
+  /// inferable, they are not marked as such in the summary; if their type is
+  /// not specified, they always inherit the static type of the corresponding
+  /// field.
   @Id(2)
   int get inferredTypeSlot;
 
-  /**
-   * If this is a parameter of an instance method, a nonzero slot id which is
-   * unique within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
-   * `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is a parameter of an instance method, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
+  /// `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   @Id(14)
   int get inheritsCovariantSlot;
 
-  /**
-   * The synthetic initializer function of the parameter.  Absent if the
-   * variable does not have an initializer.
-   */
+  /// The synthetic initializer function of the parameter.  Absent if the
+  /// variable does not have an initializer.
   @Id(12)
   UnlinkedExecutable get initializer;
 
-  /**
-   * Indicates whether this parameter is explicitly marked as being covariant.
-   */
+  /// Indicates whether this parameter is explicitly marked as being covariant.
   @Id(15)
   bool get isExplicitlyCovariant;
 
-  /**
-   * Indicates whether the parameter is declared using the `final` keyword.
-   */
+  /// Indicates whether the parameter is declared using the `final` keyword.
   @Id(16)
   bool get isFinal;
 
-  /**
-   * Indicates whether this is a function-typed parameter. A parameter is
-   * function-typed if the declaration of the parameter has explicit formal
-   * parameters
-   * ```
-   * int functionTyped(int p)
-   * ```
-   * but is not function-typed if it does not, even if the type of the parameter
-   * is a function type.
-   */
+  /// Indicates whether this is a function-typed parameter. A parameter is
+  /// function-typed if the declaration of the parameter has explicit formal
+  /// parameters
+  /// ```
+  /// int functionTyped(int p)
+  /// ```
+  /// but is not function-typed if it does not, even if the type of the
+  /// parameter is a function type.
   @Id(5)
   bool get isFunctionTyped;
 
-  /**
-   * Indicates whether this is an initializing formal parameter (i.e. it is
-   * declared using `this.` syntax).
-   */
+  /// Indicates whether this is an initializing formal parameter (i.e. it is
+  /// declared using `this.` syntax).
   @Id(6)
   bool get isInitializingFormal;
 
-  /**
-   * Kind of the parameter.
-   */
+  /// Kind of the parameter.
   @Id(4)
   UnlinkedParamKind get kind;
 
-  /**
-   * Name of the parameter.
-   */
+  /// Name of the parameter.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the parameter name relative to the beginning of the file.
-   */
+  /// Offset of the parameter name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 
-  /**
-   * If [isFunctionTyped] is `true`, the parameters of the function type.
-   */
+  /// If [isFunctionTyped] is `true`, the parameters of the function type.
   @Id(8)
   List<UnlinkedParam> get parameters;
 
-  /**
-   * If [isFunctionTyped] is `true`, the declared return type.  If
-   * [isFunctionTyped] is `false`, the declared type.  Absent if the type is
-   * implicit.
-   */
+  /// If [isFunctionTyped] is `true`, the declared return type.  If
+  /// [isFunctionTyped] is `false`, the declared type.  Absent if the type is
+  /// implicit.
   @Id(3)
   EntityRef get type;
 
-  /**
-   * The length of the visible range.
-   */
+  /// The length of the visible range.
   @informative
   @Id(10)
   int get visibleLength;
 
-  /**
-   * The beginning of the visible range.
-   */
+  /// The beginning of the visible range.
   @informative
   @Id(11)
   int get visibleOffset;
 }
 
-/**
- * Enum used to indicate the kind of a parameter.
- */
+/// Enum used to indicate the kind of a parameter.
 enum UnlinkedParamKind {
-  /**
-   * Parameter is required.
-   */
+  /// Parameter is required.
   required,
 
-  /**
-   * Parameter is positional optional (enclosed in `[]`)
-   */
+  /// Parameter is positional optional (enclosed in `[]`)
   positional,
 
-  /**
-   * Parameter is named optional (enclosed in `{}`)
-   */
+  /// Parameter is named optional (enclosed in `{}`)
   named
 }
 
-/**
- * Unlinked summary information about a part declaration.
- */
+/// Unlinked summary information about a part declaration.
 abstract class UnlinkedPart extends base.SummaryClass {
-  /**
-   * Annotations for this part declaration.
-   */
+  /// Annotations for this part declaration.
   @Id(2)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * End of the URI string (including quotes) relative to the beginning of the
-   * file.
-   */
+  /// End of the URI string (including quotes) relative to the beginning of the
+  /// file.
   @informative
   @Id(0)
   int get uriEnd;
 
-  /**
-   * Offset of the URI string (including quotes) relative to the beginning of
-   * the file.
-   */
+  /// Offset of the URI string (including quotes) relative to the beginning of
+  /// the file.
   @informative
   @Id(1)
   int get uriOffset;
 }
 
-/**
- * Unlinked summary information about a specific name contributed by a
- * compilation unit to a library's public namespace.
- *
- * TODO(paulberry): some of this information is redundant with information
- * elsewhere in the summary.  Consider reducing the redundancy to reduce
- * summary size.
- */
+/// Unlinked summary information about a specific name contributed by a
+/// compilation unit to a library's public namespace.
+///
+/// TODO(paulberry): some of this information is redundant with information
+/// elsewhere in the summary.  Consider reducing the redundancy to reduce
+/// summary size.
 abstract class UnlinkedPublicName extends base.SummaryClass {
-  /**
-   * The kind of object referred to by the name.
-   */
+  /// The kind of object referred to by the name.
   @Id(1)
   ReferenceKind get kind;
 
-  /**
-   * If this [UnlinkedPublicName] is a class, the list of members which can be
-   * referenced statically - static fields, static methods, and constructors.
-   * Otherwise empty.
-   *
-   * Unnamed constructors are not included since they do not constitute a
-   * separate name added to any namespace.
-   */
+  /// If this [UnlinkedPublicName] is a class, the list of members which can be
+  /// referenced statically - static fields, static methods, and constructors.
+  /// Otherwise empty.
+  ///
+  /// Unnamed constructors are not included since they do not constitute a
+  /// separate name added to any namespace.
   @Id(2)
   List<UnlinkedPublicName> get members;
 
-  /**
-   * The name itself.
-   */
+  /// The name itself.
   @Id(0)
   String get name;
 
-  /**
-   * If the entity being referred to is generic, the number of type parameters
-   * it accepts.  Otherwise zero.
-   */
+  /// If the entity being referred to is generic, the number of type parameters
+  /// it accepts.  Otherwise zero.
   @Id(3)
   int get numTypeParameters;
 }
 
-/**
- * Unlinked summary information about what a compilation unit contributes to a
- * library's public namespace.  This is the subset of [UnlinkedUnit] that is
- * required from dependent libraries in order to perform prelinking.
- */
+/// Unlinked summary information about what a compilation unit contributes to a
+/// library's public namespace.  This is the subset of [UnlinkedUnit] that is
+/// required from dependent libraries in order to perform prelinking.
 @TopLevel('UPNS')
 abstract class UnlinkedPublicNamespace extends base.SummaryClass {
   factory UnlinkedPublicNamespace.fromBuffer(List<int> buffer) =>
       generated.readUnlinkedPublicNamespace(buffer);
 
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   @Id(2)
   List<UnlinkedExportPublic> get exports;
 
-  /**
-   * Public names defined in the compilation unit.
-   *
-   * TODO(paulberry): consider sorting these names to reduce unnecessary
-   * relinking.
-   */
+  /// Public names defined in the compilation unit.
+  ///
+  /// TODO(paulberry): consider sorting these names to reduce unnecessary
+  /// relinking.
   @Id(0)
   List<UnlinkedPublicName> get names;
 
-  /**
-   * URIs referenced by part declarations in the compilation unit.
-   */
+  /// URIs referenced by part declarations in the compilation unit.
   @Id(1)
   List<String> get parts;
 }
 
-/**
- * Unlinked summary information about a name referred to in one library that
- * might be defined in another.
- */
+/// Unlinked summary information about a name referred to in one library that
+/// might be defined in another.
 abstract class UnlinkedReference extends base.SummaryClass {
-  /**
-   * Name of the entity being referred to.  For the pseudo-type `dynamic`, the
-   * string is "dynamic".  For the pseudo-type `void`, the string is "void".
-   * For the pseudo-type `bottom`, the string is "*bottom*".
-   */
+  /// Name of the entity being referred to.  For the pseudo-type `dynamic`, the
+  /// string is "dynamic".  For the pseudo-type `void`, the string is "void".
+  /// For the pseudo-type `bottom`, the string is "*bottom*".
   @Id(0)
   String get name;
 
-  /**
-   * Prefix used to refer to the entity, or zero if no prefix is used.  This is
-   * an index into [UnlinkedUnit.references].
-   *
-   * Prefix references must always point backward; that is, for all i, if
-   * UnlinkedUnit.references[i].prefixReference != 0, then
-   * UnlinkedUnit.references[i].prefixReference < i.
-   */
+  /// Prefix used to refer to the entity, or zero if no prefix is used.  This is
+  /// an index into [UnlinkedUnit.references].
+  ///
+  /// Prefix references must always point backward; that is, for all i, if
+  /// UnlinkedUnit.references[i].prefixReference != 0, then
+  /// UnlinkedUnit.references[i].prefixReference < i.
   @Id(1)
   int get prefixReference;
 }
 
-/**
- * Unlinked summary information about a typedef declaration.
- */
+/// Unlinked summary information about a typedef declaration.
 abstract class UnlinkedTypedef extends base.SummaryClass {
-  /**
-   * Annotations for this typedef.
-   */
+  /// Annotations for this typedef.
   @Id(4)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Code range of the typedef.
-   */
+  /// Code range of the typedef.
   @informative
   @Id(7)
   CodeRange get codeRange;
 
-  /**
-   * Documentation comment for the typedef, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the typedef, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(6)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * Name of the typedef.
-   */
+  /// Name of the typedef.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the typedef name relative to the beginning of the file.
-   */
+  /// Offset of the typedef name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 
-  /**
-   * Parameters of the executable, if any.
-   */
+  /// Parameters of the executable, if any.
   @Id(3)
   List<UnlinkedParam> get parameters;
 
-  /**
-   * If [style] is [TypedefStyle.functionType], the return type of the typedef.
-   * If [style] is [TypedefStyle.genericFunctionType], the function type being
-   * defined.
-   */
+  /// If [style] is [TypedefStyle.functionType], the return type of the typedef.
+  /// If [style] is [TypedefStyle.genericFunctionType], the function type being
+  /// defined.
   @Id(2)
   EntityRef get returnType;
 
-  /**
-   * The style of the typedef.
-   */
+  /// The style of the typedef.
   @Id(8)
   TypedefStyle get style;
 
-  /**
-   * Type parameters of the typedef, if any.
-   */
+  /// Type parameters of the typedef, if any.
   @Id(5)
   List<UnlinkedTypeParam> get typeParameters;
 }
 
-/**
- * Unlinked summary information about a type parameter declaration.
- */
+/// Unlinked summary information about a type parameter declaration.
 abstract class UnlinkedTypeParam extends base.SummaryClass {
-  /**
-   * Annotations for this type parameter.
-   */
+  /// Annotations for this type parameter.
   @Id(3)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Bound of the type parameter, if a bound is explicitly declared.  Otherwise
-   * null.
-   */
+  /// Bound of the type parameter, if a bound is explicitly declared.  Otherwise
+  /// null.
   @Id(2)
   EntityRef get bound;
 
-  /**
-   * Code range of the type parameter.
-   */
+  /// Code range of the type parameter.
   @informative
   @Id(4)
   CodeRange get codeRange;
 
-  /**
-   * Name of the type parameter.
-   */
+  /// Name of the type parameter.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the type parameter name relative to the beginning of the file.
-   */
+  /// Offset of the type parameter name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 }
 
-/**
- * Unlinked summary information about a compilation unit ("part file").
- */
+/// Unlinked summary information about a compilation unit ("part file").
 @TopLevel('UUnt')
 abstract class UnlinkedUnit extends base.SummaryClass {
   factory UnlinkedUnit.fromBuffer(List<int> buffer) =>
       generated.readUnlinkedUnit(buffer);
 
-  /**
-   * MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
-   * including this one) as 16 unsigned 8-bit integer values.  This can be used
-   * to identify when the API of a unit may have changed.
-   */
+  /// MD5 hash of the non-informative fields of the [UnlinkedUnit] (not
+  /// including this one) as 16 unsigned 8-bit integer values.  This can be used
+  /// to identify when the API of a unit may have changed.
   @Id(19)
   List<int> get apiSignature;
 
-  /**
-   * Classes declared in the compilation unit.
-   */
+  /// Classes declared in the compilation unit.
   @Id(2)
   List<UnlinkedClass> get classes;
 
-  /**
-   * Code range of the unit.
-   */
+  /// Code range of the unit.
   @informative
   @Id(15)
   CodeRange get codeRange;
 
-  /**
-   * Enums declared in the compilation unit.
-   */
+  /// Enums declared in the compilation unit.
   @Id(12)
   List<UnlinkedEnum> get enums;
 
-  /**
-   * Top level executable objects (functions, getters, and setters) declared in
-   * the compilation unit.
-   */
+  /// Top level executable objects (functions, getters, and setters) declared in
+  /// the compilation unit.
   @Id(4)
   List<UnlinkedExecutable> get executables;
 
-  /**
-   * Export declarations in the compilation unit.
-   */
+  /// Export declarations in the compilation unit.
   @Id(13)
   List<UnlinkedExportNonPublic> get exports;
 
-  /**
-   * If this compilation unit was summarized in fallback mode, the path where
-   * the compilation unit may be found on disk.  Otherwise empty.
-   *
-   * When this field is non-empty, all other fields in the data structure have
-   * their default values.
-   */
+  /// If this compilation unit was summarized in fallback mode, the path where
+  /// the compilation unit may be found on disk.  Otherwise empty.
+  ///
+  /// When this field is non-empty, all other fields in the data structure have
+  /// their default values.
   @deprecated
   @Id(16)
   String get fallbackModePath;
 
-  /**
-   * Import declarations in the compilation unit.
-   */
+  /// Import declarations in the compilation unit.
   @Id(5)
   List<UnlinkedImport> get imports;
 
-  /**
-   * Indicates whether the unit contains a "part of" declaration.
-   */
+  /// Indicates whether the unit contains a "part of" declaration.
   @Id(18)
   bool get isPartOf;
 
-  /**
-   * Annotations for the library declaration, or the empty list if there is no
-   * library declaration.
-   */
+  /// Annotations for the library declaration, or the empty list if there is no
+  /// library declaration.
   @Id(14)
   List<UnlinkedExpr> get libraryAnnotations;
 
-  /**
-   * Documentation comment for the library, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the library, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(9)
   UnlinkedDocumentationComment get libraryDocumentationComment;
 
-  /**
-   * Name of the library (from a "library" declaration, if present).
-   */
+  /// Name of the library (from a "library" declaration, if present).
   @Id(6)
   String get libraryName;
 
-  /**
-   * Length of the library name as it appears in the source code (or 0 if the
-   * library has no name).
-   */
+  /// Length of the library name as it appears in the source code (or 0 if the
+  /// library has no name).
   @informative
   @Id(7)
   int get libraryNameLength;
 
-  /**
-   * Offset of the library name relative to the beginning of the file (or 0 if
-   * the library has no name).
-   */
+  /// Offset of the library name relative to the beginning of the file (or 0 if
+  /// the library has no name).
   @informative
   @Id(8)
   int get libraryNameOffset;
 
-  /**
-   * Offsets of the first character of each line in the source code.
-   */
+  /// Offsets of the first character of each line in the source code.
   @informative
   @Id(17)
   List<int> get lineStarts;
 
-  /**
-   * Mixins declared in the compilation unit.
-   */
+  /// Mixins declared in the compilation unit.
   @Id(20)
   List<UnlinkedClass> get mixins;
 
-  /**
-   * Part declarations in the compilation unit.
-   */
+  /// Part declarations in the compilation unit.
   @Id(11)
   List<UnlinkedPart> get parts;
 
-  /**
-   * Unlinked public namespace of this compilation unit.
-   */
+  /// Unlinked public namespace of this compilation unit.
   @Id(0)
   UnlinkedPublicNamespace get publicNamespace;
 
-  /**
-   * Top level and prefixed names referred to by this compilation unit.  The
-   * zeroth element of this array is always populated and is used to represent
-   * the absence of a reference in places where a reference is optional (for
-   * example [UnlinkedReference.prefixReference or
-   * UnlinkedImport.prefixReference]).
-   */
+  /// Top level and prefixed names referred to by this compilation unit.  The
+  /// zeroth element of this array is always populated and is used to represent
+  /// the absence of a reference in places where a reference is optional (for
+  /// example [UnlinkedReference.prefixReference or
+  /// UnlinkedImport.prefixReference]).
   @Id(1)
   List<UnlinkedReference> get references;
 
-  /**
-   * Typedefs declared in the compilation unit.
-   */
+  /// Typedefs declared in the compilation unit.
   @Id(10)
   List<UnlinkedTypedef> get typedefs;
 
-  /**
-   * Top level variables declared in the compilation unit.
-   */
+  /// Top level variables declared in the compilation unit.
   @Id(3)
   List<UnlinkedVariable> get variables;
 }
 
-/**
- * Unlinked summary information about a top level variable, local variable, or
- * a field.
- */
+/// Unlinked summary information about a top level variable, local variable, or
+/// a field.
 abstract class UnlinkedVariable extends base.SummaryClass {
-  /**
-   * Annotations for this variable.
-   */
+  /// Annotations for this variable.
   @Id(8)
   List<UnlinkedExpr> get annotations;
 
-  /**
-   * Code range of the variable.
-   */
+  /// Code range of the variable.
   @informative
   @Id(5)
   CodeRange get codeRange;
 
-  /**
-   * Documentation comment for the variable, or `null` if there is no
-   * documentation comment.
-   */
+  /// Documentation comment for the variable, or `null` if there is no
+  /// documentation comment.
   @informative
   @Id(10)
   UnlinkedDocumentationComment get documentationComment;
 
-  /**
-   * If this variable is inferable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the inferred type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then no type was
-   * inferred for this variable, so its static type is `dynamic`.
-   */
+  /// If this variable is inferable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the inferred type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then no type was
+  /// inferred for this variable, so its static type is `dynamic`.
   @Id(9)
   int get inferredTypeSlot;
 
-  /**
-   * If this is an instance non-final field, a nonzero slot id which is unique
-   * within this compilation unit.  If this id is found in
-   * [LinkedUnit.parametersInheritingCovariant], then the parameter of the
-   * synthetic setter inherits `@covariant` behavior from a base class.
-   *
-   * Otherwise, zero.
-   */
+  /// If this is an instance non-final field, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.parametersInheritingCovariant], then the parameter of the
+  /// synthetic setter inherits `@covariant` behavior from a base class.
+  ///
+  /// Otherwise, zero.
   @Id(15)
   int get inheritsCovariantSlot;
 
-  /**
-   * The synthetic initializer function of the variable.  Absent if the variable
-   * does not have an initializer.
-   */
+  /// The synthetic initializer function of the variable.  Absent if the
+  /// variable does not have an initializer.
   @Id(13)
   UnlinkedExecutable get initializer;
 
-  /**
-   * Indicates whether the variable is declared using the `const` keyword.
-   */
+  /// Indicates whether the variable is declared using the `const` keyword.
   @Id(6)
   bool get isConst;
 
-  /**
-   * Indicates whether this variable is declared using the `covariant` keyword.
-   * This should be false for everything except instance fields.
-   */
+  /// Indicates whether this variable is declared using the `covariant` keyword.
+  /// This should be false for everything except instance fields.
   @Id(14)
   bool get isCovariant;
 
-  /**
-   * Indicates whether the variable is declared using the `final` keyword.
-   */
+  /// Indicates whether the variable is declared using the `final` keyword.
   @Id(7)
   bool get isFinal;
 
-  /**
-   * Indicates whether the variable is declared using the `static` keyword.
-   *
-   * Note that for top level variables, this flag is false, since they are not
-   * declared using the `static` keyword (even though they are considered
-   * static for semantic purposes).
-   */
+  /// Indicates whether the variable is declared using the `static` keyword.
+  ///
+  /// Note that for top level variables, this flag is false, since they are not
+  /// declared using the `static` keyword (even though they are considered
+  /// static for semantic purposes).
   @Id(4)
   bool get isStatic;
 
-  /**
-   * Name of the variable.
-   */
+  /// Name of the variable.
   @Id(0)
   String get name;
 
-  /**
-   * Offset of the variable name relative to the beginning of the file.
-   */
+  /// Offset of the variable name relative to the beginning of the file.
   @informative
   @Id(1)
   int get nameOffset;
 
-  /**
-   * If this variable is propagable, nonzero slot id identifying which entry in
-   * [LinkedLibrary.types] contains the propagated type for this variable.  If
-   * there is no matching entry in [LinkedLibrary.types], then this variable's
-   * propagated type is the same as its declared type.
-   *
-   * Non-propagable variables have a [propagatedTypeSlot] of zero.
-   */
+  /// If this variable is propagable, nonzero slot id identifying which entry in
+  /// [LinkedLibrary.types] contains the propagated type for this variable.  If
+  /// there is no matching entry in [LinkedLibrary.types], then this variable's
+  /// propagated type is the same as its declared type.
+  ///
+  /// Non-propagable variables have a [propagatedTypeSlot] of zero.
   @Id(2)
   int get propagatedTypeSlot;
 
-  /**
-   * Declared type of the variable.  Absent if the type is implicit.
-   */
+  /// Declared type of the variable.  Absent if the type is implicit.
   @Id(3)
   EntityRef get type;
 
-  /**
-   * If a local variable, the length of the visible range; zero otherwise.
-   */
+  /// If a local variable, the length of the visible range; zero otherwise.
   @deprecated
   @informative
   @Id(11)
   int get visibleLength;
 
-  /**
-   * If a local variable, the beginning of the visible range; zero otherwise.
-   */
+  /// If a local variable, the beginning of the visible range; zero otherwise.
   @deprecated
   @informative
   @Id(12)
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 6005e83..04b8fef 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -1002,16 +1002,21 @@
    */
   String _getNodeDoc(AnnotatedNode node) {
     Comment comment = node.documentationComment;
-    if (comment != null &&
-        comment.isDocumentation &&
-        comment.tokens.length == 1 &&
-        comment.tokens.first.lexeme.startsWith('/*')) {
-      Token token = comment.tokens.first;
-      return token.lexeme.split('\n').map((String line) {
-        line = line.trimLeft();
-        if (line.startsWith('*')) line = ' ' + line;
-        return line;
-      }).join('\n');
+    if (comment != null && comment.isDocumentation) {
+      if (comment.tokens.length == 1 &&
+          comment.tokens.first.lexeme.startsWith('/*')) {
+        Token token = comment.tokens.first;
+        return token.lexeme.split('\n').map((String line) {
+          line = line.trimLeft();
+          if (line.startsWith('*')) line = ' ' + line;
+          return line;
+        }).join('\n');
+      } else if (comment.tokens
+          .every((token) => token.lexeme.startsWith('///'))) {
+        return comment.tokens
+            .map((token) => token.lexeme.trimLeft())
+            .join('\n');
+      }
     }
     return null;
   }