anchor.diff:            d_field_pass_method,% :: dict:dict()  %% MsgName -> pass_as_record |
                                 %                 %%            pass_as_params
             maps_as_msgs,       % :: list() % same format as `Defs'
  -          map_translations,   % :: [translation()]
  +          translations,       % :: dict:dict(), %% FieldPath -> TranslationOps
             map_types           % :: sets:set({map,_,_})
           }).
   
  
positive.code:            d_field_pass_method = compute_decode_field_pass_methods(
                                     MapsAsMsgs ++ Defs, Opts),
             maps_as_msgs        = MapsAsMsgs,
             map_translations    = compute_map_translations(Defs, Opts),
             map_types           = MapTypes}.
  
  find_map_types(Defs) ->
  
negative.code:               end
                || Term <- ArgTemplate],
      [inline_attr(FnName,length(InArgs)),
       case CallTemplate of
           {Fn, ArgTemplate} ->
               gpb_codegen:format_fn(
                 FnName,
                 fun('InArgs') ->
                         'Fn'('TrArgs')
                 end,
                 [replace_term('Fn', Fn),
                  splice_trees('InArgs', InArgs),
                  splice_trees('TrArgs', TrArgs)]);
           {Mod, Fn, ArgTemplate} ->
               gpb_codegen:format_fn(
                 FnName,
                 fun('InArgs') ->
                         'Mod':'Fn'('TrArgs')
                 end,
                 [replace_term('Mod', Mod),
                  replace_term('Fn', Fn),
                  splice_trees('InArgs', InArgs),
                  splice_trees('TrArgs', TrArgs)])
       end].
  
  last_tuple_element(Tuple) ->
      element(tuple_size(Tuple), Tuple).
  
  underscore_unused_args(Args, Templ) ->
      [case is_arg_used(I, Templ) of
  