anchor.diff:    }
   
     @override
  -  StreamSubscription<T> listen(onData, {onError, onDone, cancelOnError}) {
  +  StreamSubscription<T> listen(void onData(T event),
  +      {Function onError, void onDone(), bool cancelOnError}) {
       // Don't allow listening to a closed stream, it will throw exception in
       // non checked mode since subscriptions will be null once the stream is
       // closed.
  
positive.code:   }
  
    @override
    StreamSubscription<T> listen(onData, {onError, onDone, cancelOnError}) {
      SimpleStreamSubscription<T> sub = super.listen(onData,
          onError: onError, onDone: onDone, cancelOnError: cancelOnError);
      if (_lastItem != null) {
  
negative.code:     throw new UnsupportedError('Not supported.');
    }
  }
  
  /// Provides an interface for both StreamController & and Stream for use with
  /// output events in Angular components.
  ///
  /// Reduces the amount of boilerplate needed by removing the need for a getter
  /// that returns the stream for angular.
  class SimpleEmitter<T> extends SimpleStream<T> {
    SimpleEmitter(
        {bool isSync = true,
        bool runInZone = true,
        SubscriptionChangeListener onListen,
        SubscriptionChangeListener onCancel})
        : super.broadcast(
              isSync: isSync,
              runInZone: runInZone,
              onListen: onListen,
              onCancel: onCancel);
  
    /// Returns referene to object.
    Stream<T> get stream => this;
  
    /// Returns referene to object.
    EventSink<T> get sink => this;
  }
  