anchor.diff:      [erl_syntax:function(?AST(get_mod), Clauses1),
        erl_syntax:function(?AST(get_mod), Clauses2)].
   
  -make_top_decoders(_TaggedSpecs, ModName) ->
  +make_top_decoders(TaggedSpecs, ModName, Opts) ->
       C0 = ?AST(XMLNS = get_attr(<<"xmlns">>, Attrs, TopXMLNS)),
       C1 = erl_syntax:case_expr(
   	   ?AST(get_mod(Name, XMLNS)),
  
positive.code:     Hdr = header(FileName),
      FunDeps = build_fun_deps(FunForms),
      case write_modules(ASTs, ModName, FunDeps, ErlDirName,
  		       FileName, TaggedElems, PredefRecords) of
          ok ->
  	    case write_resolver(TaggedElems, ModName, ErlDirName, FileName) of
  		ok ->
  
negative.code: 		none,
  		[?AST(Mod = get_mod(El)),
  		 ?AST(Mod:do_encode(El, TopXMLNS))]),
      JClause1 = erl_syntax:clause(
                   [?AST({xmlel, _, _, _} = El)],
                   none,
                   [?AST(try decode(El) of
                             JSON -> encode_json(JSON)
                         catch
                             _:_ ->
                                 [<<"XmlString">>, fxml:element_to_binary(El)]
                         end)]),
      JClause3 = erl_syntax:clause(
                   [?AST(El)],
                   none,
                   [?AST(Mod = get_mod(El)),
                    ?AST(Mod:do_encode_json(El))]),
      [make_function(encode, [?AST(El)], [?AST(encode(El, <<>>))]),
       erl_syntax:function(?AST(encode), [Clause1, Clause2, Clause3]),
       case proplists:get_bool(json, Opts) of
           true ->
               erl_syntax:function(?AST(encode_json), [JClause1, JClause3]);
           false ->
               erl_syntax:comment([])
       end,
       make_function(get_name, [?AST(El)], GetNameCase),
       make_function(get_ns, [?AST(El)], GetNSCase),
       make_function(is_known_tag,
  