anchor.diff:      end.
   
   format_decoders_top_function_no_msgs() ->
  -    gpb_codegen:format_fn(
  +    ["-spec decode_msg(binary(), atom()) -> no_return().\n",
  +     gpb_codegen:format_fn(
         decode_msg,
         fun(Bin, _MsgName) when is_binary(Bin) ->
                 erlang:error({gpb_error, no_messages})
  -      end).
  +      end)].
   
   format_decoders_top_function_msgs(Defs) ->
       gpb_codegen:format_fn(
  
positive.code: format_msg_merge_code_no_msgs(Opts) ->
      case get_records_or_maps_by_opts(Opts) of
          records ->
              gpb_codegen:format_fn(
                merge_msgs,
                fun(_Prev, _New) ->
                        erlang:error({gpb_error, no_messages})
                end);
          maps ->
              gpb_codegen:format_fn(
                merge_msgs,
                fun(_Prev, _New, _MsgName) ->
                        erlang:error({gpb_error, no_messages})
                end)
      end.
  
  format_msg_merge_code_msgs(Defs, AnRes, Opts) ->
  
negative.code:                              {Error, [{value, ValueSeen},{path, Path2}]}})
         end),
       "\n",
       case contains_messages(Defs) of
           false ->
               gpb_codegen:format_fn(
                 prettify_path,
                 fun([]) -> top_level end);
           true ->
               gpb_codegen:format_fn(
                 prettify_path,
                 fun([]) ->
                         top_level;
                    (PathR) ->
                         list_to_atom(
                           string:join(
                             lists:map(fun atom_to_list/1, lists:reverse(PathR)),
                             "."))
                 end)
       end].
  
  %% -- translators ------------------------------------------------------
  
  