anchor.diff:      return new _StreamProperty.initialValue(this, initialValue);
     }
   
  +  /// Returns a wrapped broadcast or single-subscription version of [stream] based on
  +  /// [isBroadcast].
  +  ///
  +  /// All methods defined on this class that return an [EventStream] should use this
  +  /// method when returning their stream. It guarentees that the returned stream will be
  +  /// the same type of stream as this stream (either broadcast or single-subscription).
  +  EventStream _asEventStream(Stream stream) {
  +    return new EventStream(isBroadcast ? stream.asBroadcastStream() : stream);
  +  }
  +
     //
     // Wrappers for Dart Stream methods
     //
  
positive.code:   ///
    /// This method can be thought of stream switching.
    EventStream asyncExpandLatest(Stream convert(T event)) {
      return new EventStream(new _AsyncExpandLatestStream(this, convert));
    }
  
    /// Returns a new stream that contains events from this stream and the [other] stream.
    EventStream merge(Stream other) => new EventStream(new _MergedStream([this, other]));
  
    /// Returns a new stream that is paused and events buffered when the last event in the
    /// [toggleSwitch] is `true`.
    ///
    /// Buffered events are flushed when the [toggleSwitch] becomes `false`.
    EventStream<T> pauseWhen(Observable<bool> toggleSwitch) {
      return new EventStream(new _PauseWhenStream(this, toggleSwitch));
    }
  
    /// Returns a [Property] where the first value is the [initalValue] and values after
  
negative.code: 
    /// Delays the delivery of each non-error event from this stream by the given [duration].
    EventStream<T> delay(Duration duration) {
      return _asEventStream(new _DelayStream(this, duration));
    }
  
    /// Returns a new stream that includes events and errors from only the latest stream
  