anchor.diff:      _useParentZone = true;
       _switchedToParent = _realClock.now();
   
  -    _microtasks.forEach(_zone.parent.scheduleMicrotask);
  -    _microtasks.clear();
  +    while (_microtasks.isNotEmpty) {
  +      _zone.parent.scheduleMicrotask(_microtasks.removeFirst());
  +    }
   
  -    _timers.forEach((t) {
  +    while (_timers.isNotEmpty) {
  +      var t = _timers.first;
         if (t.isPeriodic) {
           _zone.parent.createTimer(t.nextCall - _elapsed, () {
             var trackingTimer = new _TrackingTimer();
  
positive.code:       } else {
          _zone.parent.createTimer(t.nextCall - _elapsed, t.callback);
        }
      });
      _timers.clear();
    }
  
    _hasTimer(timer) => _timers.contains(timer);
  
negative.code: 
    void fastForward(Duration offset) {
      if (_useParentZone) {
        throw new StateError("Cannot fast forward if switched to parent zone.");
      }
      if (offset.inMicroseconds < 0) {
        throw new ArgumentError('Cannot fast forward with negative duration');
  