anchor.diff:                                    MsgDef /= [] -> ?expr(Path)
                                  end),
           splice_trees('<verify-fields>',
  -                     field_verifiers(MsgDef, FVars, MsgVar, Opts)),
  +                     field_verifiers(MsgName, MsgDef, FVars, MsgVar,
  +                                     AnRes, Opts)),
           repeat_clauses('<X>', case NeedsMatchOther of
                                     true  -> [[replace_tree('<X>', ?expr(X))]];
                                     false -> [] %% omit the else clause
  
positive.code:         replace_term('Fn', Fn),
          splice_trees('InArgs', [V,Path]),
          splice_trees('TrArgs', TrArgs)])].
  
  
  last_tuple_element(Tuple) ->
      element(tuple_size(Tuple), Tuple).
  
negative.code:                        end),
          replace_term('<MsgName>', MsgName)])].
  
  field_verifiers(MsgName, Fields, FVars, MsgVar, AnRes, Opts) ->
      [field_verifier(MsgName, Field, FVar, MsgVar, AnRes, Opts)
       || {Field, FVar} <- lists:zip(Fields, FVars)].
  
  field_verifier(MsgName,
                 #?gpb_field{name=FName, type=Type, occurrence=Occurrence}=Field,
                 FVar, MsgVar, AnRes, Opts) ->
      FVerifierFn = case Type of
                        {msg,FMsgName}  -> mk_fn(v_msg_, FMsgName);
                        {enum,EnumName} -> mk_fn(v_enum_, EnumName);
                        {map,KT,VT}     -> mk_fn(v_, map_type_to_msg_name(KT,VT));
                        Type            -> mk_fn(v_type_, Type)
                    end,
      ElemPath = mk_elempath_elem(MsgName, Field, false),
      FVerifierFn2 = find_translation(ElemPath, verify, AnRes, FVerifierFn),
      Replacements = [replace_term('<verify-fn>', FVerifierFn2),
                      replace_tree('<F>', FVar),
                      replace_term('<FName>', FName),
                      replace_term('<Type>', Type)],
  