anchor.diff:  /// state is `ConnectionState.active`.
   ///
   /// The initial snapshot data can be controlled by specifying [initialData].
  -/// You would use this facility to ensure that if the [builder] is invoked
  -/// before the first event arrives on the stream, the snapshot carries data of
  -/// your choice rather than the default null value.
  -///
  -/// See also:
  -///
  -/// * [StreamBuilderBase], which supports widget building based on a computation
  -/// that spans all interactions made with the stream.
  +/// This should be used to ensure that the first frame has the expected value,
  +/// as the builder will always be called before the stream listener has a chance
  +/// to be processed.
   ///
   /// {@tool sample}
   ///
  
positive.code: /// See also:
  ///
  /// * [StreamBuilder], which delegates to an [AsyncWidgetBuilder] to build
  /// itself based on a snapshot from interacting with a [Stream].
  /// * [FutureBuilder], which delegates to an [AsyncWidgetBuilder] to build
  /// itself based on a snapshot from interacting with a [Future].
  typedef AsyncWidgetBuilder<T> = Widget Function(BuildContext context, AsyncSnapshot<T> snapshot);
  
  /// Widget that builds itself based on the latest snapshot of interaction with
  
negative.code: /// termination by overriding [afterDone]. Finally, the summary may be updated
  /// on change of stream by overriding [afterDisconnected] and [afterConnected].
  ///
  /// `T` is the type of stream events.
  ///
  /// `S` is the type of interaction summary.
  ///
  /// See also:
  ///
  ///  * [StreamBuilder], which is specialized for the case where only the most
  ///    recent interaction is needed for widget building.
  abstract class StreamBuilderBase<T, S> extends StatefulWidget {
    /// Creates a [StreamBuilderBase] connected to the specified [stream].
    const StreamBuilderBase({ Key key, this.stream }) : super(key: key);
  