anchor.diff:                            {Acc1, Acc2}
                     end
             end, {[], []}, TaggedSpecs),
  -    XmlElClause = erl_syntax:clause(
  -		    [?AST(xmlel), ?AST(3)],
  -		    none,
  -		    [?AST([name, attrs, children])]),
  -    [erl_syntax:function(?AST(pp), Clauses1 ++ [XmlElClause, PassClause1]),
  +    [erl_syntax:function(?AST(pp), Clauses1 ++ PassClause1),
        make_function(records, [],
   		   [erl_syntax:list(
   		      lists:map(
  
positive.code: 		none,
  		[?AST(Mod = get_mod(El)),
  		 ?AST(Mod:do_encode(El, TopXMLNS))]),
      PPCase = ?AST(io_lib_pretty:print(Term, fun pp/2)),
      [make_function(encode, [?AST(El)], [?AST(encode(El, <<>>))]),
       erl_syntax:function(?AST(encode), [Clause1, Clause2]),
       make_function(get_name, [?AST(El)], GetNameCase),
  
negative.code:     end.
  
  make_printer(TaggedSpecs, PredefRecords, ModName, ParentMod) ->
      PassClause1 =
  	if ModName == ParentMod ->
  		[erl_syntax:clause(
  		   [?AST(xmlel), ?AST(3)],
  		   none,
  		   [?AST([name, attrs, children])]),
  		 erl_syntax:clause(
  		   [?AST(Name), ?AST(Arity)],
  		   none,
  		   [erl_syntax:case_expr(
  		      ?AST(get_mod(
  			     erlang:make_tuple(Arity+1, undefined, [{1, Name}]))),
  		      [erl_syntax:clause(
  			 [?AST(undefined)], none, [?AST(no)]),
  		       erl_syntax:clause(
  			 [?AST(Mod)],
  			 none,
  			 [?AST(Mod:pp(Name, Arity))])])])];
  	   true ->
  		[erl_syntax:clause([?AST(_), ?AST(_)], none, [?AST(no)])]
  	end,
      %% Exclude tags with duplicated results
      RecNames = lists:foldl(
                   fun({Tag, #elem{result = Result, module = Mod}}, Acc)
  