Convert engine.dart to triple-slash comment style

Change-Id: I5808862e2d9a8e0944f713d925cf9b526bc5cccc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99780
Commit-Queue: Paul Berry <paulberry@google.com>
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index c37d478..07563fc 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -28,7 +28,6 @@
 import 'package:analyzer/src/plugin/resolver_provider.dart';
 import 'package:analyzer/src/services/lint.dart';
 import 'package:analyzer/src/summary/api_signature.dart';
-import 'package:analyzer/src/task/api/dart.dart';
 import 'package:analyzer/src/task/api/model.dart';
 import 'package:analyzer/src/task/manager.dart';
 import 'package:front_end/src/fasta/scanner/token.dart';
@@ -39,605 +38,473 @@
 export 'package:analyzer/src/generated/timestamped_data.dart'
     show TimestampedData;
 
-/**
- * Used by [AnalysisOptions] to allow function bodies to be analyzed in some
- * sources but not others.
- */
+/// Used by [AnalysisOptions] to allow function bodies to be analyzed in some
+/// sources but not others.
 typedef bool AnalyzeFunctionBodiesPredicate(Source source);
 
-/**
- * A context in which a single analysis can be performed and incrementally
- * maintained. The context includes such information as the version of the SDK
- * being analyzed against as well as the package-root used to resolve 'package:'
- * URI's. (Both of which are known indirectly through the [SourceFactory].)
- *
- * An analysis context also represents the state of the analysis, which includes
- * knowing which sources have been included in the analysis (either directly or
- * indirectly) and the results of the analysis. Sources must be added and
- * removed from the context using the method [applyChanges], which is also used
- * to notify the context when sources have been modified and, consequently,
- * previously known results might have been invalidated.
- *
- * There are two ways to access the results of the analysis. The most common is
- * to use one of the 'get' methods to access the results. The 'get' methods have
- * the advantage that they will always return quickly, but have the disadvantage
- * that if the results are not currently available they will return either
- * nothing or in some cases an incomplete result. The second way to access
- * results is by using one of the 'compute' methods. The 'compute' methods will
- * always attempt to compute the requested results but might block the caller
- * for a significant period of time.
- *
- * When results have been invalidated, have never been computed (as is the case
- * for newly added sources), or have been removed from the cache, they are
- * <b>not</b> automatically recreated. They will only be recreated if one of the
- * 'compute' methods is invoked.
- *
- * However, this is not always acceptable. Some clients need to keep the
- * analysis results up-to-date. For such clients there is a mechanism that
- * allows them to incrementally perform needed analysis and get notified of the
- * consequent changes to the analysis results. This mechanism is realized by the
- * method [performAnalysisTask].
- *
- * Analysis engine allows for having more than one context. This can be used,
- * for example, to perform one analysis based on the state of files on disk and
- * a separate analysis based on the state of those files in open editors. It can
- * also be used to perform an analysis based on a proposed future state, such as
- * the state after a refactoring.
- */
+/// A context in which a single analysis can be performed and incrementally
+/// maintained. The context includes such information as the version of the SDK
+/// being analyzed against as well as the package-root used to resolve 'package:'
+/// URI's. (Both of which are known indirectly through the [SourceFactory].)
+///
+/// An analysis context also represents the state of the analysis, which includes
+/// knowing which sources have been included in the analysis (either directly or
+/// indirectly) and the results of the analysis. Sources must be added and
+/// removed from the context using the method [applyChanges], which is also used
+/// to notify the context when sources have been modified and, consequently,
+/// previously known results might have been invalidated.
+///
+/// There are two ways to access the results of the analysis. The most common is
+/// to use one of the 'get' methods to access the results. The 'get' methods have
+/// the advantage that they will always return quickly, but have the disadvantage
+/// that if the results are not currently available they will return either
+/// nothing or in some cases an incomplete result. The second way to access
+/// results is by using one of the 'compute' methods. The 'compute' methods will
+/// always attempt to compute the requested results but might block the caller
+/// for a significant period of time.
+///
+/// When results have been invalidated, have never been computed (as is the case
+/// for newly added sources), or have been removed from the cache, they are
+/// <b>not</b> automatically recreated. They will only be recreated if one of the
+/// 'compute' methods is invoked.
+///
+/// However, this is not always acceptable. Some clients need to keep the
+/// analysis results up-to-date. For such clients there is a mechanism that
+/// allows them to incrementally perform needed analysis and get notified of the
+/// consequent changes to the analysis results. This mechanism is realized by the
+/// method [performAnalysisTask].
+///
+/// Analysis engine allows for having more than one context. This can be used,
+/// for example, to perform one analysis based on the state of files on disk and
+/// a separate analysis based on the state of those files in open editors. It can
+/// also be used to perform an analysis based on a proposed future state, such as
+/// the state after a refactoring.
 abstract class AnalysisContext {
-  /**
-   * The file resolver provider used to override the way file URI's are
-   * resolved in some contexts.
-   */
+  /// The file resolver provider used to override the way file URI's are
+  /// resolved in some contexts.
   ResolverProvider fileResolverProvider;
 
-  /**
-   * Return the set of analysis options controlling the behavior of this
-   * context. Clients should not modify the returned set of options.
-   */
+  /// Return the set of analysis options controlling the behavior of this
+  /// context. Clients should not modify the returned set of options.
   AnalysisOptions get analysisOptions;
 
-  /**
-   * Set the set of analysis options controlling the behavior of this context to
-   * the given [options]. Clients can safely assume that all necessary analysis
-   * results have been invalidated.
-   */
+  /// Set the set of analysis options controlling the behavior of this context to
+  /// the given [options]. Clients can safely assume that all necessary analysis
+  /// results have been invalidated.
   void set analysisOptions(AnalysisOptions options);
 
-  /**
-   * Set the order in which sources will be analyzed by [performAnalysisTask] to
-   * match the order of the sources in the given list of [sources]. If a source
-   * that needs to be analyzed is not contained in the list, then it will be
-   * treated as if it were at the end of the list. If the list is empty (or
-   * `null`) then no sources will be given priority over other sources.
-   *
-   * Changes made to the list after this method returns will <b>not</b> be
-   * reflected in the priority order.
-   */
+  /// Set the order in which sources will be analyzed by [performAnalysisTask] to
+  /// match the order of the sources in the given list of [sources]. If a source
+  /// that needs to be analyzed is not contained in the list, then it will be
+  /// treated as if it were at the end of the list. If the list is empty (or
+  /// `null`) then no sources will be given priority over other sources.
+  ///
+  /// Changes made to the list after this method returns will <b>not</b> be
+  /// reflected in the priority order.
   void set analysisPriorityOrder(List<Source> sources);
 
-  /**
-   * Return the set of declared variables used when computing constant values.
-   */
+  /// Return the set of declared variables used when computing constant values.
   DeclaredVariables get declaredVariables;
 
-  /**
-   * Return a list containing all of the sources known to this context that
-   * represent HTML files. The contents of the list can be incomplete.
-   */
+  /// Return a list containing all of the sources known to this context that
+  /// represent HTML files. The contents of the list can be incomplete.
   List<Source> get htmlSources;
 
-  /**
-   * The stream that is notified when a source either starts or stops being
-   * analyzed implicitly.
-   */
+  /// The stream that is notified when a source either starts or stops being
+  /// analyzed implicitly.
   Stream<ImplicitAnalysisEvent> get implicitAnalysisEvents;
 
-  /**
-   * Returns `true` if this context was disposed using [dispose].
-   */
+  /// Returns `true` if this context was disposed using [dispose].
   bool get isDisposed;
 
-  /**
-   * Return a list containing all of the sources known to this context that
-   * represent the defining compilation unit of a library that can be run within
-   * a browser. The sources that are returned represent libraries that have a
-   * 'main' method and are either referenced by an HTML file or import, directly
-   * or indirectly, a client-only library. The contents of the list can be
-   * incomplete.
-   */
+  /// Return a list containing all of the sources known to this context that
+  /// represent the defining compilation unit of a library that can be run within
+  /// a browser. The sources that are returned represent libraries that have a
+  /// 'main' method and are either referenced by an HTML file or import, directly
+  /// or indirectly, a client-only library. The contents of the list can be
+  /// incomplete.
   List<Source> get launchableClientLibrarySources;
 
-  /**
-   * Return a list containing all of the sources known to this context that
-   * represent the defining compilation unit of a library that can be run
-   * outside of a browser. The contents of the list can be incomplete.
-   */
+  /// Return a list containing all of the sources known to this context that
+  /// represent the defining compilation unit of a library that can be run
+  /// outside of a browser. The contents of the list can be incomplete.
   List<Source> get launchableServerLibrarySources;
 
-  /**
-   * Return a list containing all of the sources known to this context that
-   * represent the defining compilation unit of a library. The contents of the
-   * list can be incomplete.
-   */
+  /// Return a list containing all of the sources known to this context that
+  /// represent the defining compilation unit of a library. The contents of the
+  /// list can be incomplete.
   List<Source> get librarySources;
 
-  /**
-   * Return a client-provided name used to identify this context, or `null` if
-   * the client has not provided a name.
-   */
+  /// Return a client-provided name used to identify this context, or `null` if
+  /// the client has not provided a name.
   String get name;
 
-  /**
-   * Set the client-provided name used to identify this context to the given
-   * [name].
-   */
+  /// Set the client-provided name used to identify this context to the given
+  /// [name].
   set name(String name);
 
-  /**
-   * The stream that is notified when sources have been added or removed,
-   * or the source's content has changed.
-   */
+  /// The stream that is notified when sources have been added or removed,
+  /// or the source's content has changed.
   Stream<SourcesChangedEvent> get onSourcesChanged;
 
-  /**
-   * Return the source factory used to create the sources that can be analyzed
-   * in this context.
-   */
+  /// Return the source factory used to create the sources that can be analyzed
+  /// in this context.
   SourceFactory get sourceFactory;
 
-  /**
-   * Set the source factory used to create the sources that can be analyzed in
-   * this context to the given source [factory]. Clients can safely assume that
-   * all analysis results have been invalidated.
-   */
+  /// Set the source factory used to create the sources that can be analyzed in
+  /// this context to the given source [factory]. Clients can safely assume that
+  /// all analysis results have been invalidated.
   void set sourceFactory(SourceFactory factory);
 
-  /**
-   * Return a list containing all of the sources known to this context.
-   */
+  /// Return a list containing all of the sources known to this context.
   List<Source> get sources;
 
-  /**
-   * Return a type provider for this context or throw [AnalysisException] if
-   * either `dart:core` or `dart:async` cannot be resolved.
-   */
+  /// Return a type provider for this context or throw [AnalysisException] if
+  /// either `dart:core` or `dart:async` cannot be resolved.
   TypeProvider get typeProvider;
 
-  /**
-   * Return a type system for this context.
-   */
+  /// Return a type system for this context.
   TypeSystem get typeSystem;
 
-  /**
-   * Add the given [listener] to the list of objects that are to be notified
-   * when various analysis results are produced in this context.
-   */
+  /// Add the given [listener] to the list of objects that are to be notified
+  /// when various analysis results are produced in this context.
   void addListener(AnalysisListener listener);
 
-  /**
-   * Apply the given [delta] to change the level of analysis that will be
-   * performed for the sources known to this context.
-   */
+  /// Apply the given [delta] to change the level of analysis that will be
+  /// performed for the sources known to this context.
   void applyAnalysisDelta(AnalysisDelta delta);
 
-  /**
-   * Apply the changes specified by the given [changeSet] to this context. Any
-   * analysis results that have been invalidated by these changes will be
-   * removed.
-   */
+  /// Apply the changes specified by the given [changeSet] to this context. Any
+  /// analysis results that have been invalidated by these changes will be
+  /// removed.
   void applyChanges(ChangeSet changeSet);
 
-  /**
-   * Return the documentation comment for the given [element] as it appears in
-   * the original source (complete with the beginning and ending delimiters) for
-   * block documentation comments, or lines starting with `"///"` and separated
-   * with `"\n"` characters for end-of-line documentation comments, or `null` if
-   * the element does not have a documentation comment associated with it. This
-   * can be a long-running operation if the information needed to access the
-   * comment is not cached.
-   *
-   * Throws an [AnalysisException] if the documentation comment could not be
-   * determined because the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   */
+  /// Return the documentation comment for the given [element] as it appears in
+  /// the original source (complete with the beginning and ending delimiters) for
+  /// block documentation comments, or lines starting with `"///"` and separated
+  /// with `"\n"` characters for end-of-line documentation comments, or `null` if
+  /// the element does not have a documentation comment associated with it. This
+  /// can be a long-running operation if the information needed to access the
+  /// comment is not cached.
+  ///
+  /// Throws an [AnalysisException] if the documentation comment could not be
+  /// determined because the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
   String computeDocumentationComment(Element element);
 
-  /**
-   * Return a list containing all of the errors associated with the given
-   * [source]. If the errors are not already known then the source will be
-   * analyzed in order to determine the errors associated with it.
-   *
-   * Throws an [AnalysisException] if the errors could not be determined because
-   * the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getErrors].
-   */
+  /// Return a list containing all of the errors associated with the given
+  /// [source]. If the errors are not already known then the source will be
+  /// analyzed in order to determine the errors associated with it.
+  ///
+  /// Throws an [AnalysisException] if the errors could not be determined because
+  /// the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getErrors].
   List<AnalysisError> computeErrors(Source source);
 
-  /**
-   * Return the kind of the given [source], computing it's kind if it is not
-   * already known. Return [SourceKind.UNKNOWN] if the source is not contained
-   * in this context.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getKindOf].
-   */
+  /// Return the kind of the given [source], computing it's kind if it is not
+  /// already known. Return [SourceKind.UNKNOWN] if the source is not contained
+  /// in this context.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getKindOf].
   SourceKind computeKindOf(Source source);
 
-  /**
-   * Return the element model corresponding to the library defined by the given
-   * [source]. If the element model does not yet exist it will be created. The
-   * process of creating an element model for a library can long-running,
-   * depending on the size of the library and the number of libraries that are
-   * imported into it that also need to have a model built for them.
-   *
-   * Throws an [AnalysisException] if the element model could not be determined
-   * because the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getLibraryElement].
-   */
+  /// Return the element model corresponding to the library defined by the given
+  /// [source]. If the element model does not yet exist it will be created. The
+  /// process of creating an element model for a library can long-running,
+  /// depending on the size of the library and the number of libraries that are
+  /// imported into it that also need to have a model built for them.
+  ///
+  /// Throws an [AnalysisException] if the element model could not be determined
+  /// because the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getLibraryElement].
   LibraryElement computeLibraryElement(Source source);
 
-  /**
-   * Return the line information for the given [source], or `null` if the source
-   * is not of a recognized kind (neither a Dart nor HTML file). If the line
-   * information was not previously known it will be created. The line
-   * information is used to map offsets from the beginning of the source to line
-   * and column pairs.
-   *
-   * Throws an [AnalysisException] if the line information could not be
-   * determined because the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getLineInfo].
-   */
+  /// Return the line information for the given [source], or `null` if the source
+  /// is not of a recognized kind (neither a Dart nor HTML file). If the line
+  /// information was not previously known it will be created. The line
+  /// information is used to map offsets from the beginning of the source to line
+  /// and column pairs.
+  ///
+  /// Throws an [AnalysisException] if the line information could not be
+  /// determined because the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getLineInfo].
   LineInfo computeLineInfo(Source source);
 
-  /**
-   * Return a future which will be completed with the fully resolved AST for a
-   * single compilation unit within the given library, once that AST is up to
-   * date.
-   *
-   * If the resolved AST can't be computed for some reason, the future will be
-   * completed with an error.  One possible error is AnalysisNotScheduledError,
-   * which means that the resolved AST can't be computed because the given
-   * source file is not scheduled to be analyzed within the context of the
-   * given library.
-   */
+  /// Return a future which will be completed with the fully resolved AST for a
+  /// single compilation unit within the given library, once that AST is up to
+  /// date.
+  ///
+  /// If the resolved AST can't be computed for some reason, the future will be
+  /// completed with an error.  One possible error is AnalysisNotScheduledError,
+  /// which means that the resolved AST can't be computed because the given
+  /// source file is not scheduled to be analyzed within the context of the
+  /// given library.
   CancelableFuture<CompilationUnit> computeResolvedCompilationUnitAsync(
       Source source, Source librarySource);
 
-  /**
-   * Perform work until the given [result] has been computed for the given
-   * [target]. Return the computed value.
-   */
+  /// Perform work until the given [result] has been computed for the given
+  /// [target]. Return the computed value.
   V computeResult<V>(AnalysisTarget target, ResultDescriptor<V> result);
 
-  /**
-   * Notifies the context that the client is going to stop using this context.
-   */
+  /// Notifies the context that the client is going to stop using this context.
   void dispose();
 
-  /**
-   * Return `true` if the given [source] exists.
-   *
-   * This method should be used rather than the method [Source.exists] because
-   * contexts can have local overrides of the content of a source that the
-   * source is not aware of and a source with local content is considered to
-   * exist even if there is no file on disk.
-   */
+  /// Return `true` if the given [source] exists.
+  ///
+  /// This method should be used rather than the method [Source.exists] because
+  /// contexts can have local overrides of the content of a source that the
+  /// source is not aware of and a source with local content is considered to
+  /// exist even if there is no file on disk.
   bool exists(Source source);
 
-  /**
-   * Return the element model corresponding to the compilation unit defined by
-   * the given [unitSource] in the library defined by the given [librarySource],
-   * or `null` if the element model does not currently exist or if the library
-   * cannot be analyzed for some reason.
-   */
+  /// Return the element model corresponding to the compilation unit defined by
+  /// the given [unitSource] in the library defined by the given [librarySource],
+  /// or `null` if the element model does not currently exist or if the library
+  /// cannot be analyzed for some reason.
   CompilationUnitElement getCompilationUnitElement(
       Source unitSource, Source librarySource);
 
-  /**
-   * Return configuration data associated with the given key or the [key]'s
-   * default value if no state has been associated.
-   *
-   * See [setConfigurationData].
-   */
+  /// Return configuration data associated with the given key or the [key]'s
+  /// default value if no state has been associated.
+  ///
+  /// See [setConfigurationData].
   @deprecated
   V getConfigurationData<V>(ResultDescriptor<V> key);
 
-  /**
-   * Return the contents and timestamp of the given [source].
-   *
-   * This method should be used rather than the method [Source.getContents]
-   * because contexts can have local overrides of the content of a source that
-   * the source is not aware of.
-   */
+  /// Return the contents and timestamp of the given [source].
+  ///
+  /// This method should be used rather than the method [Source.getContents]
+  /// because contexts can have local overrides of the content of a source that
+  /// the source is not aware of.
   TimestampedData<String> getContents(Source source);
 
-  /**
-   * Return the element referenced by the given [location], or `null` if the
-   * element is not immediately available or if there is no element with the
-   * given location. The latter condition can occur, for example, if the
-   * location describes an element from a different context or if the element
-   * has been removed from this context as a result of some change since it was
-   * originally obtained.
-   */
+  /// Return the element referenced by the given [location], or `null` if the
+  /// element is not immediately available or if there is no element with the
+  /// given location. The latter condition can occur, for example, if the
+  /// location describes an element from a different context or if the element
+  /// has been removed from this context as a result of some change since it was
+  /// originally obtained.
   Element getElement(ElementLocation location);
 
-  /**
-   * Return an analysis error info containing the list of all of the errors and
-   * the line info associated with the given [source]. The list of errors will
-   * be empty if the source is not known to this context or if there are no
-   * errors in the source. The errors contained in the list can be incomplete.
-   *
-   * See [computeErrors].
-   */
+  /// Return an analysis error info containing the list of all of the errors and
+  /// the line info associated with the given [source]. The list of errors will
+  /// be empty if the source is not known to this context or if there are no
+  /// errors in the source. The errors contained in the list can be incomplete.
+  ///
+  /// See [computeErrors].
   AnalysisErrorInfo getErrors(Source source);
 
-  /**
-   * Return the sources for the HTML files that reference the compilation unit
-   * with the given [source]. If the source does not represent a Dart source or
-   * is not known to this context, the returned list will be empty. The contents
-   * of the list can be incomplete.
-   */
+  /// Return the sources for the HTML files that reference the compilation unit
+  /// with the given [source]. If the source does not represent a Dart source or
+  /// is not known to this context, the returned list will be empty. The contents
+  /// of the list can be incomplete.
   List<Source> getHtmlFilesReferencing(Source source);
 
-  /**
-   * Return the kind of the given [source], or `null` if the kind is not known
-   * to this context.
-   *
-   * See [computeKindOf].
-   */
+  /// Return the kind of the given [source], or `null` if the kind is not known
+  /// to this context.
+  ///
+  /// See [computeKindOf].
   SourceKind getKindOf(Source source);
 
-  /**
-   * Return the sources for the defining compilation units of any libraries of
-   * which the given [source] is a part. The list will normally contain a single
-   * library because most Dart sources are only included in a single library,
-   * but it is possible to have a part that is contained in multiple identically
-   * named libraries. If the source represents the defining compilation unit of
-   * a library, then the returned list will contain the given source as its only
-   * element. If the source does not represent a Dart source or is not known to
-   * this context, the returned list will be empty. The contents of the list can
-   * be incomplete.
-   */
+  /// Return the sources for the defining compilation units of any libraries of
+  /// which the given [source] is a part. The list will normally contain a single
+  /// library because most Dart sources are only included in a single library,
+  /// but it is possible to have a part that is contained in multiple identically
+  /// named libraries. If the source represents the defining compilation unit of
+  /// a library, then the returned list will contain the given source as its only
+  /// element. If the source does not represent a Dart source or is not known to
+  /// this context, the returned list will be empty. The contents of the list can
+  /// be incomplete.
   List<Source> getLibrariesContaining(Source source);
 
-  /**
-   * Return the sources for the defining compilation units of any libraries that
-   * depend on the library defined by the given [librarySource]. One library
-   * depends on another if it either imports or exports that library.
-   */
+  /// Return the sources for the defining compilation units of any libraries that
+  /// depend on the library defined by the given [librarySource]. One library
+  /// depends on another if it either imports or exports that library.
   List<Source> getLibrariesDependingOn(Source librarySource);
 
-  /**
-   * Return the sources for the defining compilation units of any libraries that
-   * are referenced from the HTML file defined by the given [htmlSource].
-   */
+  /// Return the sources for the defining compilation units of any libraries that
+  /// are referenced from the HTML file defined by the given [htmlSource].
   List<Source> getLibrariesReferencedFromHtml(Source htmlSource);
 
-  /**
-   * Return the element model corresponding to the library defined by the given
-   * [source], or `null` if the element model does not currently exist or if the
-   * library cannot be analyzed for some reason.
-   */
+  /// Return the element model corresponding to the library defined by the given
+  /// [source], or `null` if the element model does not currently exist or if the
+  /// library cannot be analyzed for some reason.
   LibraryElement getLibraryElement(Source source);
 
-  /**
-   * Return the line information for the given [source], or `null` if the line
-   * information is not known. The line information is used to map offsets from
-   * the beginning of the source to line and column pairs.
-   *
-   * See [computeLineInfo].
-   */
+  /// Return the line information for the given [source], or `null` if the line
+  /// information is not known. The line information is used to map offsets from
+  /// the beginning of the source to line and column pairs.
+  ///
+  /// See [computeLineInfo].
   LineInfo getLineInfo(Source source);
 
-  /**
-   * Return the modification stamp for the [source], or a negative value if the
-   * source does not exist. A modification stamp is a non-negative integer with
-   * the property that if the contents of the source have not been modified
-   * since the last time the modification stamp was accessed then the same value
-   * will be returned, but if the contents of the source have been modified one
-   * or more times (even if the net change is zero) the stamps will be different.
-   *
-   * This method should be used rather than the method
-   * [Source.getModificationStamp] because contexts can have local overrides of
-   * the content of a source that the source is not aware of.
-   */
+  /// Return the modification stamp for the [source], or a negative value if the
+  /// source does not exist. A modification stamp is a non-negative integer with
+  /// the property that if the contents of the source have not been modified
+  /// since the last time the modification stamp was accessed then the same value
+  /// will be returned, but if the contents of the source have been modified one
+  /// or more times (even if the net change is zero) the stamps will be different.
+  ///
+  /// This method should be used rather than the method
+  /// [Source.getModificationStamp] because contexts can have local overrides of
+  /// the content of a source that the source is not aware of.
   int getModificationStamp(Source source);
 
-  /**
-   * Return a fully resolved AST for the compilation unit defined by the given
-   * [unitSource] within the given [library], or `null` if the resolved AST is
-   * not already computed.
-   *
-   * See [resolveCompilationUnit].
-   */
+  /// Return a fully resolved AST for the compilation unit defined by the given
+  /// [unitSource] within the given [library], or `null` if the resolved AST is
+  /// not already computed.
+  ///
+  /// See [resolveCompilationUnit].
   CompilationUnit getResolvedCompilationUnit(
       Source unitSource, LibraryElement library);
 
-  /**
-   * Return a fully resolved AST for the compilation unit defined by the given
-   * [unitSource] within the library defined by the given [librarySource], or
-   * `null` if the resolved AST is not already computed.
-   *
-   * See [resolveCompilationUnit2].
-   */
+  /// Return a fully resolved AST for the compilation unit defined by the given
+  /// [unitSource] within the library defined by the given [librarySource], or
+  /// `null` if the resolved AST is not already computed.
+  ///
+  /// See [resolveCompilationUnit2].
   CompilationUnit getResolvedCompilationUnit2(
       Source unitSource, Source librarySource);
 
-  /**
-   * Return the value of the given [result] for the given [target].
-   *
-   * If the corresponding [target] does not exist, or the [result] is not
-   * computed yet, then the default value is returned.
-   */
+  /// Return the value of the given [result] for the given [target].
+  ///
+  /// If the corresponding [target] does not exist, or the [result] is not
+  /// computed yet, then the default value is returned.
   V getResult<V>(AnalysisTarget target, ResultDescriptor<V> result);
 
-  /**
-   * Return a list of the sources being analyzed in this context whose full path
-   * is equal to the given [path].
-   */
+  /// Return a list of the sources being analyzed in this context whose full path
+  /// is equal to the given [path].
   List<Source> getSourcesWithFullName(String path);
 
-  /**
-   * Invalidates hints in the given [librarySource] and included parts.
-   */
+  /// Invalidates hints in the given [librarySource] and included parts.
   void invalidateLibraryHints(Source librarySource);
 
-  /**
-   * Return `true` if the given [librarySource] is known to be the defining
-   * compilation unit of a library that can be run on a client (references
-   * 'dart:html', either directly or indirectly).
-   *
-   * <b>Note:</b> In addition to the expected case of returning `false` if the
-   * source is known to be a library that cannot be run on a client, this method
-   * will also return `false` if the source is not known to be a library or if
-   * we do not know whether it can be run on a client.
-   */
+  /// Return `true` if the given [librarySource] is known to be the defining
+  /// compilation unit of a library that can be run on a client (references
+  /// 'dart:html', either directly or indirectly).
+  ///
+  /// <b>Note:</b> In addition to the expected case of returning `false` if the
+  /// source is known to be a library that cannot be run on a client, this method
+  /// will also return `false` if the source is not known to be a library or if
+  /// we do not know whether it can be run on a client.
   bool isClientLibrary(Source librarySource);
 
-  /**
-   * Return `true` if the given [librarySource] is known to be the defining
-   * compilation unit of a library that can be run on the server (does not
-   * reference 'dart:html', either directly or indirectly).
-   *
-   * <b>Note:</b> In addition to the expected case of returning `false` if the
-   * source is known to be a library that cannot be run on the server, this
-   * method will also return `false` if the source is not known to be a library
-   * or if we do not know whether it can be run on the server.
-   */
+  /// Return `true` if the given [librarySource] is known to be the defining
+  /// compilation unit of a library that can be run on the server (does not
+  /// reference 'dart:html', either directly or indirectly).
+  ///
+  /// <b>Note:</b> In addition to the expected case of returning `false` if the
+  /// source is known to be a library that cannot be run on the server, this
+  /// method will also return `false` if the source is not known to be a library
+  /// or if we do not know whether it can be run on the server.
   bool isServerLibrary(Source librarySource);
 
-  /**
-   * Return the stream that is notified when a result with the given
-   * [descriptor] is changed, e.g. computed or invalidated.
-   */
+  /// Return the stream that is notified when a result with the given
+  /// [descriptor] is changed, e.g. computed or invalidated.
   Stream<ResultChangedEvent> onResultChanged(ResultDescriptor descriptor);
 
-  /**
-   * Return the stream that is notified when a new value for the given
-   * [descriptor] is computed.
-   */
+  /// Return the stream that is notified when a new value for the given
+  /// [descriptor] is computed.
   @deprecated
   Stream<ComputedResult> onResultComputed(ResultDescriptor descriptor);
 
-  /**
-   * Parse the content of the given [source] to produce an AST structure. The
-   * resulting AST structure may or may not be resolved, and may have a slightly
-   * different structure depending upon whether it is resolved.
-   *
-   * Throws an [AnalysisException] if the analysis could not be performed
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   */
+  /// Parse the content of the given [source] to produce an AST structure. The
+  /// resulting AST structure may or may not be resolved, and may have a slightly
+  /// different structure depending upon whether it is resolved.
+  ///
+  /// Throws an [AnalysisException] if the analysis could not be performed
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
   CompilationUnit parseCompilationUnit(Source source);
 
-  /**
-   * Perform the next unit of work required to keep the analysis results
-   * up-to-date and return information about the consequent changes to the
-   * analysis results. This method can be long running.
-   *
-   * The implementation that uses the task model notifies subscribers of
-   * [onResultChanged] about computed results.
-   *
-   * The following results are computed for Dart sources.
-   *
-   * 1. For explicit and implicit sources:
-   *    [PARSED_UNIT]
-   *    [RESOLVED_UNIT]
-   *
-   * 2. For explicit sources:
-   *    [DART_ERRORS].
-   *
-   * 3. For explicit and implicit library sources:
-   *    [LIBRARY_ELEMENT].
-   */
+  /// Perform the next unit of work required to keep the analysis results
+  /// up-to-date and return information about the consequent changes to the
+  /// analysis results. This method can be long running.
+  ///
+  /// The implementation that uses the task model notifies subscribers of
+  /// [onResultChanged] about computed results.
+  ///
+  /// The following results are computed for Dart sources.
+  ///
+  /// 1. For explicit and implicit sources:
+  ///    [PARSED_UNIT]
+  ///    [RESOLVED_UNIT]
+  ///
+  /// 2. For explicit sources:
+  ///    [DART_ERRORS].
+  ///
+  /// 3. For explicit and implicit library sources:
+  ///    [LIBRARY_ELEMENT].
   AnalysisResult performAnalysisTask();
 
-  /**
-   * Remove the given [listener] from the list of objects that are to be
-   * notified when various analysis results are produced in this context.
-   */
+  /// Remove the given [listener] from the list of objects that are to be
+  /// notified when various analysis results are produced in this context.
   void removeListener(AnalysisListener listener);
 
-  /**
-   * Return a fully resolved AST for the compilation unit defined by the given
-   * [unitSource] within the given [library].
-   *
-   * Throws an [AnalysisException] if the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getResolvedCompilationUnit].
-   */
+  /// Return a fully resolved AST for the compilation unit defined by the given
+  /// [unitSource] within the given [library].
+  ///
+  /// Throws an [AnalysisException] if the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getResolvedCompilationUnit].
   CompilationUnit resolveCompilationUnit(
       Source unitSource, LibraryElement library);
 
-  /**
-   * Return a fully resolved AST for the compilation unit defined by the given
-   * [unitSource] within the library defined by the given [librarySource].
-   *
-   * Throws an [AnalysisException] if the analysis could not be performed.
-   *
-   * <b>Note:</b> This method cannot be used in an async environment.
-   *
-   * See [getResolvedCompilationUnit2].
-   */
+  /// Return a fully resolved AST for the compilation unit defined by the given
+  /// [unitSource] within the library defined by the given [librarySource].
+  ///
+  /// Throws an [AnalysisException] if the analysis could not be performed.
+  ///
+  /// <b>Note:</b> This method cannot be used in an async environment.
+  ///
+  /// See [getResolvedCompilationUnit2].
   CompilationUnit resolveCompilationUnit2(
       Source unitSource, Source librarySource);
 
-  /**
-   * Set the contents of the given [source] to the given [contents] and mark the
-   * source as having changed. The additional [offset] and [length] information
-   * is used by the context to determine what reanalysis is necessary.
-   */
+  /// Set the contents of the given [source] to the given [contents] and mark the
+  /// source as having changed. The additional [offset] and [length] information
+  /// is used by the context to determine what reanalysis is necessary.
   void setChangedContents(
       Source source, String contents, int offset, int oldLength, int newLength);
 
-  /**
-   * Associate this configuration [data] object with the given descriptor [key].
-   *
-   * See [getConfigurationData].
-   */
+  /// Associate this configuration [data] object with the given descriptor [key].
+  ///
+  /// See [getConfigurationData].
   @deprecated
   void setConfigurationData(ResultDescriptor key, Object data);
 
-  /**
-   * Set the contents of the given [source] to the given [contents] and mark the
-   * source as having changed. This has the effect of overriding the default
-   * contents of the source. If the contents are `null` the override is removed
-   * so that the default contents will be returned.
-   */
+  /// Set the contents of the given [source] to the given [contents] and mark the
+  /// source as having changed. This has the effect of overriding the default
+  /// contents of the source. If the contents are `null` the override is removed
+  /// so that the default contents will be returned.
   void setContents(Source source, String contents);
 }
 
