anchor.diff:              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;
  
positive.code:     return restParser.run(s, openFenceRes.position);
    });
  
    //
    // Raw html block
    //
  
negative.code:       } else if (blocks.last is ListBlock) {
          return acceptLazy(blocks.last.items.last.contents, s);
        }
      }
  
      return false;
  