anchor.diff:      [gpb_codegen:format_fn(
          enum_symbol_by_value,
          fun('<EnumName>', Value) -> 'cvt'(Value) end,
  -       [splice_clauses(
  +       [repeat_clauses(
             '<EnumName>',
  -          [gpb_codegen:fn_clause(
  -             fun('<EnumName>', Value) -> 'cvt'(Value) end,
  -             [replace_term('<EnumName>', EnumName),
  -              replace_term('cvt', mk_fn(enum_symbol_by_value_, EnumName))])
  +          [[replace_term('<EnumName>', EnumName),
  +            replace_term('cvt', mk_fn(enum_symbol_by_value_, EnumName))]
              || {{enum, EnumName}, _EnumDef} <- EnumDefs])]),
        "\n",
        gpb_codegen:format_fn(
          enum_value_by_symbol,
          fun('<EnumName>', Sym) -> 'cvt'(Sym) end,
  -       [splice_clauses(
  +       [repeat_clauses(
             '<EnumName>',
  -          [gpb_codegen:fn_clause(
  -             fun('<EnumName>', Sym) -> 'cvt'(Sym) end,
  -             [replace_term('<EnumName>', EnumName),
  -              replace_term('cvt', mk_fn(enum_value_by_symbol_, EnumName))])
  +          [[replace_term('<EnumName>', EnumName),
  +            replace_term('cvt', mk_fn(enum_value_by_symbol_, EnumName))]
              || {{enum, EnumName}, _EnumDef} <- EnumDefs])]),
        "\n",
        [[gpb_codegen:format_fn(
            mk_fn(enum_symbol_by_value_, EnumName),
            fun('<Value>') -> '<Sym>' end,
  -         [splice_clauses(
  -            '<Value>',
  -            [gpb_codegen:fn_clause(
  -               fun('<Value>') -> '<Sym>' end,
  -               [replace_term('<Value>', EnumValue),
  -                replace_term('<Sym>', EnumSym)])
  -             || {EnumSym, EnumValue} <- EnumDef])]),
  +         [repeat_clauses('<Value>',
  +                         [[replace_term('<Value>', EnumValue),
  +                           replace_term('<Sym>', EnumSym)]
  +                          || {EnumSym, EnumValue} <- EnumDef])]),
          "\n",
          gpb_codegen:format_fn(
            mk_fn(enum_value_by_symbol_, EnumName),
            fun('<Sym>') -> '<Value>' end,
  -         [splice_clauses(
  -            '<Sym>',
  -            [gpb_codegen:fn_clause(
  -               fun('<Sym>') -> '<Value>' end,
  -               [replace_term('<Value>', EnumValue),
  -                replace_term('<Sym>', EnumSym)])
  -             || {EnumSym, EnumValue} <- EnumDef])])]
  +         [repeat_clauses('<Sym>',
  +                         [[replace_term('<Value>', EnumValue),
  +                           replace_term('<Sym>', EnumSym)]
  +                          || {EnumSym, EnumValue} <- EnumDef])])]
         || {{enum, EnumName}, EnumDef} <- EnumDefs]];
   format_enum_value_symbol_converters([]=_EnumDefs) ->
       [gpb_codegen:format_fn(
  
positive.code:       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))])
                         || {{msg, MsgName}, Fields} <- Msgs])]).
  
  format_find_enum_defs(Enums) ->
  
negative.code:     %%        from run-time to compile-time??
      [gpb_codegen:format_fn(
         mk_fn(d_enum_, EnumName),
         fun('<EnumValue>') -> '<EnumSym>' end,
         [repeat_clauses('<EnumValue>',
                         [[replace_term('<EnumValue>', EnumValue),
                           replace_term('<EnumSym>', EnumSym)]
                          || {EnumSym, EnumValue} <- EnumDef])])
       || {{enum, EnumName}, EnumDef} <- Defs,
          smember({enum,EnumName}, UsedTypes)].
  
  