anchor.diff:    int get time => _time;
     int _time = 0;
   
  -  /// Collection of controllers of all subscribed listeners.
  -  ///
  -  /// [StreamController] is not overriding [Object.operator==], so this is
  -  /// effectively an identity map.
  -  Set<StreamController> _subscriptions = new Set<StreamController>();
  +  /// Controller providing streams for listening.
  +  StreamController<int> _multiplexController =
  +      new StreamController<int>.multiplex();
   
     Clock._();
   
     /// The stream of millisecond ticks of the clock.
  -  Stream<int> get onTick {
  -    StreamController<int> controller;
  -    controller = new StreamController<int>(
  -        onListen: () {
  -          _subscriptions.add(controller);
  -        },
  -        onCancel: () {
  -          _subscriptions.remove(controller);
  -        });
  -    return controller.stream;
  -  }
  -
  +  Stream<int> get onTick => _multiplexController.stream;
   
     /// Advances the clock forward by [milliseconds]. This works like synchronous
     /// code that takes [milliseconds] to execute; any [Timer]s that are scheduled
  
positive.code:     for (var i = 0; i < milliseconds; i++) {
        var tickTime = ++_time;
        runAsync(() {
          List<StreamController> controllers = _subscriptions.toList();
          for (StreamController controller in controllers) {
            if (_subscriptions.contains(controller)) {
              controller.add(tickTime);
            }
          }
        });
      }
    }
  
negative.code:   /// code runs before the next tick.
    void run() {
      pumpEventQueue().then((_) {
        if (!_multiplexController.hasListener) return;
        tick();
        return run();
      });
  