docs: public final EObject ruleEnumLiteralDeclaration() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          EObject lv_literal_2_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalXtext.g:3713:2: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) ) )? ) )
              // InternalXtext.g:3714:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) ) )? )
              {
              // InternalXtext.g:3714:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) ) )? )
              // InternalXtext.g:3715:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) ) )?
              {
              // InternalXtext.g:3715:3: ( (otherlv_0= RULE_ID ) )
              // InternalXtext.g:3716:4: (otherlv_0= RULE_ID )
              {
              // InternalXtext.g:3716:4: (otherlv_0= RULE_ID )
              // InternalXtext.g:3717:5: otherlv_0= RULE_ID
              {
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getEnumLiteralDeclarationRule());
              					}
              				
              otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_51); 
  
              					newLeafNode(otherlv_0, grammarAccess.getEnumLiteralDeclarationAccess().getEnumLiteralEEnumLiteralCrossReference_0_0());
              				
  
              }
  
  
              }
  
              // InternalXtext.g:3728:3: (otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) ) )?
              int alt78=2;
              int LA78_0 = input.LA(1);
  
              if ( (LA78_0==35) ) {
                  alt78=1;
              }
              switch (alt78) {
                  case 1 :
                      // InternalXtext.g:3729:4: otherlv_1= '=' ( (lv_literal_2_0= ruleKeyword ) )
                      {
                      otherlv_1=(Token)match(input,35,FollowSets000.FOLLOW_11); 
  
                      				newLeafNode(otherlv_1, grammarAccess.getEnumLiteralDeclarationAccess().getEqualsSignKeyword_1_0());
                      			
                      // InternalXtext.g:3733:4: ( (lv_literal_2_0= ruleKeyword ) )
                      // InternalXtext.g:3734:5: (lv_literal_2_0= ruleKeyword )
                      {
                      // InternalXtext.g:3734:5: (lv_literal_2_0= ruleKeyword )
                      // InternalXtext.g:3735:6: lv_literal_2_0= ruleKeyword
                      {
  
                      						newCompositeNode(grammarAccess.getEnumLiteralDeclarationAccess().getLiteralKeywordParserRuleCall_1_1_0());
                      					
                      pushFollow(FollowSets000.FOLLOW_2);
                      lv_literal_2_0=ruleKeyword();
  
                      state._fsp--;
  
  
                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getEnumLiteralDeclarationRule());
                      						}
                      						set(
                      							current,
                      							"literal",
                      							lv_literal_2_0,
                      							"org.eclipse.xtext.Xtext.Keyword");
                      						afterParserOrEnumRuleCall();
                      					
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }