anchor.diff:      return context.failure(_message);
     }
     abstract bool _match(int value);
  +  Parser or(Parser other) => other is! _CharacterParser ? super.or(other) : new _AlternativeCharacterParser([this, other]);
     Parser neg([String message]) => new _NegatedCharacterParser(message != null ? message : 'no $_message', this);
   }
   
  
positive.code:       return range(each[0], each[2]);
      });
      final positive = multiple.or(single).plus().map((each) {
        return each.length == 1 ? each[0] : new _AlternativeCharacterParser(null, each);
      });
      _pattern = char('^').optional().seq(positive).map((each) {
        return each[0] == null ? each[1] : each[1].neg();
  
negative.code:       }
      }
      return false;
    }
    Parser or(Parser other) {
      if (other is _CharacterParser) {
        var list = new List();
        list.addAll(_parsers);
        list.add(other);
        return new _AlternativeCharacterParser(list);
      } else {
        return super.or(other);
      }
    }
  }
  
  