docs: public EnumDeclarationDescr enumDeclaration( DeclareDescrBuilder ddb ) throws RecognitionException {
          EnumDeclarationDescrBuilder declare = null;
          try {
              declare = helper.start( ddb,
                      EnumDeclarationDescrBuilder.class,
                      null );
  
              // type may be qualified when adding metadata
              String type = qualifiedIdentifier();
              if ( state.failed ) return null;
              if ( state.backtracking == 0 ) declare.name( type );
  
              while ( input.LA( 1 ) == DRL5Lexer.AT ) {
                  // annotation*
                  annotation( declare );
                  if ( state.failed ) return null;
              }
  
              while ( input.LA( 1 ) == DRL5Lexer.ID ) {
                  int next = input.LA( 2 );
                  if ( next == DRL5Lexer.LEFT_PAREN || next == DRL5Lexer.COMMA || next == DRL5Lexer.SEMICOLON ) {
                      enumerative( declare );
                      if ( state.failed ) return null;
                  }
                  
                  if ( input.LA( 1 ) == DRL5Lexer.COMMA ) {
                      match( input,
                              DRL5Lexer.COMMA,
                              null,
                              null,
                              DroolsEditorType.SYMBOL );
                  } else {
                      match( input,
                              DRL5Lexer.SEMICOLON,
                              null,
                              null,
                              DroolsEditorType.SYMBOL );
                      break;
                  }
              }
  
              //boolean qualified = type.indexOf( '.' ) >= 0;
              while ( //! qualified &&
                      input.LA( 1 ) == DRL5Lexer.ID && ! helper.validateIdentifierKey( DroolsSoftKeywords.END ) ) {
                  // field*
                  field( declare );
                  if ( state.failed ) return null;
              }
  
              match( input,
                      DRL5Lexer.ID,
                      DroolsSoftKeywords.END,
                      null,
                      DroolsEditorType.KEYWORD );
  
              if ( state.failed ) return null;
  
          } catch ( RecognitionException re ) {
              reportError( re );
          } finally {
              helper.end( TypeDeclarationDescrBuilder.class,
                      declare );
          }
          return (declare != null) ? declare.getDescr() : null;
      }