anchor.diff:          end,
       case lists:splitwith(F, Stack) of
           {_, []} ->
  -            %% No match, no state change
  -            Stack;
  +            %% If we're parsing something like XML we might find
  +            %% a <link>tag</link> that is normally a singleton
  +            %% in HTML but isn't here
  +            case {is_singleton(TagName), Stack} of
  +                {true, [{T0, A0, Acc0} | Post0]} ->
  +                    case lists:splitwith(F, Acc0) of
  +                        {_, []} ->
  +                            %% Actually was a singleton
  +                            Stack;
  +                        {Pre, [{T1, A1, []} | Post1]} ->
  +                            [{T0, A0, [{T1, A1, lists:reverse(Pre)} | Post1]}
  +                             | Post0]
  +                    end;
  +                _ ->
  +                    %% No match, no state change
  +                    Stack
  +            end;
           {_Pre, [_T]} ->
               %% Unfurl the whole stack, we're done
               destack(Stack);
  
positive.code: test() ->
      test_destack(),
      test_tokens(),
      test_parse(),
      test_parse_tokens(),
      test_escape(),
      test_escape_attr(),
  
negative.code:                 [{<<"id">>,<<"home">>},
                   {<<"class">>,<<"tundra">>}],
                  [<<"&lt;<this<!-- is -->CDATA>&gt;">>]}]},
      Expect = parse(D0),
      ok.
  
  test_tokens2() ->
      D0 = <<"<channel><title>from __future__ import *</title><link>http://bob.pythonmac.org</link><description>Bob's Rants</description></channel>">>,
      Expect = [{start_tag,<<"channel">>,[],false},
                {start_tag,<<"title">>,[],false},
                {data,<<"from __future__ import *">>,false},
                {end_tag,<<"title">>},
                {start_tag,<<"link">>,[],true},
                {data,<<"http://bob.pythonmac.org">>,false},
                {end_tag,<<"link">>},
                {start_tag,<<"description">>,[],false},
                {data,<<"Bob's Rants">>,false},
                {end_tag,<<"description">>},
                {end_tag,<<"channel">>}],
      Expect = tokens(D0),
      ok.
  
  test_parse2() ->
      D0 = <<"<channel><title>from __future__ import *</title><link>http://bob.pythonmac.org<br>foo</link><description>Bob's Rants</description></channel>">>,
      Expect = {<<"channel">>,[],
                [{<<"title">>,[],[<<"from __future__ import *">>]},
                 {<<"link">>,[],[
                                 <<"http://bob.pythonmac.org">>,
                                 {<<"br">>,[],[]},
                                 <<"foo">>]},
                 {<<"description">>,[],[<<"Bob's Rants">>]}]},
      Expect = parse(D0),
      ok.
  
  