anchor.diff:  
   class _InvalidOperationException extends _ExceptionMatcher {
     const _InvalidOperationException() : super("InvalidOperationException");
  -  bool matches(item) => item is InvalidOperationException;
  +  bool matches(item, MatchState matchState) => item is InvalidOperationException;
   }
   
   class _NullArgumentException extends _ExceptionMatcher {
     const _NullArgumentException() : super("NullArgumentException");
  -  bool matches(item) => item is NullArgumentException;
  +  bool matches(item, MatchState matchState) => item is NullArgumentException;
   }
   
   //
  
positive.code:     }
    }
  
    Description describeMismatch(item, Description mismatchDescription) {
      if (_matcher == null) {
        return mismatchDescription.add(' no exception');
      } else {
        return mismatchDescription.
            add(' no exception or exception does not match ').
            addDescriptionOf(_matcher);
      }
    }
  }
  
negative.code:     try {
        item();
        return false;
      } catch (final e, final s) {
        if (_matcher == null ||_matcher.matches(e, matchState)) {
          return true;
        } else {
          matchState.state = {
              'exception' :e,
              'stack': s
          };
          return false;
        }
      }
    }
  
  