anchor.diff:  %% returned as a binary. No files will be written. The return value
   %% will be on the form `{ok,Mod,Code}' if the compilation is succesful.
   %% This option may be useful e.g. when generating test cases.
  +%%
  +%% The `copy_bytes' option specifies whether when decoding data of
  +%% type `bytes', the decoded bytes should be copied or not. Copying
  +%% requires the `binary' module, which first appeared in Erlang
  +%% R14A. When not copying decoded bytes, they will become sub binaries
  +%% of the larger input message binary. This may tie up the memory in
  +%% the input message binary longer than necessary after it has been
  +%% decoded. Copying the decoded bytes will avoid creating sub
  +%% binaries, which will in make it possible to free the input message
  +%% binary earlier. The `copy_bytes' option can have the following values:
  +%% <dl>
  +%%   <dt>`false'</dt><dd>Never copy bytes/(sub-)binaries.</dd>
  +%%   <dt>`true'</dt><dd>Always copy bytes/(sub-)binaries.</dd>
  +%%   <dt>`auto'</dt><dd>Copy bytes/(sub-)binaries if the beam vm,
  +%%           on which the compiler (this module) is running,
  +%%           has the `binary:copy/1' function.</dd>
  +%%   <dt>integer() | float()</dt><dd>Copy the bytes/(sub-)binaries if the
  +%%           message this many times or more larger than the size of the
  +%%           bytes/(sub-)binary.</dd>
  +%% </dl>
   file(File, Opts) ->
       case parse_file(File, Opts) of
           {ok, Defs} ->
  
positive.code:      "\n",
       indent(Indent, f("end"))].
  
  format_decoders(Defs, _Opts) ->
      [format_enum_decoders(Defs),
       format_initial_msgs(Defs),
       format_msg_decoders(Defs)].
  
  format_enum_decoders(Defs) ->
      %% FIXME: enum values can be negative, but "raw" varints are positive
  
negative.code:      f("    ~p(Rest, 0, 0, NewMsg).~n",
         [mk_fn(d_read_field_def_, MsgName)])].
  
  format_packed_field_seq_decoder(MsgName, #field{type=Type}=FieldDef, Opts) ->
      case Type of
          fixed32  -> format_dpacked_nonvi(MsgName, FieldDef, 32, 'little');
          sfixed32 -> format_dpacked_nonvi(MsgName, FieldDef, 32, 'little-signed');
  