anchor.diff:      end;
   type_to_comment(#field{type=Type, occurrence=Occurrence}, false=_TypeSpec) ->
       case Occurrence of
  -        required -> f("~w", [Type]);
  -        repeated -> "[" ++ f("~w", [Type]) ++ "]";
  -        optional -> f("~w (optional)", [Type])
  +        required -> ?f("~w", [Type]);
  +        repeated -> "[" ++ ?f("~w", [Type]) ++ "]";
  +        optional -> ?f("~w (optional)", [Type])
       end.
   
   lineup(CurrentCol, TargetCol) when CurrentCol < TargetCol ->
  
positive.code:                                          %%            pass_as_params
          }).
  
  -define(ff(Fmt, Args), lists:flatten(io_lib:format(Fmt, Args))).
  
  %% @spec file(File) -> ok | {error, Reason}
  
negative.code:     DoNif = proplists:get_bool(nif, Opts),
      AsLib = proplists:get_bool(include_as_lib, Opts),
      iolist_to_binary(
        [?f("%% Automatically generated, do not edit~n"
            "%% Generated by ~p version ~s on ~w~n",
            [?MODULE, gpb:version_as_string(), calendar:local_time()]),
         ?f("-module(~w).~n", [Mod]),
         "\n",
         ?f("-export([encode_msg/1, encode_msg/2]).~n"),
         ?f("-export([decode_msg/2]).~n"),
         ?f("-export([merge_msgs/2]).~n"),
         ?f("-export([verify_msg/1]).~n"),
         ?f("-export([get_msg_defs/0]).~n"),
         ?f("-export([get_msg_names/0]).~n"),
         ?f("-export([get_enum_names/0]).~n"),
         ?f("-export([find_msg_def/1, fetch_msg_def/1]).~n"),
         ?f("-export([find_enum_def/1, fetch_enum_def/1]).~n"),
         format_enum_value_symbol_converter_exports(Defs),
         ?f("-export([get_package_name/0]).~n"),
         [?f("-export([descriptor/0]).~n") || get_gen_descriptor_by_opts(Opts)],
         ?f("-export([gpb_version_as_string/0, gpb_version_as_list/0]).~n"),
         "\n",
         [["-on_load(load_nif/0).\n",
           "-export([load_nif/0]). %% for debugging of nif loading\n",
           "\n"]
          || DoNif],
         ?f("-include(\"~s.hrl\").~n", [Mod]),
         case get_field_format_by_opts(Opts) of
             fields_as_records ->
                 if AsLib ->
                         ?f("-include_lib(\"gpb/include/gpb.hrl\").~n");
                    not AsLib ->
                         ?f("-include(\"gpb.hrl\").~n")
                 end;
             fields_as_proplists ->
                 ""
         end,
         "\n",
         [[?f("~s~n", [format_load_nif(Mod, Opts)]),
           "\n"]
          || DoNif],
         %% Enabling inlining seems to cause performance to drop drastically
  