anchor.diff:      [format_msg_decoder_read_field(MsgName, MsgDef, AnRes),
        format_msg_decoder_reverse_toplevel(MsgName, MsgDef, AnRes),
        format_field_decoders(MsgName, MsgDef, AnRes, Opts),
  -     format_field_adders(MsgName, MsgDef, AnRes),
        format_field_skippers(MsgName, AnRes)].
   
   format_msg_decoder_read_field(MsgName, MsgDef, AnRes) ->
  
positive.code:             lists_setelement(RNum - 1, Params, MergedValue);
          pass_as_record ->
              MsgVar = hd(Params),
              %PrevValue = record_access(MsgVar, MsgName, FName),
              %MergedValue = merge_field_exprs(FieldDef, PrevValue, NewValue),
              %[record_update(MsgVar, MsgName, [{FName, MergedValue}])]
              AddFieldFn = mk_fn(add_field_, MsgName, FName),
              [?expr('<call-add-field>'('<New>', '<Msg>'),
                     [replace_term('<call-add-field>', AddFieldFn),
                      replace_tree('<New>', NewValue),
                      replace_tree('<Msg>', MsgVar)])]
      end.
  
  merge_field_exprs(FieldDef, PrevValue, NewValue) ->
  
negative.code:             [f("~p(Msg) ->~n", [mk_fn(d_reverse_toplevel_fields_, MsgName)]),
               indent(4, f("Msg.~n~n"))]
      end.
  
  classify_field_merge_action(FieldDef) ->
      case FieldDef of
  