anchor.diff:              indent += size - substring.trimLeft().length;
             }
   
  +          _updateListStack(stackPosition, indent);
  +
             closeParagraph = false;
  +          // TODO there also could start code block
             break;
   
           case 1: // Strict line
  
positive.code:       } else if (blocks.last is ListBlock) {
          return acceptLazy(blocks.last.items.last.contents, s);
        }
        // TODO add list support
      }
  
      return false;
  
negative.code:             closeParagraph = true;
            }
            break;
  
          case 4: // Possible fenced code start
            // TODO
            if (buffer.length > 0) {
              buildBuffer();
  
              ParseResult codeResult;
              while (_listStack.length > 0) {
                var codeIndent = _listStack.reduce((a, b) => a + b);
                Parser codeParser = listCodeBlockFenced(codeIndent);
                codeResult = codeParser.run(s, position);
                if (codeResult.isSuccess) {
                  break;
                }
  
                _listStack.removeLast();
              }
  
              if (codeResult == null || !codeResult.isSuccess) {
                String line = res.value[1];
  
                int size = min(line.length, indent);
                String substring = line.substring(0, size);
                if (substring != " " * size) {
                  break loop;
                }
  
                buffer.add(line.substring(size, line.length));
                break;
              }
  
              addAtLevel(blocks, codeResult.value, _listStack.length);
              res = codeResult;
            }
            break;
        }
  
        position = res.position;
  