anchor.diff:      find_gt(Rest, ?INC_CHAR(S, C), HasSlash).
   
   tokenize_charref([], S, Acc) ->
  -    {{text, lists:reverse(Acc)}, [], S};
  +    {{data, lists:reverse(Acc), false}, [], S};
   tokenize_charref(Rest=">" ++ _, S, Acc) ->
  -    {{text, lists:reverse(Acc)}, Rest, S};
  +    {{data, lists:reverse(Acc), false}, Rest, S};
   tokenize_charref(Rest=[C | _], S, Acc) when ?IS_WHITESPACE(C) 
                                               orelse C =:= ?QUOTE
                                               orelse C =:= $/ ->
  -    {{text, lists:reverse(Acc)}, Rest, S};
  +    {{data, lists:reverse(Acc), false}, Rest, S};
   tokenize_charref(";" ++ Rest, S, Acc) ->
       Raw = lists:reverse(Acc),
       Data = case mochiweb_charref:charref(Raw) of
  
positive.code: tokenize_word([?QUOTE | Rest], S, Acc) ->
      {lists:reverse(Acc), Rest, ?INC_COL(S)};
  tokenize_word([$& | Rest], S, Acc) ->
      {{text, Data}, S1, Rest1} = tokenize_charref(Rest, ?INC_COL(S), []),
      tokenize_word(Rest1, S1, lists:reverse(Data, Acc));
  tokenize_word([C | Rest], S, Acc) ->
      tokenize_word(Rest, ?INC_CHAR(S, C), [C | Acc]).
  
negative.code: is_singleton("link") -> true;
  is_singleton(_) -> false.
  
  tokenize_data([], S, Acc, Whitespace) ->
      {{data, lists:reverse(Acc), Whitespace}, [], S};
  tokenize_data(Rest="<" ++ _, S, Acc, Whitespace) ->
      {{data, lists:reverse(Acc), Whitespace}, Rest, S};
  tokenize_data(Rest="&" ++ _, S, Acc, Whitespace) ->
      {{data, lists:reverse(Acc), Whitespace}, Rest, S};
  tokenize_data([C | Rest], S, Acc, Whitespace) when ?IS_WHITESPACE(C) ->
      tokenize_data(Rest, S, [C | Acc], Whitespace);
  tokenize_data([C | Rest], S, Acc, _) ->
      tokenize_data(Rest, S, [C | Acc], false).
  
  tokenize_attributes([], S, Acc) ->
      {lists:reverse(Acc), [], S};
  