anchor.diff:      // We override the default version of this so that the application-startup warm-up frame
       // does not schedule timers which we might never get around to running.
       handleBeginFrame(null);
  -    _fakeAsync.flushMicrotasks();
  +    _currentFakeAsync.flushMicrotasks();
       handleDrawFrame();
  -    _fakeAsync.flushMicrotasks();
  +    _currentFakeAsync.flushMicrotasks();
     }
   
     @override
     Future<Null> idle() {
       final Future<Null> result = super.idle();
  -    _fakeAsync.elapse(const Duration());
  +    _currentFakeAsync.elapse(const Duration());
       return result;
     }
   
  
positive.code:   test_package.Timeout get defaultTestTimeout => const test_package.Timeout(const Duration(seconds: 5));
  
    @override
    bool get inTest => _fakeAsync != null;
  
    @override
    int get microtaskCount => _fakeAsync.microtaskCount;
  
    @override
    Future<Null> pump([ Duration duration, EnginePhase newPhase = EnginePhase.sendSemanticsUpdate ]) {
  
negative.code:         // Now, if we actually get here, this isn't going to be one of those
          // cases. We only get here if the test has actually failed. So, once
          // we've carefully reported it, we then immediately end the test by
          // calling the testCompletionHandler in the _parentZone.
          //
          // We have to manually call testCompletionHandler because if the Future
          // library calls us, it is maybe _instead_ of calling a registered
          // listener from a different zone. In our case, that would be instead of
          // calling the whenComplete() listener below.
          //
          // We have to call it in the parent zone because if we called it in
          // _this_ zone, the test framework would find this zone was the current
          // zone and helpfully throw the error in this zone, causing us to be
  