anchor.diff:              <<Acc/binary, BTag/binary, CTags/binary>>
       end;
   
  -convert(<<>>, PState = [{Tag, _, CT}|_], _PL, _CL, Acc)
  +parse(<<>>, PState = [{Tag, _, CT}| _], _PL, _CL, Acc)
       when (Tag == ul) or (Tag == ol) ->
       {CTags, _} = closeTags(0, PState),
       BTag       = makeTag(li, CT),
       <<Acc/binary, BTag/binary, CTags/binary>>;
   
  -convert(<<>>, [{url, CT}|St], _PL, _CL, Acc) ->
  +parse(<<>>, [{url, CT}| St], _PL, _CL, Acc) ->
       {CTags, _} = closeTags(0, St),
       BTag       = makeTag(p, <<$<, CT/binary>>),
       <<Acc/binary, BTag/binary, CTags/binary>>;
   
  -convert(<<>>, [{Tag, CT}|St], _PL, _CL, Acc) ->
  +parse(<<>>, [{Tag, CT}| St], _PL, _CL, Acc) ->
       {CTags, _} = closeTags(0, St),
       BTag       = makeTag(Tag, CT),
       <<Acc/binary, BTag/binary, CTags/binary>>;
   
   %% Parse Lists
  -convert(Content, [ol_start|St], PL, CL, Acc) ->
  +parse(Content, [ol_start| St], PL, CL, Acc) ->
       {true, NumBin, Rest} = parseOLNum(Content),
       Indent = calcIndent(Content, Rest),
       Acc2   = <<Acc/binary, "<ol start='", NumBin/binary, "'>">>,
       convert(Rest, [{ol, Indent, <<>>}|St], PL, CL, Acc2);
   
  -convert(Content, [ul_start|St], PL, CL, Acc) ->
  +parse(Content, [ul_start| St], PL, CL, Acc) ->
       {true, Rest} = parseULBullet(Content),
       Indent = calcIndent(Content, Rest),
       Acc2   = <<Acc/binary, "<ul>">>,
       convert(Rest, [{ul, Indent, <<>>}|St], PL, CL, Acc2);
   
  -convert(<<13, 10, Rest/binary>>, PState = [{Tag, Ind, CT}|St], PL, CL, Acc)
  +parse(<<13, 10, Rest/binary>>, PState = [{Tag, Ind, CT}| St], PL, CL, Acc)
     when (Tag == ol) or (Tag == ul) ->
       BTag = makeTag(li, CT),
       case {Tag, parseList(Tag, Rest, Ind)} of
  
positive.code:     end;
  
  %% Indented code block
  convert(<<13, 10, 32, 32, 32, 32, Rest/binary>>, [{code, CT}], <<>>, <<>>, Acc) ->
      convert(Rest, [{code, <<CT/binary, 13, 10>>}], <<>>, <<>>, Acc);
  convert(<<13, 10, 9, Rest/binary>>, [{code, CT}], <<>>, <<>>, Acc) ->
      convert(Rest, [{code, <<CT/binary, 13, 10>>}], <<>>, <<>>, Acc);
  
  convert(<<13, 10, Rest/binary>>, [{code, CT}], <<>>, <<>>, Acc) ->
      BTag = makeTag(code, CT),
      Acc2 = <<Acc/binary, BTag/binary>>,
      convert(Rest, [{p, <<>>}], <<>>, <<>>, Acc2);
  
  convert(<<>>, [{Tag, CT}], <<>>, <<>>, Acc)
      when (Tag == code) or (Tag == f1_code) or (Tag == f2_code) ->
      BTag = makeTag(code, CT),
      <<Acc/binary, BTag/binary>>;
  
  convert(<<"    ", Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{code, <<>>}], <<>>, <<>>, Acc);
  
  convert(<<9, Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{code, <<>>}], <<>>, <<>>, Acc);
  
  %% Fenced code block
  convert(<<"~~~", 13, 10, Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{f1_code, <<>>}], <<>>, <<>>, Acc);
  convert(<<"~~~", 10, Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{f1_code, <<>>}], <<>>, <<>>, Acc);
  convert(<<"```", 13, 10, Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{f2_code, <<>>}], <<>>, <<>>, Acc);
  convert(<<"```", 10, Rest/binary>>, [{p, <<>>}], <<>>, <<>>, Acc) ->
      convert(Rest, [{f2_code, <<>>}], <<>>, <<>>, Acc);
  
  convert(<<13, 10, Rest/binary>>, [{Tag, CT}], <<>>, <<>>, Acc)
      when (Tag == f1_code) or (Tag == f2_code) ->
      End = endFenced(Tag),
      case remWS(Rest) of
          {<<End:3/bytes, Rest2/binary>>, Count} when Count =< 3 ->
              BTag = makeTag(code, CT),
              Acc2 = <<Acc/binary, BTag/binary>>,
              convert(Rest2, [{p, <<>>}], <<>>, <<>>, Acc2);
          _ ->
              convert(Rest, [{Tag, <<CT/binary, 13, 10>>}], <<>>, <<>>, Acc)
      end;
  
  convert(<<Char:8, Rest/binary>>, [{Tag, CT}], <<>>, <<>>, Acc)
      when (Tag == code) or (Tag == f1_code) or (Tag == f2_code) ->
      convert(Rest, [{Tag, <<CT/binary, Char:8>>}], <<>>, <<>>, Acc);
  
  %% Headers
  convert(<<"#", Rest/binary>>, PState = [{p, CT}|St], PL, CL, Acc)
    when byte_size(CT) =< 3 ->
      case remWS(CT) of
          {<<>>, _} ->
              case headerStart(<<"#", Rest/binary>>) of
                  {true, Tag, Rest2} ->
                      BTag = makeTag(p, CT),
                      Acc2 = <<Acc/binary, BTag/binary>>,
                      convert(Rest2, [{Tag, <<>>}|St], PL, CL, Acc2);
                  false ->
                      convert(Rest, addCT(<<"#">>, PState), PL, CL, Acc)
              end;
          _ ->
              convert(Rest, addCT(<<"#">>, PState), PL, CL, Acc)
      end;
  
  %% Header end by #...
  convert(<<" #", Rest/binary>>, [{Tag, CT}|St], PL, CL, Acc)
    when (Tag == h6) or (Tag == h5) or (Tag == h4) or
         (Tag == h3) or (Tag == h2) or (Tag == h1) ->
      case headerEnd(Rest) of
  
negative.code:     end;
  
  %% Header end by line end.
  parse(<<13, 10, Rest/binary>>, [{Tag, CT}| St], PL, CL, Acc)
    when (Tag == h6) or (Tag == h5) or (Tag == h4) or
         (Tag == h3) or (Tag == h2) or (Tag == h1) ->
      BTag = makeTag(Tag, CT),
  