anchor.diff:                 '<call-read-field>'(Rest2, 0, 0, '<OutParams>')
          end,
          [splice_trees('<Params>', Params),
  -        splice_trees('<InParams>', Params),
  +        splice_trees('<InParams>', InParams),
           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)),
  
positive.code:                    Transforms)
      end.
  
  updated_merged_params(MsgName, FieldDef, AnRes, NewValue, Params, Opts) ->
      #field{name=FName, rnum=RNum} = FieldDef,
      case get_field_pass(MsgName, AnRes) of
          pass_as_params ->
              PrevValue = lists:nth(RNum - 1, Params),
              MergedValue = merge_field_expr(FieldDef, PrevValue, NewValue),
              lists_setelement(RNum - 1, Params, MergedValue);
          pass_as_record ->
              MsgVar = hd(Params),
              PrevValue = mapping_access(MsgVar, MsgName, FName, Opts),
              MergedValue = merge_field_expr(FieldDef, PrevValue, NewValue),
              [mapping_update(MsgVar, MsgName, [{FName, MergedValue}], Opts)]
      end.
  
negative.code:                         || {FName, Val} <- map_kvalues(FieldsValueTrees)],
                         ", ")])).
  
  %% -> [{atom(), string()}]
  map_kvars(KVars) ->
      [{Key, var_literal(Var)} || {Key, Var} <- KVars].
  