anchor.diff:        fun('<MsgName>') -> '<Fields>';
            (_) -> error
         end,
  -      [splice_clauses('<MsgName>',
  -                      [gpb_codegen:fn_clause(
  -                         fun('<MsgName>') -> '<Fields>' end,
  -                         [replace_term('<MsgName>', MsgName),
  -                          replace_tree('<Fields>', fields_tree(Fields))])
  +      [repeat_clauses('<MsgName>',
  +                      [[replace_term('<MsgName>', MsgName),
  +                        replace_tree('<Fields>', fields_tree(Fields))]
                          || {{msg, MsgName}, Fields} <- Msgs])]).
   
   format_find_enum_defs(Enums) ->
  
positive.code:             gpb_codegen:format_fn(
                mk_fn(v_msg_, MsgName),
                fun('<msg-match>', _Path) -> ok;
                   ('<else-clause>', _) -> expr
                end,
                [replace_tree('<msg-match>', record_match(MsgName, RFields)),
                 splice_clauses('<else-clause>', ElseClause)]);
  
negative.code:       fun('<sym>', _Path) -> ok;
           (X, Path) -> mk_type_error({invalid_enum, '<EnumName>'}, X, Path)
        end,
        [repeat_clauses('<sym>', [[replace_term('<sym>', EnumSym)]
                                  || {EnumSym, _Value} <- EnumMembers]),
         replace_term('<EnumName>', EnumName)]).
  
  