anchor.diff:              to_tokens([{T1, C1}, {Tag, R1} | Rest],
                         [{start_tag, T1, A1, false} | Acc])
       end;
  -to_tokens([{Tag, [L | R1]} | Rest], Acc) when is_list(L) ->
  -    to_tokens([{Tag, R1} | Rest], [{data, L, false} | Acc]).
  +to_tokens([{Tag0, [L | R1]} | Rest], Acc) when is_list(L) ->
  +    Tag = to_tag(Tag0),
  +    to_tokens([{Tag, R1} | Rest], [{data, L, false} | Acc]);
  +to_tokens([{Tag0, [B | R1]} | Rest], Acc) when is_binary(B) ->
  +    Tag = to_tag(Tag0),
  +    to_tokens([{Tag, R1} | Rest], [{data, binary_to_list(B), false} | Acc]).
   
   test_tokens() ->
       [{start_tag, "foo", [{"bar", "baz"},
  
positive.code: escape_attr([C | Rest], Acc) ->
      escape_attr(Rest, [C | Acc]).
  
  to_tokens([], Acc) ->
      lists:reverse(Acc);
  to_tokens([{Tag, []} | Rest], Acc) ->
      to_tokens(Rest, [{end_tag, Tag} | Acc]);
  to_tokens([{Tag, [{T1, A1, C1} | R1]} | Rest], Acc) ->
      case is_singleton(T1) of
          true ->
              to_tokens([{Tag, R1} | Rest], [{start_tag, T1, A1, true} | Acc]);
  
negative.code: 
  %% @spec parse_tokens([html_token()]) -> html_node()
  %% @doc Transform the output of tokens(Doc) into a HTML tree.
  parse_tokens(Tokens) when is_list(Tokens) ->
      %% Skip over doctype
      F = fun (X) ->
                  case X of
  