anchor.diff:                     undefined ->
                          ok;
                      '<oneof-pattern>' ->
  -                       '<verify-fn>'('<OFVar>', ['<OFName>', '<FName>' | Path]);
  +                       '<verify-fn>'('<OFVar>', ['<OFName>', '<FName>' | Path],
  +                                     'MaybeTrUserData');
                      _ ->
                          mk_type_error(invalid_oneof, '<F>', ['<FName>' | Path])
                  end,
  
positive.code:                           maps    -> true
                        end,
      FnName = mk_fn(v_msg_, MsgName),
      [nowarn_dialyzer_attr(FnName,2),
       gpb_codegen:format_fn(
         FnName,
         fun('<msg-match>', '<Path>') ->
                 '<verify-fields>',
                 ok;
            ('<M>', Path) when is_map('<M>') ->
                 mk_type_error(
                   {missing_fields, 'NonOptKeys'--maps:keys('<M>'), '<MsgName>'},
                   '<M>', Path);
            ('<X>', Path) ->
                 mk_type_error({expected_msg,'<MsgName>'}, X, Path)
         end,
         [replace_tree('<msg-match>', FieldMatching),
          replace_tree('<Path>', if MsgDef == [] -> ?expr(_Path);
                                    MsgDef /= [] -> ?expr(Path)
                                 end),
          splice_trees('<verify-fields>',
                       field_verifiers(MsgName, MsgDef, FVars, MsgVar,
                                       AnRes, Opts)),
          repeat_clauses('<X>', case NeedsMatchOther of
                                    true  -> [[replace_tree('<X>', ?expr(X))]];
  
negative.code:            maps    -> ?f("-export([merge_msgs/3, merge_msgs/4]).~n")
         end,
         case get_records_or_maps_by_opts(Opts) of
             records -> ?f("-export([verify_msg/1, verify_msg/2]).~n");
             maps    -> ?f("-export([verify_msg/2, verify_msg/3]).~n")
         end,
         ?f("-export([get_msg_defs/0]).~n"),
         ?f("-export([get_msg_names/0]).~n"),
  