docs: public final EObject ruleEnumLiterals() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          EObject this_EnumLiteralDeclaration_0 = null;
  
          EObject lv_elements_3_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalXtext.g:3652:2: ( (this_EnumLiteralDeclaration_0= ruleEnumLiteralDeclaration ( () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+ )? ) )
              // InternalXtext.g:3653:2: (this_EnumLiteralDeclaration_0= ruleEnumLiteralDeclaration ( () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+ )? )
              {
              // InternalXtext.g:3653:2: (this_EnumLiteralDeclaration_0= ruleEnumLiteralDeclaration ( () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+ )? )
              // InternalXtext.g:3654:3: this_EnumLiteralDeclaration_0= ruleEnumLiteralDeclaration ( () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+ )?
              {
  
              			newCompositeNode(grammarAccess.getEnumLiteralsAccess().getEnumLiteralDeclarationParserRuleCall_0());
              		
              pushFollow(FollowSets000.FOLLOW_25);
              this_EnumLiteralDeclaration_0=ruleEnumLiteralDeclaration();
  
              state._fsp--;
  
  
              			current = this_EnumLiteralDeclaration_0;
              			afterParserOrEnumRuleCall();
              		
              // InternalXtext.g:3662:3: ( () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+ )?
              int alt77=2;
              int LA77_0 = input.LA(1);
  
              if ( (LA77_0==30) ) {
                  alt77=1;
              }
              switch (alt77) {
                  case 1 :
                      // InternalXtext.g:3663:4: () (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+
                      {
                      // InternalXtext.g:3663:4: ()
                      // InternalXtext.g:3664:5: 
                      {
  
                      					current = forceCreateModelElementAndAdd(
                      						grammarAccess.getEnumLiteralsAccess().getAlternativesElementsAction_1_0(),
                      						current);
                      				
  
                      }
  
                      // InternalXtext.g:3670:4: (otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) ) )+
                      int cnt76=0;
                      loop76:
                      do {
                          int alt76=2;
                          int LA76_0 = input.LA(1);
  
                          if ( (LA76_0==30) ) {
                              alt76=1;
                          }
  
  
                          switch (alt76) {
                      	case 1 :
                      	    // InternalXtext.g:3671:5: otherlv_2= '|' ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) )
                      	    {
                      	    otherlv_2=(Token)match(input,30,FollowSets000.FOLLOW_13); 
  
                      	    					newLeafNode(otherlv_2, grammarAccess.getEnumLiteralsAccess().getVerticalLineKeyword_1_1_0());
                      	    				
                      	    // InternalXtext.g:3675:5: ( (lv_elements_3_0= ruleEnumLiteralDeclaration ) )
                      	    // InternalXtext.g:3676:6: (lv_elements_3_0= ruleEnumLiteralDeclaration )
                      	    {
                      	    // InternalXtext.g:3676:6: (lv_elements_3_0= ruleEnumLiteralDeclaration )
                      	    // InternalXtext.g:3677:7: lv_elements_3_0= ruleEnumLiteralDeclaration
                      	    {
  
                      	    							newCompositeNode(grammarAccess.getEnumLiteralsAccess().getElementsEnumLiteralDeclarationParserRuleCall_1_1_1_0());
                      	    						
                      	    pushFollow(FollowSets000.FOLLOW_25);
                      	    lv_elements_3_0=ruleEnumLiteralDeclaration();
  
                      	    state._fsp--;
  
  
                      	    							if (current==null) {
                      	    								current = createModelElementForParent(grammarAccess.getEnumLiteralsRule());
                      	    							}
                      	    							add(
                      	    								current,
                      	    								"elements",
                      	    								lv_elements_3_0,
                      	    								"org.eclipse.xtext.Xtext.EnumLiteralDeclaration");
                      	    							afterParserOrEnumRuleCall();
                      	    						
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    if ( cnt76 >= 1 ) break loop76;
                                  EarlyExitException eee =
                                      new EarlyExitException(76, input);
                                  throw eee;
                          }
                          cnt76++;
                      } while (true);
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }