anchor.diff:  
   process_metas(ID, Attr, _Children, AST, _Options) ->
     [[Tp | _]] = zml:get_attr_vals(type, Attr, ?DEFAULT_TYPE),
  -
     Metas = lists:foldr(fun(Input,Acc) -> new_metas(Input, Acc, Attr) end, [],
       [
         {encoding,    Tp, ?ENCODING_DEFAULT},
  
positive.code:     fun process_metas/5,
      fun process_javascript/5,
      fun process_zss_and_images/5,
      fun process_cleanup/5
    ],
    lists:foldl(
  
negative.code:   build_meta(Key, Name, Vals, IsXml, IsXml).
  
  build_meta(Key, Name, Vals, IsXml, LowerVals) ->
    NewName = case {Name, IsXml} of
      {"MSSmartTagsPreventParsing", $x} -> Name;
      {_, $x} -> to_lower(zml:str(Name));
      {_, _ } -> zml:str(Name)
    end,
    NewVals = case LowerVals of
      $x -> to_lower(join(Vals, " "));
      _  -> join(Vals, " ")
    end,
    [zml:new_tag(meta,
      [{"content", [NewVals]}, {zml:str(Key), [NewName]}], [])].
  
  
  process_autoclose(_ID, Attr, _Children, AST, _Options) ->
    [[TypeFC | _]] = zml:get_attr_vals(type, Attr, ?DEFAULT_TYPE),
    autoclose(AST, TypeFC == $x, []).
  
  autoclose([], _, Acc) -> lists:reverse(Acc);
  
  autoclose([{Tag, Type, Attr, []} | T], IsXml, Acc) ->
    autoclose(T, IsXml, [{Tag, Type, Attr, close_tag(IsXml, Tag)} | Acc]);
  
  autoclose([{Tag, Type, Attr, Children} | T], IsXml, Acc) ->
    autoclose(T, IsXml,
      [{Tag, Type, Attr, autoclose(Children, IsXml, [])} | Acc]);
  
  autoclose([H | T], IsXml, Acc) -> autoclose(T, IsXml, [H | Acc]).
  
  close_tag(true, "meta" ) -> [];
  close_tag(true, "img"  ) -> [];
  close_tag(true, "link" ) -> [];
  close_tag(true, "br"   ) -> [];
  close_tag(true, "hr"   ) -> [];
  close_tag(true, "input") -> [];
  close_tag(true, "area" ) -> [];
  close_tag(true, "param") -> [];
  close_tag(true, "col"  ) -> [];
  close_tag(true, "base" ) -> [];
  
  close_tag(_, _) -> [""].
  
  