anchor.diff:      tokenize_doctype(Rest, ?ADV_COL(S, 10), []);
   tokenize("<![CDATA[" ++ Rest, S) ->
       tokenize_cdata(Rest, ?ADV_COL(S, 9), []);
  +tokenize("<?" ++ Rest, S) ->
  +    {Tag, Rest1, S1} = tokenize_literal(Rest, ?ADV_COL(S, 2), []),
  +    {Attrs, Rest2, S2} = tokenize_attributes(Rest1, S1, []),
  +    {Rest3, S3} = find_qgt(Rest2, S2),
  +    {{pi, Tag, Attrs}, Rest3, S3};
   tokenize("&" ++ Rest, S) ->
       tokenize_charref(Rest, ?INC_COL(S), []);
   tokenize("</" ++ Rest, S) ->
  
positive.code:     lists:reverse(Acc);
  to_html([{'=', Content} | Rest], Acc) ->
      to_html(Rest, [Content | Acc]);
  to_html([{comment, Comment} | Rest], Acc) ->
      to_html(Rest, [["<!--" ++ Comment, "-->"] | Acc]);
  to_html([{doctype, Parts} | Rest], Acc) ->
  
negative.code:     tree(Rest, append_stack_child(norm({Tag, Attrs}), S));
  tree([{start_tag, Tag, Attrs, false} | Rest], S) ->
      tree(Rest, stack(norm({Tag, Attrs}), S));
  tree([T={pi, _Tag, _Attrs} | Rest], S) ->
      tree(Rest, append_stack_child(T, S));
  tree([T={comment, _Comment} | Rest], S) ->
      tree(Rest, append_stack_child(T, S));
  tree(L=[{data, _Data, _Whitespace} | _], S) ->
  