anchor.diff:                        true = is_atom(H),
                         false = is_label(H),
                         [Tag|_] = dict:fetch(H, RecNames),
  -                      true = lists:all(fun is_label/1, T),
  +		      Fields = case dict:find(H, PredefRecords) of
  +				   {ok, Fs} ->
  +				       Fs;
  +				   error ->
  +				       [label_to_record_field(F) || F <- T]
  +			       end,
                         [erl_syntax:clause(
                            [erl_syntax:atom(H), abstract(length(T))],
                            none,
                            [erl_syntax:list(
  -                            [erl_syntax:atom(
  -                               label_to_record_field(F)) || F <- T])])
  +                            [erl_syntax:atom(F) || F <- Fields])])
                          |Acc]
                     catch _:_ ->
                             Acc
  
positive.code:     [erl_syntax:function(erl_syntax:atom("encode"), [XmlElClause|EncClauses]),
       erl_syntax:function(erl_syntax:atom("get_ns"), NSClauses)].
  
  make_printer(TaggedSpecs) ->
      PassClause = erl_syntax:clause(
                     [erl_syntax:underscore(),
                      erl_syntax:underscore()],
  
negative.code:                [erl_syntax:atom(list_to_atom(ModName))]),
      Decoders = make_top_decoders(TaggedElems, ModName, Opts),
      Encoders = make_top_encoders(TaggedElems, Opts),
      AuxFuns = make_aux_funs(),
      {AttrForms, FunForms} = lists:partition(
  			      fun(Form) ->
  