anchor.diff:          return;
         }
         if (getTight()) {
  -        ParseResult innerRes = (blockTight.manyUntil(eof) ^ (res) => processParsedBlocks(res)).run(s);
  +        ParseResult innerRes = (listTightBlock.manyUntil(eof) ^ (res) => processParsedBlocks(res)).run(s);
           if (innerRes.isSuccess) {
             innerBlocks = innerRes.value;
           } else {
  
positive.code:         break;
        }
  
        // Test for inner elements
        if (position.character == 1) {
          ParseResult blanklineRes = blankline.run(s, position);
          if (blanklineRes.isSuccess) {
            if (closeParagraph) {
              break;
            }
            closeParagraph = true;
            position = blanklineRes.position;
            continue;
          }
        }
  
        if (position.character == 1 && getSubIndent() > 0) {
          // Waiting for indent
          ParseResult indentRes = string(" " * getSubIndent()).run(s, position);
  
negative.code:       }
      }
  
      /// Is previous parsed line was empty?
      bool afterEmptyLine = false;
      List<Block> blocks = [];
      List<String> buffer = [];
      void buildBuffer() {
  