-/**
- * A representation of changes to the types of analysis that should be
- * performed.
- */
+/// A representation of changes to the types of analysis that should be
+/// performed.
 class AnalysisDelta {
-  /**
-   * A mapping from source to what type of analysis should be performed on that
-   * source.
-   */
+  /// A mapping from source to what type of analysis should be performed on that
+  /// source.
   Map<Source, AnalysisLevel> _analysisMap =
       new HashMap<Source, AnalysisLevel>();
 
-  /**
-   * Return a collection of the sources that have been added. This is equivalent
-   * to calling [getAnalysisLevels] and collecting all sources that do not have
-   * an analysis level of [AnalysisLevel.NONE].
-   */
+  /// Return a collection of the sources that have been added. This is equivalent
+  /// to calling [getAnalysisLevels] and collecting all sources that do not have
+  /// an analysis level of [AnalysisLevel.NONE].
   List<Source> get addedSources {
     List<Source> result = new List<Source>();
     _analysisMap.forEach((Source source, AnalysisLevel level) {
@@ -648,15 +515,11 @@
     return result;
   }
 
-  /**
-   * Return a mapping of sources to the level of analysis that should be
-   * performed.
-   */
+  /// Return a mapping of sources to the level of analysis that should be
+  /// performed.
   Map<Source, AnalysisLevel> get analysisLevels => _analysisMap;
 
-  /**
-   * Record that the given [source] should be analyzed at the given [level].
-   */
+  /// Record that the given [source] should be analyzed at the given [level].
   void setAnalysisLevel(Source source, AnalysisLevel level) {
     _analysisMap[source] = level;
   }
@@ -671,10 +534,8 @@
     return buffer.toString();
   }
 
-  /**
-   * Append to the given [buffer] all sources with the given analysis [level],
-   * prefixed with a label and a separator if [needsSeparator] is `true`.
-   */
+  /// Append to the given [buffer] all sources with the given analysis [level],
+  /// prefixed with a label and a separator if [needsSeparator] is `true`.
   bool _appendSources(
       StringBuffer buffer, bool needsSeparator, AnalysisLevel level) {
     bool first = true;
@@ -697,85 +558,55 @@
   }
 }
 
-/**
- * The entry point for the functionality provided by the analysis engine. There
- * is a single instance of this class.
- */
+/// The entry point for the functionality provided by the analysis engine. There
+/// is a single instance of this class.
 class AnalysisEngine {
-  /**
-   * The suffix used for Dart source files.
-   */
+  /// The suffix used for Dart source files.
   static const String SUFFIX_DART = "dart";
 
-  /**
-   * The short suffix used for HTML files.
-   */
+  /// The short suffix used for HTML files.
   static const String SUFFIX_HTM = "htm";
 
-  /**
-   * The long suffix used for HTML files.
-   */
+  /// The long suffix used for HTML files.
   static const String SUFFIX_HTML = "html";
 
-  /**
-   * The deprecated file name used for analysis options files.
-   */
+  /// The deprecated file name used for analysis options files.
   static const String ANALYSIS_OPTIONS_FILE = '.analysis_options';
 
-  /**
-   * The file name used for analysis options files.
-   */
+  /// The file name used for analysis options files.
   static const String ANALYSIS_OPTIONS_YAML_FILE = 'analysis_options.yaml';
 
-  /**
-   * The file name used for pubspec files.
-   */
+  /// The file name used for pubspec files.
   static const String PUBSPEC_YAML_FILE = 'pubspec.yaml';
 
-  /**
-   * The file name used for Android manifest files.
-   */
+  /// The file name used for Android manifest files.
   static const String ANDROID_MANIFEST_FILE = 'AndroidManifest.xml';
 
-  /**
-   * The unique instance of this class.
-   */
+  /// The unique instance of this class.
   static final AnalysisEngine instance = new AnalysisEngine._();
 
-  /**
-   * The logger that should receive information about errors within the analysis
-   * engine.
-   */
+  /// The logger that should receive information about errors within the analysis
+  /// engine.
   Logger _logger = Logger.NULL;
 
-  /**
-   * The instrumentation service that is to be used by this analysis engine.
-   */
+  /// The instrumentation service that is to be used by this analysis engine.
   InstrumentationService _instrumentationService =
       InstrumentationService.NULL_SERVICE;
 
-  /**
-   * The partition manager being used to manage the shared partitions.
-   */
+  /// The partition manager being used to manage the shared partitions.
   final PartitionManager partitionManager = new PartitionManager();
 
-  /**
-   * The task manager used to manage the tasks used to analyze code.
-   */
+  /// The task manager used to manage the tasks used to analyze code.
   TaskManager _taskManager;
 
   AnalysisEngine._();
 
-  /**
-   * Return the instrumentation service that is to be used by this analysis
-   * engine.
-   */
+  /// Return the instrumentation service that is to be used by this analysis
+  /// engine.
   InstrumentationService get instrumentationService => _instrumentationService;
 
-  /**
-   * Set the instrumentation service that is to be used by this analysis engine
-   * to the given [service].
-   */
+  /// Set the instrumentation service that is to be used by this analysis engine
+  /// to the given [service].
   void set instrumentationService(InstrumentationService service) {
     if (service == null) {
       _instrumentationService = InstrumentationService.NULL_SERVICE;
@@ -784,23 +615,17 @@
     }
   }
 
-  /**
-   * Return the logger that should receive information about errors within the
-   * analysis engine.
-   */
+  /// Return the logger that should receive information about errors within the
+  /// analysis engine.
   Logger get logger => _logger;
 
-  /**
-   * Set the logger that should receive information about errors within the
-   * analysis engine to the given [logger].
-   */
+  /// Set the logger that should receive information about errors within the
+  /// analysis engine to the given [logger].
   void set logger(Logger logger) {
     this._logger = logger ?? Logger.NULL;
   }
 
-  /**
-   * Return the task manager used to manage the tasks used to analyze code.
-   */
+  /// Return the task manager used to manage the tasks used to analyze code.
   TaskManager get taskManager {
     if (_taskManager == null) {
       _taskManager = new TaskManager();
@@ -808,34 +633,26 @@
     return _taskManager;
   }
 
-  /**
-   * Clear any caches holding on to analysis results so that a full re-analysis
-   * will be performed the next time an analysis context is created.
-   */
+  /// Clear any caches holding on to analysis results so that a full re-analysis
+  /// will be performed the next time an analysis context is created.
   void clearCaches() {
     partitionManager.clearCache();
     // See https://github.com/dart-lang/sdk/issues/30314.
     StringToken.canonicalizer.clear();
   }
 
-  /**
-   * Create and return a new context in which analysis can be performed.
-   */
+  /// Create and return a new context in which analysis can be performed.
   AnalysisContext createAnalysisContext() {
     return new AnalysisContextImpl();
   }
 
-  /**
-   * A utility method that clients can use to process all of the required
-   * plugins. This method can only be used by clients that do not need to
-   * process any other plugins.
-   */
+  /// A utility method that clients can use to process all of the required
+  /// plugins. This method can only be used by clients that do not need to
+  /// process any other plugins.
   @deprecated
   void processRequiredPlugins() {}
 
-  /**
-   * Return `true` if the given [fileName] is an analysis options file.
-   */
+  /// Return `true` if the given [fileName] is an analysis options file.
   static bool isAnalysisOptionsFileName(String fileName,
       [pathos.Context context]) {
     if (fileName == null) {
@@ -846,10 +663,8 @@
         basename == ANALYSIS_OPTIONS_YAML_FILE;
   }
 
-  /**
-   * Return `true` if the given [fileName] is assumed to contain Dart source
-   * code.
-   */
+  /// Return `true` if the given [fileName] is assumed to contain Dart source
+  /// code.
   static bool isDartFileName(String fileName) {
     if (fileName == null) {
       return false;
@@ -858,9 +673,7 @@
     return extension == SUFFIX_DART;
   }
 
-  /**
-   * Return `true` if the given [fileName] is AndroidManifest.xml
-   */
+  /// Return `true` if the given [fileName] is AndroidManifest.xml
   static bool isManifestFileName(String fileName) {
     if (fileName == null) {
       return false;
@@ -869,83 +682,55 @@
   }
 }
 
-/**
- * The analysis errors and line information for the errors.
- */
+/// The analysis errors and line information for the errors.
 abstract class AnalysisErrorInfo {
-  /**
-   * Return the errors that as a result of the analysis, or `null` if there were
-   * no errors.
-   */
+  /// Return the errors that as a result of the analysis, or `null` if there were
+  /// no errors.
   List<AnalysisError> get errors;
 
-  /**
-   * Return the line information associated with the errors, or `null` if there
-   * were no errors.
-   */
+  /// Return the line information associated with the errors, or `null` if there
+  /// were no errors.
   LineInfo get lineInfo;
 }
 
-/**
- * The analysis errors and line info associated with a source.
- */
+/// The analysis errors and line info associated with a source.
 class AnalysisErrorInfoImpl implements AnalysisErrorInfo {
-  /**
-   * The analysis errors associated with a source, or `null` if there are no
-   * errors.
-   */
+  /// The analysis errors associated with a source, or `null` if there are no
+  /// errors.
   @override
   final List<AnalysisError> errors;
 
-  /**
-   * The line information associated with the errors, or `null` if there are no
-   * errors.
-   */
+  /// The line information associated with the errors, or `null` if there are no
+  /// errors.
   final LineInfo lineInfo;
 
-  /**
-   * Initialize an newly created error info with the given [errors] and
-   * [lineInfo].
-   */
+  /// Initialize an newly created error info with the given [errors] and
+  /// [lineInfo].
   AnalysisErrorInfoImpl(this.errors, this.lineInfo);
 }
 
-/**
- * The levels at which a source can be analyzed.
- */
+/// The levels at which a source can be analyzed.
 class AnalysisLevel implements Comparable<AnalysisLevel> {
-  /**
-   * Indicates a source should be fully analyzed.
-   */
+  /// Indicates a source should be fully analyzed.
   static const AnalysisLevel ALL = const AnalysisLevel('ALL', 0);
 
-  /**
-   * Indicates a source should be resolved and that errors, warnings and hints
-   * are needed.
-   */
+  /// Indicates a source should be resolved and that errors, warnings and hints
+  /// are needed.
   static const AnalysisLevel ERRORS = const AnalysisLevel('ERRORS', 1);
 
-  /**
-   * Indicates a source should be resolved, but that errors, warnings and hints
-   * are not needed.
-   */
+  /// Indicates a source should be resolved, but that errors, warnings and hints
+  /// are not needed.
   static const AnalysisLevel RESOLVED = const AnalysisLevel('RESOLVED', 2);
 
-  /**
-   * Indicates a source is not of interest to the client.
-   */
+  /// Indicates a source is not of interest to the client.
   static const AnalysisLevel NONE = const AnalysisLevel('NONE', 3);
 
   static const List<AnalysisLevel> values = const [ALL, ERRORS, RESOLVED, NONE];
 
-  /**
-   * The name of this analysis level.
-   */
+  /// The name of this analysis level.
   final String name;
 
-  /**
-   * The ordinal value of the analysis level.
-   */
+  /// The ordinal value of the analysis level.
   final int ordinal;
 
   const AnalysisLevel(this.name, this.ordinal);
@@ -960,294 +745,204 @@
   String toString() => name;
 }
 
-/**
- * An object that is listening for results being produced by an analysis
- * context.
- */
+/// An object that is listening for results being produced by an analysis
+/// context.
 abstract class AnalysisListener {
-  /**
-   * Reports that a task, described by the given [taskDescription] is about to
-   * be performed by the given [context].
-   */
+  /// Reports that a task, described by the given [taskDescription] is about to
+  /// be performed by the given [context].
   void aboutToPerformTask(AnalysisContext context, String taskDescription);
 
-  /**
-   * Reports that the [errors] associated with the given [source] in the given
-   * [context] has been updated to the given errors. The [lineInfo] is the line
-   * information associated with the source.
-   */
+  /// Reports that the [errors] associated with the given [source] in the given
+  /// [context] has been updated to the given errors. The [lineInfo] is the line
+  /// information associated with the source.
   void computedErrors(AnalysisContext context, Source source,
       List<AnalysisError> errors, LineInfo lineInfo);
 
-  /**
-   * Reports that the given [source] is no longer included in the set of sources
-   * that are being analyzed by the given analysis [context].
-   */
+  /// Reports that the given [source] is no longer included in the set of sources
+  /// that are being analyzed by the given analysis [context].
   void excludedSource(AnalysisContext context, Source source);
 
-  /**
-   * Reports that the given [source] is now included in the set of sources that
-   * are being analyzed by the given analysis [context].
-   */
+  /// Reports that the given [source] is now included in the set of sources that
+  /// are being analyzed by the given analysis [context].
   void includedSource(AnalysisContext context, Source source);
 
-  /**
-   * Reports that the given Dart [source] was parsed in the given [context],
-   * producing the given [unit].
-   */
+  /// Reports that the given Dart [source] was parsed in the given [context],
+  /// producing the given [unit].
   void parsedDart(AnalysisContext context, Source source, CompilationUnit unit);
 
-  /**
-   * Reports that the given Dart [source] was resolved in the given [context].
-   */
+  /// Reports that the given Dart [source] was resolved in the given [context].
   void resolvedDart(
       AnalysisContext context, Source source, CompilationUnit unit);
 }
 
-/**
- * Futures returned by [AnalysisContext] for pending analysis results will
- * complete with this error if it is determined that analysis results will
- * never become available (e.g. because the requested source is not subject to
- * analysis, or because the requested source is a part file which is not a part
- * of any known library).
- */
+/// Futures returned by [AnalysisContext] for pending analysis results will
+/// complete with this error if it is determined that analysis results will
+/// never become available (e.g. because the requested source is not subject to
+/// analysis, or because the requested source is a part file which is not a part
+/// of any known library).
 class AnalysisNotScheduledError implements Exception {}
 
-/**
- * A set of analysis options used to control the behavior of an analysis
- * context.
- */
+/// A set of analysis options used to control the behavior of an analysis
+/// context.
 abstract class AnalysisOptions {
-  /**
-   * The length of the list returned by [signature].
-   */
+  /// The length of the list returned by [signature].
   static const int signatureLength = 4;
 
-  /**
-   * Function that returns `true` if analysis is to parse and analyze function
-   * bodies for a given source.
-   */
+  /// Function that returns `true` if analysis is to parse and analyze function
+  /// bodies for a given source.
   AnalyzeFunctionBodiesPredicate get analyzeFunctionBodiesPredicate;
 
-  /**
-   * Return the maximum number of sources for which AST structures should be
-   * kept in the cache.
-   *
-   * DEPRECATED: This setting no longer has any effect.
-   */
+  /// Return the maximum number of sources for which AST structures should be
+  /// kept in the cache.
+  ///
+  /// DEPRECATED: This setting no longer has any effect.
   @deprecated
   int get cacheSize;
 
-  /*
-   * A flag indicating whether to run checks on AndroidManifest.xml file to
-   * see if it is complaint with Chrome OS.
-   */
+  /// A flag indicating whether to run checks on AndroidManifest.xml file to
+  /// see if it is complaint with Chrome OS.
   bool get chromeOsManifestChecks;
 
-  /**
-   * Return `true` if analysis is to generate dart2js related hint results.
-   */
+  /// Return `true` if analysis is to generate dart2js related hint results.
   bool get dart2jsHint;
 
-  /**
-   * Return `true` if cache flushing should be disabled.  Setting this option to
-   * `true` can improve analysis speed at the expense of memory usage.  It may
-   * also be useful for working around bugs.
-   *
-   * This option should not be used when the analyzer is part of a long running
-   * process (such as the analysis server) because it has the potential to
-   * prevent memory from being reclaimed.
-   */
+  /// Return `true` if cache flushing should be disabled.  Setting this option to
+  /// `true` can improve analysis speed at the expense of memory usage.  It may
+  /// also be useful for working around bugs.
+  ///
+  /// This option should not be used when the analyzer is part of a long running
+  /// process (such as the analysis server) because it has the potential to
+  /// prevent memory from being reclaimed.
   bool get disableCacheFlushing;
 
-  /**
-   * Return `true` if the parser is to parse asserts in the initializer list of
-   * a constructor.
-   */
+  /// Return `true` if the parser is to parse asserts in the initializer list of
+  /// a constructor.
   @deprecated
   bool get enableAssertInitializer;
 
-  /**
-   * Return `true` to enable custom assert messages (DEP 37).
-   */
+  /// Return `true` to enable custom assert messages (DEP 37).
   @deprecated
   bool get enableAssertMessage;
 
-  /**
-   * Return `true` to if analysis is to enable async support.
-   */
+  /// Return `true` to if analysis is to enable async support.
   @deprecated
   bool get enableAsync;
 
-  /**
-   * Return `true` to enable interface libraries (DEP 40).
-   */
+  /// Return `true` to enable interface libraries (DEP 40).
   @deprecated
   bool get enableConditionalDirectives;
 
-  /**
-   * Return a list containing the names of the experiments that are enabled in
-   * the context associated with these options.
-   *
-   * The process around these experiments is described in this
-   * [doc](https://github.com/dart-lang/sdk/blob/master/docs/process/experimental-flags.md).
-   */
+  /// Return a list containing the names of the experiments that are enabled in
+  /// the context associated with these options.
+  ///
+  /// The process around these experiments is described in this
+  /// [doc](https://github.com/dart-lang/sdk/blob/master/docs/process/experimental-flags.md).
   List<String> get enabledExperiments;
 
-  /**
-   * Return a list of the names of the packages for which, if they define a
-   * plugin, the plugin should be enabled.
-   */
+  /// Return a list of the names of the packages for which, if they define a
+  /// plugin, the plugin should be enabled.
   List<String> get enabledPluginNames;
 
-  /**
-   * Return `true` to enable generic methods (DEP 22).
-   */
+  /// Return `true` to enable generic methods (DEP 22).
   @deprecated
   bool get enableGenericMethods => null;
 
-  /**
-   * Return `true` if access to field formal parameters should be allowed in a
-   * constructor's initializer list.
-   */
+  /// Return `true` if access to field formal parameters should be allowed in a
+  /// constructor's initializer list.
   @deprecated
   bool get enableInitializingFormalAccess;
 
-  /**
-   * Return `true` to enable the lazy compound assignment operators '&&=' and
-   * '||='.
-   */
+  /// Return `true` to enable the lazy compound assignment operators '&&=' and
+  /// '||='.
   bool get enableLazyAssignmentOperators;
 
-  /**
-   * Return `true` if mixins are allowed to inherit from types other than
-   * Object, and are allowed to reference `super`.
-   */
+  /// Return `true` if mixins are allowed to inherit from types other than
+  /// Object, and are allowed to reference `super`.
   @deprecated
   bool get enableSuperMixins;
 
-  /**
-   * Return `true` if timing data should be gathered during execution.
-   */
+  /// Return `true` if timing data should be gathered during execution.
   bool get enableTiming;
 
-  /**
-   * Return `true` to enable the use of URIs in part-of directives.
-   */
+  /// Return `true` to enable the use of URIs in part-of directives.
   @deprecated
   bool get enableUriInPartOf;
 
-  /**
-   * Return a list of error processors that are to be used when reporting
-   * errors in some analysis context.
-   */
+  /// Return a list of error processors that are to be used when reporting
+  /// errors in some analysis context.
   List<ErrorProcessor> get errorProcessors;
 
-  /**
-   * Return a list of exclude patterns used to exclude some sources from
-   * analysis.
-   */
+  /// Return a list of exclude patterns used to exclude some sources from
+  /// analysis.
   List<String> get excludePatterns;
 
-  /**
-   * Return `true` if errors, warnings and hints should be generated for sources
-   * that are implicitly being analyzed. The default value is `true`.
-   */
+  /// Return `true` if errors, warnings and hints should be generated for sources
+  /// that are implicitly being analyzed. The default value is `true`.
   bool get generateImplicitErrors;
 
-  /**
-   * Return `true` if errors, warnings and hints should be generated for sources
-   * in the SDK. The default value is `false`.
-   */
+  /// Return `true` if errors, warnings and hints should be generated for sources
+  /// in the SDK. The default value is `false`.
   bool get generateSdkErrors;
 
-  /**
-   * Return `true` if analysis is to generate hint results (e.g. type inference
-   * based information and pub best practices).
-   */
+  /// Return `true` if analysis is to generate hint results (e.g. type inference
+  /// based information and pub best practices).
   bool get hint;
 
-  /**
-   * Return `true` if analysis is to generate lint warnings.
-   */
+  /// Return `true` if analysis is to generate lint warnings.
   bool get lint;
 
-  /**
-   * Return a list of the lint rules that are to be run in an analysis context
-   * if [lint] returns `true`.
-   */
+  /// Return a list of the lint rules that are to be run in an analysis context
+  /// if [lint] returns `true`.
   List<Linter> get lintRules;
 
-  /**
-   * A mapping from Dart SDK library name (e.g. "dart:core") to a list of paths
-   * to patch files that should be applied to the library.
-   */
+  /// A mapping from Dart SDK library name (e.g. "dart:core") to a list of paths
+  /// to patch files that should be applied to the library.
   Map<String, List<String>> get patchPaths;
 
-  /**
-   * Return `true` if analysis is to parse comments.
-   */
+  /// Return `true` if analysis is to parse comments.
   bool get preserveComments;
 
-  /**
-   * Return `true` if analyzer should enable the use of Dart 2.0 features.
-   *
-   * This getter is deprecated, and is hard-coded to always return true.
-   */
+  /// Return `true` if analyzer should enable the use of Dart 2.0 features.
+  ///
+  /// This getter is deprecated, and is hard-coded to always return true.
   @Deprecated(
       'This getter is deprecated and is hard-coded to always return true.')
   bool get previewDart2;
 
-  /**
-   * The version range for the SDK specified in `pubspec.yaml`, or `null` if
-   * there is no `pubspec.yaml` or if it does not contain an SDK range.
-   */
+  /// The version range for the SDK specified in `pubspec.yaml`, or `null` if
+  /// there is no `pubspec.yaml` or if it does not contain an SDK range.
   VersionConstraint get sdkVersionConstraint;
 
-  /**
-   * Return the opaque signature of the options.
-   *
-   * The length of the list is guaranteed to equal [signatureLength].
-   */
+  /// Return the opaque signature of the options.
+  ///
+  /// The length of the list is guaranteed to equal [signatureLength].
   Uint32List get signature;
 
-  /**
-   * Return `true` if strong mode analysis should be used.
-   *
-   * This getter is deprecated, and is hard-coded to always return true.
-   */
+  /// Return `true` if strong mode analysis should be used.
+  ///
+  /// This getter is deprecated, and is hard-coded to always return true.
   @Deprecated(
       'This getter is deprecated and is hard-coded to always return true.')
   bool get strongMode;
 
-  /**
-   * Return `true` if dependencies between computed results should be tracked
-   * by analysis cache.  This option should only be set to `false` if analysis
-   * is performed in such a way that none of the inputs is ever changed
-   * during the life time of the context.
-   */
+  /// Return `true` if dependencies between computed results should be tracked
+  /// by analysis cache.  This option should only be set to `false` if analysis
+  /// is performed in such a way that none of the inputs is ever changed
+  /// during the life time of the context.
   bool get trackCacheDependencies;
 
-  /**
-   * Return `true` if analyzer should use the Dart 2.0 Front End parser.
-   */
+  /// Return `true` if analyzer should use the Dart 2.0 Front End parser.
   bool get useFastaParser;
 
-  /**
-   * Reset the state of this set of analysis options to its original state.
-   */
+  /// Reset the state of this set of analysis options to its original state.
   void resetToDefaults();
 
-  /**
-   * Set the values of the cross-context options to match those in the given set
-   * of [options].
-   */
+  /// Set the values of the cross-context options to match those in the given set
+  /// of [options].
   @deprecated
   void setCrossContextOptionsFrom(AnalysisOptions options);
 
-  /**
-   * Determine whether two signatures returned by [signature] are equal.
-   */
+  /// Determine whether two signatures returned by [signature] are equal.
   static bool signaturesEqual(Uint32List a, Uint32List b) {
     assert(a.length == signatureLength);
     assert(b.length == signatureLength);
@@ -1263,40 +958,28 @@
   }
 }
 
-/**
- * A set of analysis options used to control the behavior of an analysis
- * context.
- */
+/// A set of analysis options used to control the behavior of an analysis
+/// context.
 class AnalysisOptionsImpl implements AnalysisOptions {
-  /**
-   * DEPRECATED: The maximum number of sources for which data should be kept in
-   * the cache.
-   *
-   * This constant no longer has any effect.
-   */
+  /// DEPRECATED: The maximum number of sources for which data should be kept in
+  /// the cache.
+  ///
+  /// This constant no longer has any effect.
   @deprecated
   static const int DEFAULT_CACHE_SIZE = 64;
 
-  /**
-   * The length of the list returned by [unlinkedSignature].
-   */
+  /// The length of the list returned by [unlinkedSignature].
   static const int unlinkedSignatureLength = 4;
 
-  /**
-   * A predicate indicating whether analysis is to parse and analyze function
-   * bodies.
-   */
+  /// A predicate indicating whether analysis is to parse and analyze function
+  /// bodies.
   AnalyzeFunctionBodiesPredicate _analyzeFunctionBodiesPredicate =
       _analyzeAllFunctionBodies;
 
-  /**
-   * The cached [unlinkedSignature].
-   */
+  /// The cached [unlinkedSignature].
   Uint32List _unlinkedSignature;
 
-  /**
-   * The cached [signature].
-   */
+  /// The cached [signature].
   Uint32List _signature;
 
   @override
@@ -1311,9 +994,7 @@
 
   List<String> _enabledExperiments = const <String>[];
 
-  /**
-   * Parsed [enabledExperiments].
-   */
+  /// Parsed [enabledExperiments].
   ExperimentStatus _experimentStatus = ExperimentStatus();
 
   @override
@@ -1325,15 +1006,11 @@
   @override
   bool enableTiming = false;
 
-  /**
-   * A list of error processors that are to be used when reporting errors in
-   * some analysis context.
-   */
+  /// A list of error processors that are to be used when reporting errors in
+  /// some analysis context.
   List<ErrorProcessor> _errorProcessors;
 
-  /**
-   * A list of exclude patterns used to exclude some sources from analysis.
-   */
+  /// A list of exclude patterns used to exclude some sources from analysis.
   List<String> _excludePatterns;
 
   @override
@@ -1348,10 +1025,8 @@
   @override
   bool lint = false;
 
-  /**
-   * The lint rules that are to be run in an analysis context if [lint] returns
-   * `true`.
-   */
+  /// The lint rules that are to be run in an analysis context if [lint] returns
+  /// `true`.
   List<Linter> _lintRules;
 
   Map<String, List<String>> patchPaths = {};
@@ -1359,11 +1034,9 @@
   @override
   bool preserveComments = true;
 
-  /**
-   * A flag indicating whether strong-mode inference hints should be
-   * used.  This flag is not exposed in the interface, and should be
-   * replaced by something more general.
-   */
+  /// A flag indicating whether strong-mode inference hints should be
+  /// used.  This flag is not exposed in the interface, and should be
+  /// replaced by something more general.
   // TODO(leafp): replace this with something more general
   bool strongModeHints = false;
 
@@ -1376,55 +1049,43 @@
   @override
   bool disableCacheFlushing = false;
 
-  /**
-   * A flag indicating whether implicit casts are allowed in [strongMode]
-   * (they are always allowed in Dart 1.0 mode).
-   *
-   * This option is experimental and subject to change.
-   */
+  /// A flag indicating whether implicit casts are allowed in [strongMode]
+  /// (they are always allowed in Dart 1.0 mode).
+  ///
+  /// This option is experimental and subject to change.
   bool implicitCasts = true;
 
-  /**
-   * A flag indicating whether implicit dynamic type is allowed, on by default.
-   *
-   * This flag can be used without necessarily enabling [strongMode], but it is
-   * designed with strong mode's type inference in mind. Without type inference,
-   * it will raise many errors. Also it does not provide type safety without
-   * strong mode.
-   *
-   * This option is experimental and subject to change.
-   */
+  /// A flag indicating whether implicit dynamic type is allowed, on by default.
+  ///
+  /// This flag can be used without necessarily enabling [strongMode], but it is
+  /// designed with strong mode's type inference in mind. Without type inference,
+  /// it will raise many errors. Also it does not provide type safety without
+  /// strong mode.
+  ///
+  /// This option is experimental and subject to change.
   bool implicitDynamic = true;
 
-  /**
-   * A flag indicating whether inference failures are allowed, off by default.
-   *
-   * This option is experimental and subject to change.
-   */
+  /// A flag indicating whether inference failures are allowed, off by default.
+  ///
+  /// This option is experimental and subject to change.
   bool strictInference = false;
 
-  /**
-   * Whether raw types (types without explicit type arguments, such as `List`)
-   * should be reported as potential problems.
-   * 
-   * Raw types are a common source of `dynamic` being introduced implicitly.
-   * This often leads to cast failures later on in the program.
-   */
+  /// Whether raw types (types without explicit type arguments, such as `List`)
+  /// should be reported as potential problems.
+  ///
+  /// Raw types are a common source of `dynamic` being introduced implicitly.
+  /// This often leads to cast failures later on in the program.
   bool strictRawTypes = false;
 
   @override
   bool chromeOsManifestChecks = false;
 
-  /**
-   * Initialize a newly created set of analysis options to have their default
-   * values.
-   */
+  /// Initialize a newly created set of analysis options to have their default
+  /// values.
   AnalysisOptionsImpl();
 
-  /**
-   * Initialize a newly created set of analysis options to have the same values
-   * as those in the given set of analysis [options].
-   */
+  /// Initialize a newly created set of analysis options to have the same values
+  /// as those in the given set of analysis [options].
   AnalysisOptionsImpl.from(AnalysisOptions options) {
     analyzeFunctionBodiesPredicate = options.analyzeFunctionBodiesPredicate;
     dart2jsHint = options.dart2jsHint;
@@ -1505,9 +1166,7 @@
   @deprecated
   void set enableAsync(bool enable) {}
 
-  /**
-   * A flag indicating whether interface libraries are to be supported (DEP 40).
-   */
+  /// A flag indicating whether interface libraries are to be supported (DEP 40).
   bool get enableConditionalDirectives => true;
 
   @deprecated
@@ -1555,10 +1214,8 @@
   List<ErrorProcessor> get errorProcessors =>
       _errorProcessors ??= const <ErrorProcessor>[];
 
-  /**
-   * Set the list of error [processors] that are to be used when reporting
-   * errors in some analysis context.
-   */
+  /// Set the list of error [processors] that are to be used when reporting
+  /// errors in some analysis context.
   void set errorProcessors(List<ErrorProcessor> processors) {
     _errorProcessors = processors;
   }
@@ -1566,23 +1223,17 @@
   @override
   List<String> get excludePatterns => _excludePatterns ??= const <String>[];
 
-  /**
-   * Set the exclude patterns used to exclude some sources from analysis to
-   * those in the given list of [patterns].
-   */
+  /// Set the exclude patterns used to exclude some sources from analysis to
+  /// those in the given list of [patterns].
   void set excludePatterns(List<String> patterns) {
     _excludePatterns = patterns;
   }
 
-  /**
-   * The set of enabled experiments.
-   */
+  /// The set of enabled experiments.
   ExperimentStatus get experimentStatus => _experimentStatus;
 
-  /**
-   * Return `true` to enable mixin declarations.
-   * https://github.com/dart-lang/language/issues/12
-   */
+  /// Return `true` to enable mixin declarations.
+  /// https://github.com/dart-lang/language/issues/12
   @deprecated
   bool get isMixinSupportEnabled => true;
 
@@ -1592,10 +1243,8 @@
   @override
   List<Linter> get lintRules => _lintRules ??= const <Linter>[];
 
-  /**
-   * Set the lint rules that are to be run in an analysis context if [lint]
-   * returns `true`.
-   */
+  /// Set the lint rules that are to be run in an analysis context if [lint]
+  /// returns `true`.
   void set lintRules(List<Linter> rules) {
     _lintRules = rules;
   }
@@ -1665,11 +1314,9 @@
       "The strongMode field is deprecated, and shouldn't be assigned to")
   set strongMode(bool value) {}
 
-  /**
-   * Return the opaque signature of the options that affect unlinked data.
-   *
-   * The length of the list is guaranteed to equal [unlinkedSignatureLength].
-   */
+  /// Return the opaque signature of the options that affect unlinked data.
+  ///
+  /// The length of the list is guaranteed to equal [unlinkedSignatureLength].
   Uint32List get unlinkedSignature {
     if (_unlinkedSignature == null) {
       ApiSignature buffer = new ApiSignature();
@@ -1726,9 +1373,7 @@
     }
   }
 
-  /**
-   * Return whether the given lists of lints are equal.
-   */
+  /// Return whether the given lists of lints are equal.
   static bool compareLints(List<Linter> a, List<Linter> b) {
     if (a.length != b.length) {
       return false;
@@ -1741,175 +1386,129 @@
     return true;
   }
 
-  /**
-   * Predicate used for [analyzeFunctionBodiesPredicate] when
-   * [analyzeFunctionBodies] is set to `true`.
-   */
+  /// Predicate used for [analyzeFunctionBodiesPredicate] when
+  /// [analyzeFunctionBodies] is set to `true`.
   static bool _analyzeAllFunctionBodies(Source _) => true;
 
-  /**
-   * Predicate used for [analyzeFunctionBodiesPredicate] when
-   * [analyzeFunctionBodies] is set to `false`.
-   */
+  /// Predicate used for [analyzeFunctionBodiesPredicate] when
+  /// [analyzeFunctionBodies] is set to `false`.
   static bool _analyzeNoFunctionBodies(Source _) => false;
 }
 
-/**
- *
- */
+///
 class AnalysisResult {
-  /**
-   * The change notices associated with this result, or `null` if there were no
-   * changes and there is no more work to be done.
-   */
+  /// The change notices associated with this result, or `null` if there were no
+  /// changes and there is no more work to be done.
   final List<ChangeNotice> _notices;
 
-  /**
-   * The number of milliseconds required to determine which task was to be
-   * performed.
-   */
+  /// The number of milliseconds required to determine which task was to be
+  /// performed.
   final int getTime;
 
-  /**
-   * The name of the class of the task that was performed.
-   */
+  /// The name of the class of the task that was performed.
   final String taskClassName;
 
-  /**
-   * The number of milliseconds required to perform the task.
-   */
+  /// The number of milliseconds required to perform the task.
   final int performTime;
 
-  /**
-   * Initialize a newly created analysis result to have the given values. The
-   * [notices] is the change notices associated with this result. The [getTime]
-   * is the number of milliseconds required to determine which task was to be
-   * performed. The [taskClassName] is the name of the class of the task that
-   * was performed. The [performTime] is the number of milliseconds required to
-   * perform the task.
-   */
+  /// Initialize a newly created analysis result to have the given values. The
+  /// [notices] is the change notices associated with this result. The [getTime]
+  /// is the number of milliseconds required to determine which task was to be
+  /// performed. The [taskClassName] is the name of the class of the task that
+  /// was performed. The [performTime] is the number of milliseconds required to
+  /// perform the task.
   AnalysisResult(
       this._notices, this.getTime, this.taskClassName, this.performTime);
 
-  /**
-   * Return the change notices associated with this result, or `null` if there
-   * were no changes and there is no more work to be done.
-   */
+  /// Return the change notices associated with this result, or `null` if there
+  /// were no changes and there is no more work to be done.
   List<ChangeNotice> get changeNotices => _notices;
 
-  /**
-   * Return `true` if there is more to be performed after the task that was
-   * performed.
-   */
+  /// Return `true` if there is more to be performed after the task that was
+  /// performed.
   bool get hasMoreWork => _notices != null;
 }
 
-/**
- * Statistics about cache consistency validation.
- */
+/// Statistics about cache consistency validation.
 class CacheConsistencyValidationStatistics {
-  /**
-   * Number of sources which were changed, but the context was not notified
-   * about it, so this fact was detected only during cache consistency
-   * validation.
-   */
+  /// Number of sources which were changed, but the context was not notified
+  /// about it, so this fact was detected only during cache consistency
+  /// validation.
   int numOfChanged = 0;
 
-  /**
-   * Number of sources which stopped existing, but the context was not notified
-   * about it, so this fact was detected only during cache consistency
-   * validation.
-   */
+  /// Number of sources which stopped existing, but the context was not notified
+  /// about it, so this fact was detected only during cache consistency
+  /// validation.
   int numOfRemoved = 0;
 
-  /**
-   * Reset all counters.
-   */
+  /// Reset all counters.
   void reset() {
     numOfChanged = 0;
     numOfRemoved = 0;
   }
 }
 
-/**
- * Interface for cache consistency validation in an [InternalAnalysisContext].
- */
+/// Interface for cache consistency validation in an [InternalAnalysisContext].
 abstract class CacheConsistencyValidator {
-  /**
-   * Return sources for which the contexts needs to know modification times.
-   */
+  /// Return sources for which the contexts needs to know modification times.
   List<Source> getSourcesToComputeModificationTimes();
 
-  /**
-   * Notify the validator that modification [times] were computed for [sources].
-   * If a source does not exist, its modification time is `-1`.
-   *
-   * It's up to the validator and the context how to use this information,
-   * the list of sources the context has might have been changed since the
-   * previous invocation of [getSourcesToComputeModificationTimes].
-   *
-   * Check the cache for any invalid entries (entries whose modification time
-   * does not match the modification time of the source associated with the
-   * entry). Invalid entries will be marked as invalid so that the source will
-   * be re-analyzed. Return `true` if at least one entry was invalid.
-   */
+  /// Notify the validator that modification [times] were computed for [sources].
+  /// If a source does not exist, its modification time is `-1`.
+  ///
+  /// It's up to the validator and the context how to use this information,
+  /// the list of sources the context has might have been changed since the
+  /// previous invocation of [getSourcesToComputeModificationTimes].
+  ///
+  /// Check the cache for any invalid entries (entries whose modification time
+  /// does not match the modification time of the source associated with the
+  /// entry). Invalid entries will be marked as invalid so that the source will
+  /// be re-analyzed. Return `true` if at least one entry was invalid.
   bool sourceModificationTimesComputed(List<Source> sources, List<int> times);
 }
 
-/**
- * The possible states of cached data.
- */
+/// The possible states of cached data.
 class CacheState implements Comparable<CacheState> {
-  /**
-   * The data is not in the cache and the last time an attempt was made to
-   * compute the data an exception occurred, making it pointless to attempt to
-   * compute the data again.
-   *
-   * Valid Transitions:
-   * * [INVALID] if a source was modified that might cause the data to be
-   *   computable
-   */
+  /// The data is not in the cache and the last time an attempt was made to
+  /// compute the data an exception occurred, making it pointless to attempt to
+  /// compute the data again.
+  ///
+  /// Valid Transitions:
+  /// * [INVALID] if a source was modified that might cause the data to be
+  ///   computable
   static const CacheState ERROR = const CacheState('ERROR', 0);
 
-  /**
-   * The data is not in the cache because it was flushed from the cache in order
-   * to control memory usage. If the data is recomputed, results do not need to
-   * be reported.
-   *
-   * Valid Transitions:
-   * * [IN_PROCESS] if the data is being recomputed
-   * * [INVALID] if a source was modified that causes the data to need to be
-   *   recomputed
-   */
+  /// The data is not in the cache because it was flushed from the cache in order
+  /// to control memory usage. If the data is recomputed, results do not need to
+  /// be reported.
+  ///
+  /// Valid Transitions:
+  /// * [IN_PROCESS] if the data is being recomputed
+  /// * [INVALID] if a source was modified that causes the data to need to be
+  ///   recomputed
   static const CacheState FLUSHED = const CacheState('FLUSHED', 1);
 
-  /**
-   * The data might or might not be in the cache but is in the process of being
-   * recomputed.
-   *
-   * Valid Transitions:
-   * * [ERROR] if an exception occurred while trying to compute the data
-   * * [VALID] if the data was successfully computed and stored in the cache
-   */
+  /// The data might or might not be in the cache but is in the process of being
+  /// recomputed.
+  ///
+  /// Valid Transitions:
+  /// * [ERROR] if an exception occurred while trying to compute the data
+  /// * [VALID] if the data was successfully computed and stored in the cache
   static const CacheState IN_PROCESS = const CacheState('IN_PROCESS', 2);
 
-  /**
-   * The data is not in the cache and needs to be recomputed so that results can
-   * be reported.
-   *
-   * Valid Transitions:
-   * * [IN_PROCESS] if an attempt is being made to recompute the data
-   */
+  /// The data is not in the cache and needs to be recomputed so that results can
+  /// be reported.
+  ///
+  /// Valid Transitions:
+  /// * [IN_PROCESS] if an attempt is being made to recompute the data
   static const CacheState INVALID = const CacheState('INVALID', 3);
 
-  /**
-   * The data is in the cache and up-to-date.
-   *
-   * Valid Transitions:
-   * * [FLUSHED] if the data is removed in order to manage memory usage
-   * * [INVALID] if a source was modified in such a way as to invalidate the
-   *   previous data
-   */
+  /// The data is in the cache and up-to-date.
+  ///
+  /// Valid Transitions:
+  /// * [FLUSHED] if the data is removed in order to manage memory usage
+  /// * [INVALID] if a source was modified in such a way as to invalidate the
+  ///   previous data
   static const CacheState VALID = const CacheState('VALID', 4);
 
   static const List<CacheState> values = const [
@@ -1920,14 +1519,10 @@
     VALID
   ];
 
-  /**
-   * The name of this cache state.
-   */
+  /// The name of this cache state.
   final String name;
 
-  /**
-   * The ordinal value of the cache state.
-   */
+  /// The ordinal value of the cache state.
   final int ordinal;
 
   const CacheState(this.name, this.ordinal);
@@ -1942,70 +1537,48 @@
   String toString() => name;
 }
 
-/**
- * An object that represents a change to the analysis results associated with a
- * given source.
- */
+/// An object that represents a change to the analysis results associated with a
+/// given source.
 abstract class ChangeNotice implements AnalysisErrorInfo {
-  /**
-   * The parsed, but maybe not resolved Dart AST that changed as a result of
-   * the analysis, or `null` if the AST was not changed.
-   */
+  /// The parsed, but maybe not resolved Dart AST that changed as a result of
+  /// the analysis, or `null` if the AST was not changed.
   CompilationUnit get parsedDartUnit;
 
-  /**
-   * The fully resolved Dart AST that changed as a result of the analysis, or
-   * `null` if the AST was not changed.
-   */
+  /// The fully resolved Dart AST that changed as a result of the analysis, or
+  /// `null` if the AST was not changed.
   CompilationUnit get resolvedDartUnit;
 
-  /**
-   * Return the source for which the result is being reported.
-   */
+  /// Return the source for which the result is being reported.
   Source get source;
 }
 
-/**
- * An implementation of a [ChangeNotice].
- */
+/// An implementation of a [ChangeNotice].
 class ChangeNoticeImpl implements ChangeNotice {
-  /**
-   * The source for which the result is being reported.
-   */
+  /// The source for which the result is being reported.
   @override
   final Source source;
 
-  /**
-   * The parsed, but maybe not resolved Dart AST that changed as a result of
-   * the analysis, or `null` if the AST was not changed.
-   */
+  /// The parsed, but maybe not resolved Dart AST that changed as a result of
+  /// the analysis, or `null` if the AST was not changed.
   @override
   CompilationUnit parsedDartUnit;
 
-  /**
-   * The fully resolved Dart AST that changed as a result of the analysis, or
-   * `null` if the AST was not changed.
-   */
+  /// The fully resolved Dart AST that changed as a result of the analysis, or
+  /// `null` if the AST was not changed.
   @override
   CompilationUnit resolvedDartUnit;
 
-  /**
-   * The errors that changed as a result of the analysis, or `null` if errors
-   * were not changed.
-   */
+  /// The errors that changed as a result of the analysis, or `null` if errors
+  /// were not changed.
   List<AnalysisError> _errors;
 
-  /**
-   * The line information associated with the source, or `null` if errors were
-   * not changed.
-   */
+  /// The line information associated with the source, or `null` if errors were
+  /// not changed.
   LineInfo _lineInfo;
 
-  /**
-   * Initialize a newly created notice associated with the given source.
-   *
-   * @param source the source for which the change is being reported
-   */
+  /// Initialize a newly created notice associated with the given source.
+  ///
+  /// @param source the source for which the change is being reported
   ChangeNoticeImpl(this.source);
 
   @override
@@ -2014,10 +1587,8 @@
   @override
   LineInfo get lineInfo => _lineInfo;
 
-  /**
-   * Set the errors that changed as a result of the analysis to the given
-   * [errors] and set the line information to the given [lineInfo].
-   */
+  /// Set the errors that changed as a result of the analysis to the given
+  /// [errors] and set the line information to the given [lineInfo].
   void setErrors(List<AnalysisError> errors, LineInfo lineInfo) {
     this._errors = errors;
     this._lineInfo = lineInfo;
@@ -2031,61 +1602,43 @@
   String toString() => "Changes for ${source.fullName}";
 }
 
-/**
- * An indication of which sources have been added, changed, removed, or deleted.
- * In the case of a changed source, there are multiple ways of indicating the
- * nature of the change.
- *
- * No source should be added to the change set more than once, either with the
- * same or a different kind of change. It does not make sense, for example, for
- * a source to be both added and removed, and it is redundant for a source to be
- * marked as changed in its entirety and changed in some specific range.
- */
+/// An indication of which sources have been added, changed, removed, or deleted.
+/// In the case of a changed source, there are multiple ways of indicating the
+/// nature of the change.
+///
+/// No source should be added to the change set more than once, either with the
+/// same or a different kind of change. It does not make sense, for example, for
+/// a source to be both added and removed, and it is redundant for a source to be
+/// marked as changed in its entirety and changed in some specific range.
 class ChangeSet {
-  /**
-   * A list containing the sources that have been added.
-   */
+  /// A list containing the sources that have been added.
   final List<Source> addedSources = new List<Source>();
 
-  /**
-   * A list containing the sources that have been changed.
-   */
+  /// A list containing the sources that have been changed.
   final List<Source> changedSources = new List<Source>();
 
-  /**
-   * A table mapping the sources whose content has been changed to the current
-   * content of those sources.
-   */
+  /// A table mapping the sources whose content has been changed to the current
+  /// content of those sources.
   Map<Source, String> _changedContent = new HashMap<Source, String>();
 
-  /**
-   * A table mapping the sources whose content has been changed within a single
-   * range to the current content of those sources and information about the
-   * affected range.
-   */
+  /// A table mapping the sources whose content has been changed within a single
+  /// range to the current content of those sources and information about the
+  /// affected range.
   final HashMap<Source, ChangeSet_ContentChange> changedRanges =
       new HashMap<Source, ChangeSet_ContentChange>();
 
-  /**
-   * A list containing the sources that have been removed.
-   */
+  /// A list containing the sources that have been removed.
   final List<Source> removedSources = new List<Source>();
 
-  /**
-   * A list containing the source containers specifying additional sources that
-   * have been removed.
-   */
+  /// A list containing the source containers specifying additional sources that
+  /// have been removed.
   final List<SourceContainer> removedContainers = new List<SourceContainer>();
 
-  /**
-   * Return a table mapping the sources whose content has been changed to the
-   * current content of those sources.
-   */
+  /// Return a table mapping the sources whose content has been changed to the
+  /// current content of those sources.
   Map<Source, String> get changedContents => _changedContent;
 
-  /**
-   * Return `true` if this change set does not contain any changes.
-   */
+  /// Return `true` if this change set does not contain any changes.
   bool get isEmpty =>
       addedSources.isEmpty &&
       changedSources.isEmpty &&
@@ -2094,57 +1647,45 @@
       removedSources.isEmpty &&
       removedContainers.isEmpty;
 
-  /**
-   * Record that the specified [source] has been added and that its content is
-   * the default contents of the source.
-   */
+  /// Record that the specified [source] has been added and that its content is
+  /// the default contents of the source.
   void addedSource(Source source) {
     addedSources.add(source);
   }
 
-  /**
-   * Record that the specified [source] has been changed and that its content is
-   * the given [contents].
-   */
+  /// Record that the specified [source] has been changed and that its content is
+  /// the given [contents].
   void changedContent(Source source, String contents) {
     _changedContent[source] = contents;
   }
 
-  /**
-   * Record that the specified [source] has been changed and that its content is
-   * the given [contents]. The [offset] is the offset into the current contents.
-   * The [oldLength] is the number of characters in the original contents that
-   * were replaced. The [newLength] is the number of characters in the
-   * replacement text.
-   */
+  /// Record that the specified [source] has been changed and that its content is
+  /// the given [contents]. The [offset] is the offset into the current contents.
+  /// The [oldLength] is the number of characters in the original contents that
+  /// were replaced. The [newLength] is the number of characters in the
+  /// replacement text.
   void changedRange(Source source, String contents, int offset, int oldLength,
       int newLength) {
     changedRanges[source] =
         new ChangeSet_ContentChange(contents, offset, oldLength, newLength);
   }
 
-  /**
-   * Record that the specified [source] has been changed. If the content of the
-   * source was previously overridden, this has no effect (the content remains
-   * overridden). To cancel (or change) the override, use [changedContent]
-   * instead.
-   */
+  /// Record that the specified [source] has been changed. If the content of the
+  /// source was previously overridden, this has no effect (the content remains
+  /// overridden). To cancel (or change) the override, use [changedContent]
+  /// instead.
   void changedSource(Source source) {
     changedSources.add(source);
   }
 
-  /**
-   * Record that the specified source [container] has been removed.
-   */
+  /// Record that the specified source [container] has been removed.
   void removedContainer(SourceContainer container) {
     if (container != null) {
       removedContainers.add(container);
     }
   }
 
-  /**
-   * Record that the specified [source] has been removed.
-   */
+  /// Record that the specified [source] has been removed.
   void removedSource(Source source) {
     if (source != null) {
       removedSources.add(source);
@@ -2182,11 +1723,9 @@
     return buffer.toString();
   }
 
-  /**
-   * Append the given [sources] to the given [buffer], prefixed with the given
-   * [label] and a separator if [needsSeparator] is `true`. Return `true` if
-   * future lists of sources will need a separator.
-   */
+  /// Append the given [sources] to the given [buffer], prefixed with the given
+  /// [label] and a separator if [needsSeparator] is `true`. Return `true` if
+  /// future lists of sources will need a separator.
   bool _appendSources(StringBuffer buffer, List<Source> sources,
       bool needsSeparator, String label) {
     if (sources.isEmpty) {
@@ -2205,11 +1744,9 @@
     return true;
   }
 
-  /**
-   * Append the given [sources] to the given [builder], prefixed with the given
-   * [label] and a separator if [needsSeparator] is `true`. Return `true` if
-   * future lists of sources will need a separator.
-   */
+  /// Append the given [sources] to the given [builder], prefixed with the given
+  /// [label] and a separator if [needsSeparator] is `true`. Return `true` if
+  /// future lists of sources will need a separator.
   bool _appendSources2(StringBuffer buffer, Map<Source, dynamic> sources,
       bool needsSeparator, String label) {
     if (sources.isEmpty) {
@@ -2229,64 +1766,42 @@
   }
 }
 
-/**
- * A change to the content of a source.
- */
+/// A change to the content of a source.
 class ChangeSet_ContentChange {
-  /**
-   * The new contents of the source.
-   */
+  /// The new contents of the source.
   final String contents;
 
-  /**
-   * The offset into the current contents.
-   */
+  /// The offset into the current contents.
   final int offset;
 
-  /**
-   * The number of characters in the original contents that were replaced
-   */
+  /// The number of characters in the original contents that were replaced
   final int oldLength;
 
-  /**
-   * The number of characters in the replacement text.
-   */
+  /// The number of characters in the replacement text.
   final int newLength;
 
-  /**
-   * Initialize a newly created change object to represent a change to the
-   * content of a source. The [contents] is the new contents of the source. The
-   * [offset] is the offset into the current contents. The [oldLength] is the
-   * number of characters in the original contents that were replaced. The
-   * [newLength] is the number of characters in the replacement text.
-   */
+  /// Initialize a newly created change object to represent a change to the
+  /// content of a source. The [contents] is the new contents of the source. The
+  /// [offset] is the offset into the current contents. The [oldLength] is the
+  /// number of characters in the original contents that were replaced. The
+  /// [newLength] is the number of characters in the replacement text.
   ChangeSet_ContentChange(
       this.contents, this.offset, this.oldLength, this.newLength);
 }
 
-/**
- * [ComputedResult] describes a value computed for a [ResultDescriptor].
- */
+/// [ComputedResult] describes a value computed for a [ResultDescriptor].
 @deprecated
 class ComputedResult<V> {
-  /**
-   * The context in which the value was computed.
-   */
+  /// The context in which the value was computed.
   final AnalysisContext context;
 
-  /**
-   * The descriptor of the result which was computed.
-   */
+  /// The descriptor of the result which was computed.
   final ResultDescriptor<V> descriptor;
 
-  /**
-   * The target for which the result was computed.
-   */
+  /// The target for which the result was computed.
   final AnalysisTarget target;
 
-  /**
-   * The computed value.
-   */
+  /// The computed value.
   final V value;
 
   ComputedResult(this.context, this.descriptor, this.target, this.value);
@@ -2295,25 +1810,17 @@
   String toString() => 'Computed $descriptor of $target in $context';
 }
 
-/**
- * An event indicating when a source either starts or stops being implicitly
- * analyzed.
- */
+/// An event indicating when a source either starts or stops being implicitly
+/// analyzed.
 class ImplicitAnalysisEvent {
-  /**
-   * The source whose status has changed.
-   */
+  /// The source whose status has changed.
   final Source source;
 
-  /**
-   * A flag indicating whether the source is now being analyzed.
-   */
+  /// A flag indicating whether the source is now being analyzed.
   final bool isAnalyzed;
 
-  /**
-   * Initialize a newly created event to indicate that the given [source] has
-   * changed it status to match the [isAnalyzed] flag.
-   */
+  /// Initialize a newly created event to indicate that the given [source] has
+  /// changed it status to match the [isAnalyzed] flag.
   ImplicitAnalysisEvent(this.source, this.isAnalyzed);
 
   @override
@@ -2321,220 +1828,156 @@
       '${isAnalyzed ? '' : 'not '}analyzing ${source.fullName}';
 }
 
-/**
- * Additional behavior for an analysis context that is required by internal
- * users of the context.
- */
+/// Additional behavior for an analysis context that is required by internal
+/// users of the context.
 abstract class InternalAnalysisContext implements AnalysisContext {
-  /**
-   * A table mapping the sources known to the context to the information known
-   * about the source.
-   */
+  /// A table mapping the sources known to the context to the information known
+  /// about the source.
   AnalysisCache get analysisCache;
 
-  /**
-   * The cache consistency validator for this context.
-   */
+  /// The cache consistency validator for this context.
   CacheConsistencyValidator get cacheConsistencyValidator;
 
-  /**
-   * Allow the client to supply its own content cache.  This will take the
-   * place of the content cache created by default, allowing clients to share
-   * the content cache between contexts.
-   */
+  /// Allow the client to supply its own content cache.  This will take the
+  /// place of the content cache created by default, allowing clients to share
+  /// the content cache between contexts.
   set contentCache(ContentCache value);
 
-  /**
-   * Get the [EmbedderYamlLocator] for this context.
-   */
+  /// Get the [EmbedderYamlLocator] for this context.
   @deprecated
   EmbedderYamlLocator get embedderYamlLocator;
 
-  /**
-   * Return a list of the explicit targets being analyzed by this context.
-   */
+  /// Return a list of the explicit targets being analyzed by this context.
   List<AnalysisTarget> get explicitTargets;
 
-  /**
-   * Return `true` if the context is active, i.e. is being analyzed now.
-   */
+  /// Return `true` if the context is active, i.e. is being analyzed now.
   bool get isActive;
 
-  /**
-   * Specify whether the context is active, i.e. is being analyzed now.
-   */
+  /// Specify whether the context is active, i.e. is being analyzed now.
   set isActive(bool value);
 
-  /**
-   * Return the [StreamController] reporting [InvalidatedResult]s for everything
-   * in this context's cache.
-   */
+  /// Return the [StreamController] reporting [InvalidatedResult]s for everything
+  /// in this context's cache.
   ReentrantSynchronousStream<InvalidatedResult> get onResultInvalidated;
 
-  /**
-   * Return a list containing all of the sources that have been marked as
-   * priority sources. Clients must not modify the returned list.
-   */
+  /// Return a list containing all of the sources that have been marked as
+  /// priority sources. Clients must not modify the returned list.
   List<Source> get prioritySources;
 
-  /**
-   * Return a list of the priority targets being analyzed by this context.
-   */
+  /// Return a list of the priority targets being analyzed by this context.
   List<AnalysisTarget> get priorityTargets;
 
-  /**
-   * The partition that contains analysis results that are not shared with other
-   * contexts.
-   */
+  /// The partition that contains analysis results that are not shared with other
+  /// contexts.
   CachePartition get privateAnalysisCachePartition;
 
-  /**
-   * Sets the [TypeProvider] for this context.
-   */
+  /// Sets the [TypeProvider] for this context.
   void set typeProvider(TypeProvider typeProvider);
 
-  /**
-   * A list of all [WorkManager]s used by this context.
-   */
+  /// A list of all [WorkManager]s used by this context.
   List<WorkManager> get workManagers;
 
-  /**
-   * This method is invoked when the state of the [result] of the [entry] is
-   * [CacheState.INVALID], so it is about to be computed.
-   *
-   * If the context knows how to provide the value, it sets the value into
-   * the [entry] with all required dependencies, and returns `true`.
-   *
-   * Otherwise, it returns `false` to indicate that the result should be
-   * computed as usually.
-   */
+  /// This method is invoked when the state of the [result] of the [entry] is
+  /// [CacheState.INVALID], so it is about to be computed.
+  ///
+  /// If the context knows how to provide the value, it sets the value into
+  /// the [entry] with all required dependencies, and returns `true`.
+  ///
+  /// Otherwise, it returns `false` to indicate that the result should be
+  /// computed as usually.
   bool aboutToComputeResult(CacheEntry entry, ResultDescriptor result);
 
-  /**
-   * Return a list containing the sources of the libraries that are exported by
-   * the library with the given [source]. The list will be empty if the given
-   * source is invalid, if the given source does not represent a library, or if
-   * the library does not export any other libraries.
-   *
-   * Throws an [AnalysisException] if the exported libraries could not be
-   * computed.
-   */
+  /// Return a list containing the sources of the libraries that are exported by
+  /// the library with the given [source]. The list will be empty if the given
+  /// source is invalid, if the given source does not represent a library, or if
+  /// the library does not export any other libraries.
+  ///
+  /// Throws an [AnalysisException] if the exported libraries could not be
+  /// computed.
   List<Source> computeExportedLibraries(Source source);
 
-  /**
-   * Return a list containing the sources of the libraries that are imported by
-   * the library with the given [source]. The list will be empty if the given
-   * source is invalid, if the given source does not represent a library, or if
-   * the library does not import any other libraries.
-   *
-   * Throws an [AnalysisException] if the imported libraries could not be
-   * computed.
-   */
+  /// Return a list containing the sources of the libraries that are imported by
+  /// the library with the given [source]. The list will be empty if the given
+  /// source is invalid, if the given source does not represent a library, or if
+  /// the library does not import any other libraries.
+  ///
+  /// Throws an [AnalysisException] if the imported libraries could not be
+  /// computed.
   List<Source> computeImportedLibraries(Source source);
 
-  /**
-   * Return all the resolved [CompilationUnit]s for the given [source] if not
-   * flushed, otherwise return `null` and ensures that the [CompilationUnit]s
-   * will be eventually returned to the client from [performAnalysisTask].
-   */
+  /// Return all the resolved [CompilationUnit]s for the given [source] if not
+  /// flushed, otherwise return `null` and ensures that the [CompilationUnit]s
+  /// will be eventually returned to the client from [performAnalysisTask].
   List<CompilationUnit> ensureResolvedDartUnits(Source source);
 
-  /**
-   * Return the cache entry associated with the given [target].
-   */
+  /// Return the cache entry associated with the given [target].
   CacheEntry getCacheEntry(AnalysisTarget target);
 
-  /**
-   * Return context that owns the given [source].
-   */
+  /// Return context that owns the given [source].
   InternalAnalysisContext getContextFor(Source source);
 
-  /**
-   * Return a change notice for the given [source], creating one if one does not
-   * already exist.
-   */
+  /// Return a change notice for the given [source], creating one if one does not
+  /// already exist.
   ChangeNoticeImpl getNotice(Source source);
 
-  /**
-   * Return a namespace containing mappings for all of the public names defined
-   * by the given [library].
-   */
+  /// Return a namespace containing mappings for all of the public names defined
+  /// by the given [library].
   Namespace getPublicNamespace(LibraryElement library);
 
-  /**
-   * Respond to a change which has been made to the given [source] file.
-   * [originalContents] is the former contents of the file, and [newContents]
-   * is the updated contents.  If [notify] is true, a source changed event is
-   * triggered.
-   *
-   * Normally it should not be necessary for clients to call this function,
-   * since it will be automatically invoked in response to a call to
-   * [applyChanges] or [setContents].  However, if this analysis context is
-   * sharing its content cache with other contexts, then the client must
-   * manually update the content cache and call this function for each context.
-   *
-   * Return `true` if the change was significant to this context (i.e. [source]
-   * is either implicitly or explicitly analyzed by this context, and a change
-   * actually occurred).
-   */
+  /// Respond to a change which has been made to the given [source] file.
+  /// [originalContents] is the former contents of the file, and [newContents]
+  /// is the updated contents.  If [notify] is true, a source changed event is
+  /// triggered.
+  ///
+  /// Normally it should not be necessary for clients to call this function,
+  /// since it will be automatically invoked in response to a call to
+  /// [applyChanges] or [setContents].  However, if this analysis context is
+  /// sharing its content cache with other contexts, then the client must
+  /// manually update the content cache and call this function for each context.
+  ///
+  /// Return `true` if the change was significant to this context (i.e. [source]
+  /// is either implicitly or explicitly analyzed by this context, and a change
+  /// actually occurred).
   bool handleContentsChanged(
       Source source, String originalContents, String newContents, bool notify);
 
-  /**
-   * Given an [elementMap] mapping the source for the libraries represented by
-   * the corresponding elements to the elements representing the libraries,
-   * record those mappings.
-   */
+  /// Given an [elementMap] mapping the source for the libraries represented by
+  /// the corresponding elements to the elements representing the libraries,
+  /// record those mappings.
   void recordLibraryElements(Map<Source, LibraryElement> elementMap);
 
-  /**
-   * Return `true` if errors should be produced for the given [source].
-   */
+  /// Return `true` if errors should be produced for the given [source].
   bool shouldErrorsBeAnalyzed(Source source);
 
-  /**
-   * For testing only: flush all representations of the AST (both resolved and
-   * unresolved) for the given [source] out of the cache.
-   */
+  /// For testing only: flush all representations of the AST (both resolved and
+  /// unresolved) for the given [source] out of the cache.
   void test_flushAstStructures(Source source);
 
-  /**
-   * Visit all entries of the content cache.
-   */
+  /// Visit all entries of the content cache.
   void visitContentCache(ContentCacheVisitor visitor);
 }
 
-/**
- * An object that can be used to receive information about errors within the
- * analysis engine. Implementations usually write this information to a file,
- * but can also record the information for later use (such as during testing) or
- * even ignore the information.
- */
+/// An object that can be used to receive information about errors within the
+/// analysis engine. Implementations usually write this information to a file,
+/// but can also record the information for later use (such as during testing) or
+/// even ignore the information.
 abstract class Logger {
-  /**
-   * A logger that ignores all logging.
-   */
+  /// A logger that ignores all logging.
   static final Logger NULL = new NullLogger();
 
-  /**
-   * Log the given message as an error. The [message] is expected to be an
-   * explanation of why the error occurred or what it means. The [exception] is
-   * expected to be the reason for the error. At least one argument must be
-   * provided.
-   */
+  /// Log the given message as an error. The [message] is expected to be an
+  /// explanation of why the error occurred or what it means. The [exception] is
+  /// expected to be the reason for the error. At least one argument must be
+  /// provided.
   void logError(String message, [CaughtException exception]);
 
-  /**
-   * Log the given informational message. The [message] is expected to be an
-   * explanation of why the error occurred or what it means. The [exception] is
-   * expected to be the reason for the error.
-   */
+  /// Log the given informational message. The [message] is expected to be an
+  /// explanation of why the error occurred or what it means. The [exception] is
+  /// expected to be the reason for the error.
   void logInformation(String message, [CaughtException exception]);
 }
 
-/**
- * An implementation of [Logger] that does nothing.
- */
+/// An implementation of [Logger] that does nothing.
 class NullLogger implements Logger {
   @override
   void logError(String message, [CaughtException exception]) {}
@@ -2543,109 +1986,71 @@
   void logInformation(String message, [CaughtException exception]) {}
 }
 
-/**
- * An exception created when an analysis attempt fails because a source was
- * deleted between the time the analysis started and the time the results of the
- * analysis were ready to be recorded.
- */
+/// An exception created when an analysis attempt fails because a source was
+/// deleted between the time the analysis started and the time the results of the
+/// analysis were ready to be recorded.
 class ObsoleteSourceAnalysisException extends AnalysisException {
-  /**
-   * The source that was removed while it was being analyzed.
-   */
+  /// The source that was removed while it was being analyzed.
   Source _source;
 
-  /**
-   * Initialize a newly created exception to represent the removal of the given
-   * [source].
-   */
+  /// Initialize a newly created exception to represent the removal of the given
+  /// [source].
   ObsoleteSourceAnalysisException(Source source)
       : super(
             "The source '${source.fullName}' was removed while it was being analyzed") {
     this._source = source;
   }
 
-  /**
-   * Return the source that was removed while it was being analyzed.
-   */
+  /// Return the source that was removed while it was being analyzed.
   Source get source => _source;
 }
 
-/**
- * Container with global [AnalysisContext] performance statistics.
- */
+/// Container with global [AnalysisContext] performance statistics.
 class PerformanceStatistics {
-  /**
-   * The [PerformanceTag] for `package:analyzer`.
-   */
+  /// The [PerformanceTag] for `package:analyzer`.
   static PerformanceTag analyzer = new PerformanceTag('analyzer');
 
-  /**
-   * The [PerformanceTag] for time spent in reading files.
-   */
+  /// The [PerformanceTag] for time spent in reading files.
   static PerformanceTag io = analyzer.createChild('io');
 
-  /**
-   * The [PerformanceTag] for general phases of analysis.
-   */
+  /// The [PerformanceTag] for general phases of analysis.
   static PerformanceTag analysis = analyzer.createChild('analysis');
 
-  /**
-   * The [PerformanceTag] for time spent in scanning.
-   */
+  /// The [PerformanceTag] for time spent in scanning.
   static PerformanceTag scan = analyzer.createChild('scan');
 
-  /**
-   * The [PerformanceTag] for time spent in parsing.
-   */
+  /// The [PerformanceTag] for time spent in parsing.
   static PerformanceTag parse = analyzer.createChild('parse');
 
-  /**
-   * The [PerformanceTag] for time spent in resolving.
-   */
+  /// The [PerformanceTag] for time spent in resolving.
   static PerformanceTag resolve = new PerformanceTag('resolve');
 
-  /**
-   * The [PerformanceTag] for time spent in error verifier.
-   */
+  /// The [PerformanceTag] for time spent in error verifier.
   static PerformanceTag errors = analysis.createChild('errors');
 
-  /**
-   * The [PerformanceTag] for time spent in hints generator.
-   */
+  /// The [PerformanceTag] for time spent in hints generator.
   static PerformanceTag hints = analysis.createChild('hints');
 
-  /**
-   * The [PerformanceTag] for time spent in linting.
-   */
+  /// The [PerformanceTag] for time spent in linting.
   static PerformanceTag lints = analysis.createChild('lints');
 
-  /**
-   * The [PerformanceTag] for time spent computing cycles.
-   */
+  /// The [PerformanceTag] for time spent computing cycles.
   static PerformanceTag cycles = new PerformanceTag('cycles');
 
-  /**
-   * The [PerformanceTag] for time spent in summaries support.
-   */
+  /// The [PerformanceTag] for time spent in summaries support.
   static PerformanceTag summary = analyzer.createChild('summary');
 
-  /**
-   * Statistics about cache consistency validation.
-   */
+  /// Statistics about cache consistency validation.
   static final CacheConsistencyValidationStatistics
       cacheConsistencyValidationStatistics =
       new CacheConsistencyValidationStatistics();
 }
 
-/**
- * An visitor that removes any resolution information from an AST structure when
- * used to visit that structure.
- */
+/// An visitor that removes any resolution information from an AST structure when
+/// used to visit that structure.
 class ResolutionEraser extends GeneralizingAstVisitor<void> {
-  /**
-   * A flag indicating whether the elements associated with declarations should
-   * be erased.
-   */
+  /// A flag indicating whether the elements associated with declarations should
+  /// be erased.
   bool eraseDeclarations = true;
 
   @override
@@ -2767,9 +2172,7 @@
     super.visitSuperConstructorInvocation(node);
   }
 
-  /**
-   * Remove any resolution information from the given AST structure.
-   */
+  /// Remove any resolution information from the given AST structure.
   static void erase(AstNode node, {bool eraseDeclarations: true}) {
     ResolutionEraser eraser = new ResolutionEraser();
     eraser.eraseDeclarations = eraseDeclarations;
@@ -2777,48 +2180,32 @@
   }
 }
 
-/**
- * [ResultChangedEvent] describes a change to an analysis result.
- */
+/// [ResultChangedEvent] describes a change to an analysis result.
 class ResultChangedEvent<V> {
-  /**
-   * The context in which the result was changed.
-   */
+  /// The context in which the result was changed.
   final AnalysisContext context;
 
-  /**
-   * The target for which the result was changed.
-   */
+  /// The target for which the result was changed.
   final AnalysisTarget target;
 
-  /**
-   * The descriptor of the result which was changed.
-   */
+  /// The descriptor of the result which was changed.
   final ResultDescriptor<V> descriptor;
 
-  /**
-   * If the result [wasComputed], the new value of the result. If the result
-   * [wasInvalidated], the value of before it was invalidated, may be the
-   * default value if the result was flushed.
-   */
+  /// If the result [wasComputed], the new value of the result. If the result
+  /// [wasInvalidated], the value of before it was invalidated, may be the
+  /// default value if the result was flushed.
   final V value;
 
-  /**
-   * Is `true` if the result was computed, or `false` is is was invalidated.
-   */
+  /// Is `true` if the result was computed, or `false` is is was invalidated.
   final bool _wasComputed;
 
   ResultChangedEvent(this.context, this.target, this.descriptor, this.value,
       this._wasComputed);
 
-  /**
-   * Returns `true` if the result was computed.
-   */
+  /// Returns `true` if the result was computed.
   bool get wasComputed => _wasComputed;
 
-  /**
-   * Returns `true` if the result was invalidated.
-   */
+  /// Returns `true` if the result was invalidated.
   bool get wasInvalidated => !_wasComputed;
 
   @override
@@ -2828,34 +2215,24 @@
   }
 }
 
-/**
- * [SourcesChangedEvent] indicates which sources have been added, removed,
- * or whose contents have changed.
- */
+/// [SourcesChangedEvent] indicates which sources have been added, removed,
+/// or whose contents have changed.
 class SourcesChangedEvent {
-  /**
-   * The internal representation of what has changed. Clients should not access
-   * this field directly.
-   */
+  /// The internal representation of what has changed. Clients should not access
+  /// this field directly.
   final ChangeSet _changeSet;
 
-  /**
-   * Construct an instance representing the given changes.
-   */
+  /// Construct an instance representing the given changes.
   SourcesChangedEvent(ChangeSet changeSet) : _changeSet = changeSet;
 
-  /**
-   * Construct an instance representing a source content change.
-   */
+  /// Construct an instance representing a source content change.
   factory SourcesChangedEvent.changedContent(Source source, String contents) {
     ChangeSet changeSet = new ChangeSet();
     changeSet.changedContent(source, contents);
     return new SourcesChangedEvent(changeSet);
   }
 
-  /**
-   * Construct an instance representing a source content change.
-   */
+  /// Construct an instance representing a source content change.
   factory SourcesChangedEvent.changedRange(Source source, String contents,
       int offset, int oldLength, int newLength) {
     ChangeSet changeSet = new ChangeSet();
@@ -2863,9 +2240,7 @@
     return new SourcesChangedEvent(changeSet);
   }
 
-  /**
-   * Return the collection of sources for which content has changed.
-   */
+  /// Return the collection of sources for which content has changed.
   Iterable<Source> get changedSources {
     List<Source> changedSources = new List.from(_changeSet.changedSources);
     changedSources.addAll(_changeSet.changedContents.keys);
@@ -2873,14 +2248,10 @@
     return changedSources;
   }
 
-  /**
-   * Return `true` if any sources were added.
-   */
+  /// Return `true` if any sources were added.
   bool get wereSourcesAdded => _changeSet.addedSources.length > 0;
 
-  /**
-   * Return `true` if any sources were removed or deleted.
-   */
+  /// Return `true` if any sources were removed or deleted.
   bool get wereSourcesRemoved =>
       _changeSet.removedSources.length > 0 ||
       _changeSet.removedContainers.length > 0;