anchor.diff:  %% The `{module_name_prefix,Prefix}' will add `Prefix' (a string or an atom)
   %% to the generated code and definition files. The `{module_name_suffix,Suffix}'
   %% works correspondingly.
  +%%
  +%% The `any_translate' option can be used to provide packer and
  +%% unpacker functions for `google.protobuf.Any' messages.
  +%% The translation calls are specified as `{Mod,Fn,ArgTemplate}' where
  +%% `Mod',`Fn' is a module and function to call, `ArgTemplate' is a list
  +%% of terms, containing markers, such as `$1', `$2' and so on, for where
  +%% to place the actual args. This makes it possible to specify additional
  +%% static argument terms, for instance.
  +%% The translator functions are called as follows:
  +%% <dl>
  +%%   <dt>Encode (Packing)</dt>
  +%%   <dd>Call `Mod:Fn(Term)' to pack the `Term' (`$1') to
  +%%       a `google.protobuf.Any' message.</dd>
  +%%   <dt>Decode (Unpacking)</dt>
  +%%   <dd>Call `Mod:Fn(Any)' to unpack the `Any' (`$1') to
  +%%       unpack a `google.protobuf.Any' message to a term.</dd>
  +%%   <dt>Merge </dt>
  +%%   <dd>Call `Mod:Fn(Term1, Term2) -> Term3' to merge two
  +%%       unpacked terms to a resulting Term3. The `$1' is the
  +%%       previously seen term (during decoding, on encountering a
  +%%       second `Any' field), or the first argument to the
  +%%       `merge_msgs' function. The `$2' is the lastly seen term, or
  +%%       the second argument to the `merge_msgs' function.</dd>
  +%%   <dt>Verify</dt>
  +%%   <dd>Call `Mod:Fn(Term, ErrorF) -> _' to verify an unpacked `Term'.
  +%%       If `Term' (`$1') is valid, the function is expected to just return
  +%%       any value, which is ignored and discarded.
  +%%       If `Term' is invalid, the function is exptected to
  +%%       call `ErrorF' (`$errorf') with one argument, the reason for
  +%%       error. That function will raise an error, which will also
  +%%       additionally contain the actual value of `Term' and the path
  +%%       to the field.</dd>
  +%% </dl>
   file(File, Opts0) ->
       Opts1 = normalize_alias_opts(Opts0),
       Opts2 = normalize_return_report_opts(Opts1),
  
positive.code:       "       Show version\n"}
      ].
  
  
  determine_cmdline_op(Opts, FileNames) ->
      case {lists:member(help, Opts), lists:member(version, Opts)} of
  
negative.code:       "       If no package is defined, nothing will be prepended.\n"
        "       Default is to not prepend package names for backwards\n"
        "       compatibility, but it is needed for some proto files.\n"},
       {"any_translate", fun opt_any_translate/2, any_translate,
        " e=Mod:Fn,d=Mod:Fn,m=Mod:Fn,v=Mod:Fn\n"
        "       For a google.protobuf.Any message, call Mod:Fn to:\n"
        "       - encode (calls Mod:Fn(Term) -> AnyMessage to pack)\n"
        "       - decode (calls Mod:Fn(AnyMessage) -> Term to unpack)\n"
        "       - merge  (calls Mod:Fn(Term,Term2) -> Term3 to merge unpacked)\n"
        "       - verify (calls Mod:Fn(Term,ErrorF) -> _ to verify unpacked)\n"},
       {"msgprefix", 'string()', msg_name_prefix, "Prefix\n"
        "       Prefix each message with Prefix.\n"},
       {"modprefix", 'string()', module_name_prefix, "Prefix\n"
  