anchor.diff:  -define(IS_LITERAL_SAFE(C),
           ((C >= $A andalso C =< $Z) orelse (C >= $a andalso C =< $z)
            orelse (C >= $0 andalso C =< $9))).
  -                                
  +
   -record(decoder, {line=1,
                     column=1,
                     offset=0}).
  
positive.code:         tokens(<<"<foo bar=baz wibble='wibble' alice=bob/>">>),
      [{comment, <<"[if lt IE 7]>\n<style type=\"text/css\">\n.no_ie { display: none; }\n</style>\n<![endif]">>}] =
          tokens(<<"<!--[if lt IE 7]>\n<style type=\"text/css\">\n.no_ie { display: none; }\n</style>\n<![endif]-->">>),
      ok.
  
  tokens(B, S=#decoder{offset=O}, Acc) ->
  
negative.code:             lists:reverse(Acc);
          _ ->
              {Tag, S1} = tokenize(B, S),
              case parse_flag(Tag) of
                  script ->
                      {Tag2, S2} = tokenize_script(B, S1),
                      tokens(B, S2, [Tag2, Tag | Acc]);
                  textarea ->
                      {Tag2, S2} = tokenize_textarea(B, S1),
                      tokens(B, S2, [Tag2, Tag | Acc]);
                  none ->
                      tokens(B, S1, [Tag | Acc])
              end
      end.
  
  parse_flag({start_tag, B, _, false}) ->
      case string:to_lower(binary_to_list(B)) of
          "script" ->
              script;
          "textarea" ->
              textarea;
          _ ->
              none
      end;
  parse_flag(_) ->
      none.
  
  tokenize(B, S=#decoder{offset=O}) ->
      case B of
  