anchor.diff:                  {_,  _} -> {PB, NB, XInfo}
               end
       end.
  +
  +is_required_overwrite_merge(#?gpb_field{occurrence=required}=Field) ->
  +    classify_field_merge_action(Field) == overwrite;
  +is_required_overwrite_merge(_Field) ->
  +    false.
   
   compute_msg_field_mergers({pr, XInfo}, MsgName, AnRes) ->
       Merges =
  
positive.code:     case get_mapping_and_unset_by_opts(Opts) of
          X when X == records;
                 X == {maps, present_undefined} ->
              P = mapping_match(MsgName, PFields, Opts),
              N = mapping_match(MsgName, NFields, Opts),
              {P, N, {pr, Infos}};
          {maps, omitted} ->
              {OptInfos, MandInfos} = key_partition_on_optionality(4, Infos),
              PMsg = ?expr(PMsg),
              NMsg = ?expr(NMsg),
              P = map_match([{FName, PFVar} || {FName,PFVar,_,_} <- MandInfos]),
              N = map_match([{FName, NFVar} || {FName,_,NFVar,_} <- MandInfos]),
              PB = match_bind_var(P, PMsg),
              NB = match_bind_var(N, NMsg),
  
negative.code:               || {FName, Merge} <- Mergings],
      mapping_create(MsgName, Fields, Opts).
  
  render_field_merger({required, {none, NF}}, _TrUserDataVar) ->
      NF;
  render_field_merger({overwrite, {PF, NF}}, _TrUserDataVar) ->
      ?expr(if 'NF' =:= undefined -> 'PF';
               true               -> 'NF'
  