anchor.diff:      {?expr(PF), ?expr(_), no_fields};
   format_msg_merger_fnclause_match(MsgName, MsgDef, Opts) ->
       FNames  = [get_field_name(Field) || Field <- MsgDef],
  -    PFVars  = [var("PF~s", [FName]) || FName <- FNames],
  +    PFVars  = [case is_required_overwrite_merge(Field) of
  +                   true  -> none;
  +                   false -> var("PF~s", [get_field_name(Field)])
  +               end
  +               || Field <- MsgDef],
       NFVars  = [var("NF~s", [FName]) || FName <- FNames],
       PFields = lists:zip(FNames, PFVars),
       NFields = lists:zip(FNames, NFVars),
  
positive.code:               || {FName, Merge} <- Mergings],
      mapping_create(MsgName, Fields, Opts).
  
  render_field_merger({overwrite, {PF, NF}}, _TrUserDataVar) ->
      ?expr(if 'NF' =:= undefined -> 'PF';
               true               -> 'NF'
  
negative.code:                 {_,  _} -> {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 =
  