anchor.diff:      InParams = decoder_in_params(Params, MsgName, FieldDef, AnRes),
       Value = ?expr(Value),
       Params2 = updated_merged_params(MsgName, FieldDef, AnRes, Value, Params),
  -    ReadFieldDefFnName = mk_fn(d_read_field_def_, MsgName),
  +    ReadFieldDefFnName = mk_fn(dfp_read_field_def_, MsgName),
       gpb_codegen:format_fn(
         mk_fn(d_field_, MsgName, FName),
         fun(<<Value:'<N>'/'<T>', Rest/binary>>, Z1, Z2, '<InParams>') ->
  
positive.code:      format_field_skippers(MsgName, AnRes)].
  
  format_msg_decoder_read_field(MsgName, MsgDef, AnRes) ->
      DecodeMsgFnName = mk_fn(d_msg_, MsgName),
      DecodeFieldDefFnName = mk_fn(d_read_field_def_, MsgName),
      Key = ?expr(Key),
      Rest = ?expr(Rest),
      Params = decoder_params(MsgName, AnRes),
      Bindings = new_bindings([{'<Params>', Params},
                               {'<Key>', Key},
                               {'<Rest>', Rest}]),
      [gpb_codegen:format_fn(
         DecodeMsgFnName,
         fun(Bin) ->
                 '<decode-field-def>'(Bin, 0, 0, '<initial-params>')
         end,
         [replace_term('<decode-field-def>', DecodeFieldDefFnName),
          splice_trees('<initial-params>',
                       msg_decoder_initial_params(MsgName, MsgDef, AnRes))]),
       "\n",
       gpb_codegen:format_fn(
         DecodeFieldDefFnName,
         fun(<<1:1, X:7, Rest/binary>>, N, Acc, '<Params>') ->
                 call_self(Rest, N+7, X bsl N + Acc, '<Params>');
            (<<0:1, X:7, Rest/binary>>, N, Acc, '<Params>') ->
                 '<Key>' = X bsl N + Acc,
                 '<calls-to-field-decoding-or-skip>';
            (<<>>, 0, 0, '<Params>') ->
                 '<finalize-result>'
         end,
         [splice_trees('<Params>', Params),
          replace_tree('<Key>', Key),
          replace_tree('<calls-to-field-decoding-or-skip>',
                       decoder_field_calls(Bindings, MsgName, MsgDef, AnRes)),
          replace_tree('<finalize-result>',
                       decoder_finalize_result(Params, MsgName, MsgDef, AnRes))]),
       "\n"].
  
  msg_decoder_initial_params(MsgName, MsgDef, AnRes) ->
      FNVExprs = [case Occurrence of
  
negative.code:         splice_trees('<InParams>', Params),
          replace_term(decode_packed, mk_fn(d_packed_field_, MsgName, FName)),
          replace_tree('<Param>', Param),
          replace_term('<call-read-field>', mk_fn(dfp_read_field_def_, MsgName)),
          splice_trees('<OutParams>', OutParams)]),
       "\n",
       format_packed_field_seq_decoder(MsgName, FieldDef, Opts)].
  