anchor.diff:                        [{start_tag, T1, A1, false} | Acc])
       end;
   to_tokens([{Tag0, [L | R1]} | Rest], Acc) when is_list(L) ->
  +    %% List text
       Tag = to_tag(Tag0),
       to_tokens([{Tag, R1} | Rest], [{data, L, false} | Acc]);
   to_tokens([{Tag0, [B | R1]} | Rest], Acc) when is_binary(B) ->
  +    %% Binary text
       Tag = to_tag(Tag0),
       to_tokens([{Tag, R1} | Rest], [{data, binary_to_list(B), false} | Acc]).
   
  
positive.code: to_html([{end_tag, Tag} | Rest], Acc) ->
      to_html(Rest, [["</" ++ Tag, ">"] | Acc]).
  
  attrs_to_html([], Acc) ->
      lists:reverse(Acc);
  attrs_to_html([{K, V} | Rest], Acc) ->
  
negative.code: to_tokens([{Tag0, [{T0} | R1]} | Rest], Acc) ->
      %% Allow {br}
      to_tokens([{Tag0, [{T0, [], []} | R1]} | Rest], Acc);
  to_tokens([{Tag0, [T0={'=', _C0} | R1]} | Rest], Acc) ->
      %% Allow {'=', iolist()}
      to_tokens([{Tag0, R1} | Rest], [T0 | Acc]);
  to_tokens([{Tag0, [T0={comment, _C0} | R1]} | Rest], Acc) ->
      %% Allow {comment, iolist()}
      to_tokens([{Tag0, R1} | Rest], [T0 | Acc]);
  to_tokens([{Tag0, [{T0, A0=[{_, _} | _]} | R1]} | Rest], Acc) ->
      %% Allow {p, [{"class", "foo"}]}
      to_tokens([{Tag0, [{T0, A0, []} | R1]} | Rest], Acc);
  to_tokens([{Tag0, [{T0, C0} | R1]} | Rest], Acc) ->
      %% Allow {p, "content"} and {p, <<"content">>}
      to_tokens([{Tag0, [{T0, [], C0} | R1]} | Rest], Acc);
  to_tokens([{Tag0, [{T0, A1, C0} | R1]} | Rest], Acc) when is_binary(C0) ->
      %% Allow {"p", [{"class", "foo"}], <<"content">>}
  