anchor.diff:   */
   Parser stringIgnoreCase(String element, [String message]) {
     final lowerElement = element.toLowerCase();
  -  return new PredicateParser(element.length,
  +  return new _PredicateParser(element.length,
       (String each) => lowerElement == each.toLowerCase(),
       message != null ? message : '$element expected');
   }
  
positive.code: /**
   * A parser for a single literal satisfying a predicate.
   */
  class PredicateParser extends Parser {
  
    final int _length;
    final Function _predicate;
    final String _message;
  
    PredicateParser(this._length, this._predicate, this._message);
  
    Result _parse(Context context) {
      final start = context.position;
  
negative.code:  * Returns a parser that accepts any input element.
   */
  Parser any([String message]) {
    return new _PredicateParser(1,
      (each) => true,
      message != null ? message : 'input expected');
  }
  
  /**
   * Returns a parser that accepts any of the [elements].
   */
  Parser anyIn(dynamic elements, [String message]) {
    return new _PredicateParser(1,
      (each) => elements.indexOf(each) >= 0,
      message != null ? message : 'any of $elements expected');
  }
  