anchor.diff:  
   exhaustive_is_singleton_test() ->
       T = z_cover:clause_lookup_table(?MODULE, is_singleton),
  -    [?assertEqual(V, is_singleton(K)) || {K, V} <- T].
  +    [?assertEqual(V, is_singleton(K, #{ mode => html })) || {K, V} <- T].
   
   tokenize_attributes_test() ->
       ?assertEqual(
  
positive.code:     ?assertEqual(
         [{start_tag, <<"p">>, [{class, 1}], false},
          {end_tag, <<"p">>}],
         to_tokens({p, [{class, 1}], []})),
      ?assertEqual(
         [{start_tag, <<"p">>, [], false},
          {end_tag, <<"p">>}],
  
negative.code: append_stack_child(StartTag, [{Name, Attrs, Acc} | Stack]) ->
      [{Name, Attrs, [StartTag | Acc]} | Stack].
  
  destack(<<"br">>, Stack, #{ mode := html }) ->
      %% This is an ugly hack to make dumb_br_test() pass,
      %% this makes it such that br can never have children.
      Stack;
  destack(TagName, Stack, Options) when is_list(Stack) ->
      F = fun
              ({X, _, _}) when X =:= TagName -> false;
              (_) -> true
          end,
      case lists:splitwith(F, Stack) of
          {_, []} ->
              %% 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, Options), Stack} of
                  {true, [{T0, A0, Acc0} | Post0]} ->
                      case lists:splitwith(F, Acc0) of
                          {_, []} ->
  