anchor.diff:  
   class SignalFunctions<T> {
       Signal<T> signal = new Signal<T>();
  -    SignalSubscription subscribe(SignalHandler<T> handler) {
  -        return signal.subscribe(handler);
  +    SignalSubscription subscribe(SignalHandler<T> handler, {String name, bool once: false}) {
  +        return signal.subscribe(handler, name: name, once: once);
       }
       void unsubscribe(SignalSubscription s) => signal.unsubscribe(s);
       void fire(T data) => signal.fire(data);
  
positive.code: 
      Future close() => _controller.close();
  }
  
negative.code: 
      String get name => _name;
  
      SignalSubscription subscribe(SignalHandler<T> userHandler, {String name, bool once: false}) {
          var streamSubscription = _controller.stream.listen(null);
          var mySignalSubscription = new SignalSubscription(streamSubscription, name: name);
  
          var wrappingHandler = (_SignalData<T> data) {
              userHandler(data.data);
              if (once) {
                  mySignalSubscription.streamSubscription.cancel();
              }
          };
          streamSubscription.onData(wrappingHandler);
  
          streamSubscription.onError((err) => throw new StateError("error in $name signal/event stream: $err"));
  
          return mySignalSubscription;
  