anchor.diff:  
   maybe_unroll(Tag,{Fun,Acc,Stack}) ->
     case lists:member(Tag,Stack) of
  -    true -> 
  +    true ->
         %% close all open tags in this tags scope
         {Hd,Tl} = lists:splitwith(fun(T)-> T=/=Tag end,Stack),
         unroll(Hd,{Fun,Acc,Tl});
  
positive.code: 
  ff(What,Str) -> ff(What,Str,0,Str).
  
  ff(script,<<"</script>",Str/binary>>,N,Bin) -> 
    {Scr,_} = split_binary(Bin,N),
    {{tag,""},<<"/script>",Str/binary>>,{text,Scr}};
  ff(style,<<"</style>",Str/binary>>,N,Bin) -> 
    {Scr,_} = split_binary(Bin,N),
    {{tag,""},<<"/style>",Str/binary>>,{text,Scr}};
  ff(text,<<"<",Str/binary>>,N,Bin) -> 
    {Scr,_} = split_binary(Bin,N),
    {{tag,""},ws(Str),{text,Scr}};
  ff(_,<<>>,_,Str) -> 
    {{text,Str},"",eof};
  ff(What,<<_,Str/binary>>,N,Bin) -> 
    ff(What,Str,N+1,Bin).
  
  ws(?d(X,Str)) when ?ws(X) -> ws(Str);
  
negative.code:     [{tag,"head",[]},
       {tag,"b",[]},
       {tag,"p",[]},
       {tag,"p",[]},
       {end_tag,"p"},
       {end_tag,"p"},
       {end_tag,"b"},
  