anchor.diff:      PackedFnName = mk_fn(e_pfield_, MsgName, FName),
       [gpb_codegen:format_fn(
          FnName,
  -       fun(Elems, Bin) when Elems =/= [] ->
  +       fun(Elems, Bin, _TrUserData) when Elems =/= [] ->
                  Bin2 = <<Bin/binary, '<KeyBytes>'>>,
                  Bin3 = e_varint(length(Elems) * '<ElemLen>', Bin2),
                  '<encode-packed>'(Elems, Bin3);
  -          ([], Bin) ->
  +          ([], Bin, _TrUserData) ->
                  Bin
          end,
          [splice_trees('<KeyBytes>', KeyBytes),
  
positive.code: format_msg_encoder(MsgName, [], _Defs, _AnRes, _Opts, _IncludeStarter) ->
      gpb_codegen:format_fn(
        mk_fn(e_msg_, MsgName),
        fun(_Msg) ->
                <<>>
        end);
  format_msg_encoder(MsgName, MsgDef, Defs, AnRes, Opts, IncludeStarter) ->
  
negative.code:                        if '<F>' == undefined ->
                                 '<Bin>';
                            true ->
                                 'TrF' = 'Tr'('<F>', 'TrUserData'),
                                 '<enc>'('TrF', <<'<Bin>'/binary, '<Key>'>>,
                                         'MaybeTrUserData')
                         end,
                         Transforms);
                  {maps, omitted} ->
                      ?expr(
                         case 'M' of
                             '#{fieldname := <F>}' ->
                                 'TrF' = 'Tr'('<F>', 'TrUserData'),
                                 '<enc>'('TrF', <<'<Bin>'/binary, '<Key>'>>,
                                         'MaybeTrUserData');
                             _ ->
                                 '<Bin>'
                         end,
  