anchor.diff:      // TODO separate preprocess option
   
       _references = {};
  -    _unparsedInlines = [];
   
       var doc = document.parse(preprocess(s) + "\n\n");
   
  
positive.code:     }
  
      Position position = firstLineRes.position;
      bool tight = true;
      loop: while (true) {
        ParseResult res = listLine(indent, marker).run(s, position);
        if (!res.isSuccess) {
  
negative.code:     String line = firstLineRes.value[2];
      List<String> buffer = [line];
      bool closeParagraph = false;
      bool tight = true;
  
      void buildBuffer() {
        String s = buffer.map((l) => l + "\n").join();
        List<Block> innerBlocks;
        if (tight) {
          // TODO
          ParseResult innerRes = (blockTight.manyUntil(eof) ^ (res) => processParsedBlocks(res)).run(s);
          if (innerRes.isSuccess) {
            innerBlocks = innerRes.value;
          } else {
            tight = false;
          }
        }
  
        if (!tight) {
          innerBlocks = (block.manyUntil(eof) ^ (res) => processParsedBlocks(res)).parse(s);
        }
        if (!closeParagraph && innerBlocks.length > 0 && innerBlocks.first is Para && acceptLazy(blocks, innerBlocks.first.contents.raw)) {
          innerBlocks.removeAt(0);
        }
        if (innerBlocks.length > 0) {
          blocks.addAll(innerBlocks);
        }
        buffer = [];
      }
  