anchor.diff:        complete = true;
         testCase._markCallbackComplete();
       }
  -  }
  -
  -  invoke([arg0 = sentinel, arg1 = sentinel, arg2 = sentinel,
  -          arg3 = sentinel, arg4 = sentinel]) {
  -    return _guardAsync(() {
  -      if (!shouldCallBack()) {
  -        return;
  -      } else if (arg0 == sentinel) {
  -        return callback();
  -      } else if (arg1 == sentinel) {
  -        return callback(arg0);
  -      } else if (arg2 == sentinel) {
  -        return callback(arg0, arg1);
  -      } else if (arg3 == sentinel) {
  -        return callback(arg0, arg1, arg2);
  -      } else if (arg4 == sentinel) {
  -        return callback(arg0, arg1, arg2, arg3);
  -      } else {
  -        testCase.error(
  -           'unittest lib does not support callbacks with more than'
  -              ' 4 arguments.',
  -           '');
  -      }
  -    },
  -    after, testCase);
     }
   
     invoke0() {
  
positive.code:     }
    }
  
    static _makeCallbackId(String id, Function callback) {
      // Try to create a reasonable id.
      if (id != null) {
        return "$id ";
  
negative.code: 
  /**
   * Indicate that [callback] is expected to be called until [isDone] returns
   * true. The unittest framework check [isDone] after each callback and only
   * when it returns true will it continue with the following test. Using
   * [expectAsyncUntil0] will also ensure that errors that occur within
  