anchor.diff:        }
       }
       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);
  +    }
     }
   }
   
  
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 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);
  }
  
  