anchor.diff:          Default   -> {FName, Default}
       end.
   
  +combine_erl_and_possible_nif(ErlCompilationResult, '$not_generated'=_Nif) ->
  +    ErlCompilationResult;
  +combine_erl_and_possible_nif({ok, ModuleName, ErlCode}, NifTxt) ->
  +    {ok, ModuleName, combine_erlcode_with_niftxt(ErlCode, NifTxt)};
  +combine_erl_and_possible_nif({ok, ModuleName, ErlCode, Warnings}, NifTxt) ->
  +    {ok, ModuleName, combine_erlcode_with_niftxt(ErlCode, NifTxt), Warnings};
  +combine_erl_and_possible_nif(Error, _NifTxt) ->
  +    Error.
  +
  +combine_erlcode_with_niftxt(ErlCode, NifTxt) ->
  +    [{erl, ErlCode},
  +     {nif, NifTxt}].
  +
   %% -- internal utilities -----------------------------------------------------
   
   is_packed(#field{opts=Opts}) ->
  
positive.code:        f("-export([get_package_name/0]).~n"),
         f("-export([gpb_version_as_string/0, gpb_version_as_list/0]).~n"),
         "\n",
         f("-include(\"~s.hrl\").~n", [Mod]),
         f("-include(\"gpb.hrl\").~n"),
         "\n",
         %% Enabling inlining seems to cause performance to drop drastically
         %% I've seen decoding performance go down from 76000 msgs/s
         %% to about 10000 msgs/s for a set of mixed message samples.
  
negative.code:     FieldDef = field_record_to_attr_form(),
      MsgRecordForms = msgdefs_to_record_attrs(MsgDefs),
      AllForms = AttrForms ++ [FieldDef] ++ MsgRecordForms ++ CodeForms,
      combine_erl_and_possible_nif(compile:forms(AllForms, Opts),
                                   PossibleNifCode).
  
  split_toks_at_dot(AllToks) ->
      case lists:splitwith(fun is_no_dot/1, AllToks) of
  