anchor.diff:  
   -record(anres, %% result of analysis
           {
  -          reachable_enums = sets:new()
  +          used_types = sets:new()
           }).
   
   
  
positive.code:      format_initial_msgs(Defs),
       format_msg_decoders(Defs, Opts)].
  
  format_enum_decoders(Defs, #anres{reachable_enums=ReachableEnums}) ->
      %% FIXME: enum values can be negative, but "raw" varints are positive
      %%        insert a 2-complement in the mapping in order to move computations
      %%        from runtime to compiletime??
  
negative.code:      f("    mk_type_error({expected_msg,~p}, X, Path).~n", [MsgName]),
       f("~n")].
  
  format_enum_verifiers(Defs, #anres{used_types=UsedTypes}) ->
      [format_enum_verifier(EnumName, Def)
       || {{enum,EnumName}, Def} <- Defs,
          smember({enum, EnumName}, UsedTypes)].
  
  format_enum_verifier(EnumName, EnumMembers) ->
      FnName = mk_fn(v_enum_, EnumName),
  