anchor.diff:  }
   
   /**
  - * Internal abstract character matcher class.
  - */
  -abstract class _CharMatcher {
  -  bool match(int value);
  -}
  -
  -/**
  - * Internal character matcher that negates the result.
  - */
  -class _NotCharMatcher implements _CharMatcher {
  -
  -  final _CharMatcher _matcher;
  -
  -  const _NotCharMatcher(this._matcher);
  -
  -  @override
  -  bool match(int value) => !_matcher.match(value);
  -
  -}
  -
  -/**
  - * Internal character matcher for alternatives.
  - */
  -class _AltCharMatcher implements _CharMatcher {
  -
  -  final List<_CharMatcher> _matchers;
  -
  -  const _AltCharMatcher(this._matchers);
  -
  -  @override
  -  bool match(int value) {
  -    for (var matcher in _matchers) {
  -      if (matcher.match(value)) {
  + * Internal abstract character predicate class.
  + */
  +abstract class _CharacterPredicate {
  +  bool test(int value);
  +}
  +
  +/**
  + * Internal character predicate that negates the result.
  + */
  +class _NotCharacterPredicate implements _CharacterPredicate {
  +
  +  final _CharacterPredicate _predicate;
  +
  +  const _NotCharacterPredicate(this._predicate);
  +
  +  @override
  +  bool test(int value) => !_predicate.test(value);
  +
  +}
  +
  +/**
  + * Internal character predicate for alternatives.
  + */
  +class _AltCharacterPredicate implements _CharacterPredicate {
  +
  +  final List<_CharacterPredicate> _predicates;
  +
  +  const _AltCharacterPredicate(this._predicates);
  +
  +  @override
  +  bool test(int value) {
  +    for (var predicate in _predicates) {
  +      if (predicate.test(value)) {
           return true;
         }
       }
  
positive.code:   String toString() => '${super.toString()}[$_message]';
  
    @override
    Parser copy() => new CharacterParser(_matcher, _message);
  
    @override
    bool hasEqualProperties(CharacterParser other) {
      return super.hasEqualProperties(other)
          && _matcher == other._matcher
          && _message == other._message;
    }
  
  
negative.code:       message != null ? message : '$start..$stop expected');
  }
  
  class _RangeCharMatcher implements _CharacterPredicate {
  
    final int _start;
  
  