anchor.diff:  
   // No expectations, no commitment
   Parser choiceSimple(List<Parser> ps) {
  -  return new Parser((s, pos) {
  +  return new Parser((String s, Position pos) {
       for (final p in ps) {
         final ParseResult res = p.run(s, pos);
         if (res.isSuccess) {
  
positive.code:   Parser<List<Inline>> get str {
      if (_strCache == null) {
        _strCache = choiceSimple([
          noneOfSet(new Set.from(_strSpecialChars)..add("\n")).many1.record ^
              (String chars) => _transformString(chars),
          oneOfSet(_strSpecialChars) ^ (String chars) => _transformString(chars),
          char("\n").notFollowedBy(spnl) ^ (_) => [new Str("\n")]
  
negative.code:   Parser<Inlines> _inlinesCache;
    Parser<Inlines> get inlines {
      if (_inlinesCache == null) {
        _inlinesCache = manyUntilSimple(inline, eof) ^
            (List<List<Inline>> res) => processParsedInlines(res);
      }
      return _inlinesCache;
  