anchor.diff:        });
       }
   
  -    return collectValues(_n).then((description) {
  -      if (description != null) return description;
  +    return collectValues(_n).then((failure) {
  +      if (failure != null) return failure;
         var matchState = {};
         if (_matcher.matches(collectedValues, matchState)) return null;
         return _matcher.describeMismatch(collectedValues, new StringDescription(),
  
positive.code: 
    Future<Description> tryMatch(ScheduledStream stream) {
      var fork = stream.fork();
      return _matcher.tryMatch(fork).whenComplete(fork.close).then((description) {
        if (description != null) return null;
        return _matcher.tryMatch(stream);
      });
    }
  
negative.code: 
          var fork = stream.fork();
          return _matcher.tryMatch(fork).whenComplete(fork.close)
              .then((failure) {
            if (failure != null) {
              return stream.next().then((_) => consumeNext());
            }
  
  