anchor.diff:    ///
     /// [ignoreFirst] defaults to false and skips any initial updates, since
     /// they can be read from Signal#value.
  -  StreamSubscription onChange(void f(T newValue), {bool ignoreFirst: false});
  +  StreamSubscription<T> onChange(void f(T newValue), {bool ignoreFirst: false});
   
     /// Cleans up all interal streams and subscriptions.
     void dispose();
  
positive.code:   bool get isCold => _value != null;
  
    @override
    StreamSubscription onChange(f, {bool ignoreFirst}) {
      return new Stream.empty().listen(f);
    }
  
    @override
    String toString() => 'Stream($_value)';
  
    @override
    Stream<T> toStream() => new Stream.empty();
  
negative.code:   Stream<T> toStream() => _controller.stream;
  
    @override
    String toString() => 'Signal($_value)';
  }
  
  class _ConstantSignal<T> implements Signal<T> {
  