anchor.diff:      tokenize_literal(Rest, S, []).
       
   tokenize_word([], S, _Quote, Acc) ->
  -    {lists:reverse(Acc), [], S};
  +    {list_to_binary(lists:reverse(Acc)), [], S};
   tokenize_word([Quote | Rest], S, Quote, Acc) ->
  -    {lists:reverse(Acc), Rest, ?INC_COL(S)};
  +    {list_to_binary(lists:reverse(Acc)), Rest, ?INC_COL(S)};
   tokenize_word([$& | Rest], S, Quote, Acc) ->
       {{data, Data, false}, S1, Rest1} = tokenize_charref(Rest, ?INC_COL(S), []),
  -    tokenize_word(Rest1, S1, Quote, lists:reverse(Data, Acc));
  +    tokenize_word(Rest1, S1, Quote, lists:reverse(binary_to_list(Data), Acc));
   tokenize_word([C | Rest], S, Quote, Acc) ->
       tokenize_word(Rest, ?INC_CHAR(S, C), Quote, [C | Acc]).
   
   tokenize_literal([], S, Acc) ->
  -    {lists:reverse(Acc), [], S};
  +    {list_to_binary(lists:reverse(Acc)), [], S};
   tokenize_literal(Rest=">" ++ _, S, Acc) ->
  -    {lists:reverse(Acc), Rest, S};
  +    {list_to_binary(lists:reverse(Acc)), Rest, S};
   tokenize_literal([$& | Rest], S, Acc) ->
       {{data, Data, false}, S1, Rest1} = tokenize_charref(Rest, ?INC_COL(S), []),
  -    tokenize_literal(Rest1, S1, lists:reverse(Data, Acc));
  +    tokenize_literal(Rest1, S1, lists:reverse(binary_to_list(Data), Acc));
   tokenize_literal(Rest=[C | _], S, Acc) when ?IS_WHITESPACE(C)
                                               orelse C =:= $/
                                               orelse C =:= $= ->
  -    {lists:reverse(Acc), Rest, S};
  +    {list_to_binary(lists:reverse(Acc)), Rest, S};
   tokenize_literal([C | Rest], S, Acc) ->
       tokenize_literal(Rest, ?INC_COL(S), [C | Acc]).
   
   tokenize_cdata([], S, Acc) ->
  -    {{data, lists:reverse(Acc), false}, [], S};
  +    {{data, list_to_binary(lists:reverse(Acc)), false}, [], S};
   tokenize_cdata("]]>" ++ Rest, S, Acc) ->
  -    {{data, lists:reverse(Acc), false}, Rest, ?ADV_COL(S, 3)};
  +    {{data, list_to_binary(lists:reverse(Acc)), false}, Rest, ?ADV_COL(S, 3)};
   tokenize_cdata([C | Rest], S, Acc) ->
       tokenize_cdata(Rest, ?INC_CHAR(S, C), [C | Acc]).
   
   tokenize_comment([], S, Acc) ->
  -    {{comment, lists:reverse(Acc)}, [], S};
  +    {{comment, list_to_binary(lists:reverse(Acc))}, [], S};
   tokenize_comment("-->" ++ Rest, S, Acc) ->
  -    {{comment, lists:reverse(Acc)}, Rest, ?ADV_COL(S, 3)};
  +    {{comment, list_to_binary(lists:reverse(Acc))}, Rest, ?ADV_COL(S, 3)};
   tokenize_comment([C | Rest], S, Acc) ->
       tokenize_comment(Rest, ?INC_CHAR(S, C), [C | Acc]).
  
positive.code:                Unichar ->
                     xmerl_ucs:to_utf8(Unichar)
             end,
      {{data, Data, false}, Rest, ?INC_COL(S)};
  tokenize_charref([C | Rest], S, Acc) ->
      tokenize_charref(Rest, ?INC_COL(S), [C | Acc]).
  
  
negative.code:     %% Native {"p", [{"class", "foo"}], ["content"]}
      Tag = to_tag(Tag0),
      T1 = to_tag(T0),
      case is_singleton(norm(T1)) of
          true ->
              to_tokens([{Tag, R1} | Rest], [{start_tag, T1, A1, true} | Acc]);
          false ->
  