anchor.diff:  find_default_out_dir({_Mod, _S}) -> ".";
   find_default_out_dir(File) -> filename:dirname(File).
   
  -%% @spec proto_defs(Mod, Defs) -> CompRet
   %% @equiv proto_defs(Mod, Defs, [])
  +-spec proto_defs(module(), gpb_parse:defs()) -> comp_ret().
   proto_defs(Mod, Defs) ->
       proto_defs(Mod, Defs, []).
   
  -%% @spec proto_defs(Mod, Defs, Opts) -> CompRet
  -%%            Mod  = atom()
  -%%            Defs = [Def]
  -%%            Def = {{enum, EnumName}, Enums} |
  -%%                  {{msg, MsgName}, MsgFields}
  -%%            EnumName = atom()
  -%%            Enums = [{Name, integer()}]
  -%%            Name = atom()
  -%%            MsgName = atom()
  -%%            MsgFields = [#field{}]
  -%%
   %% @doc
   %% Compile a list of pre-parsed definitions to file or to a binary.
   %% See {@link file/2} for information on options and return values.
  +-spec proto_defs(module(), gpb_parse:defs(), opts()) -> comp_ret().
   proto_defs(Mod, Defs, Opts) ->
       do_proto_defs_aux1(Mod, Defs, normalize_opts(Opts)).
   
  
positive.code: %%
  %% @doc Produce a plain-text error message from a reason returned by
  %% for instance {@link file/2} or {@link proto_defs/2}.
  format_error({error, Reason, _Warns}) -> fmt_err(Reason);
  format_error({error, Reason})         -> fmt_err(Reason);
  format_error(Reason)                  -> fmt_err(Reason).
  
negative.code: %% version of Erlang/OTP to generate code for. The default, `current'
  %% means that the generated code is expected to be compiled and run
  %% on the same major version as gpb runs on.
  -spec file(string(), opts()) -> comp_ret().
  file(File, Opts) ->
      do_file_or_string(File, Opts).
  
  %% @equiv string(Mod, Str, [])
  -spec string(module(), string()) -> comp_ret().
  string(Mod, Str) ->
      string(Mod, Str, []).
  
  %% @doc
  %% Compile a `.proto' file as string. See {@link file/2} for information
  %% on options and return values.
  -spec string(module(), string(), opts()) -> comp_ret().
  string(Mod, Str, Opts) ->
      do_file_or_string({Mod, Str}, Opts).
  
  