docs: public final EObject ruleBooleanLiteral() throws RecognitionException {
          EObject current = null;
  
          Token lv_value_1_0=null;
          Token otherlv_2=null;
  
           enterRule(); 
              
          try {
              // InternalSimpleExpressions.g:519:28: ( ( () ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' ) ) )
              // InternalSimpleExpressions.g:520:1: ( () ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' ) )
              {
              // InternalSimpleExpressions.g:520:1: ( () ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' ) )
              // InternalSimpleExpressions.g:520:2: () ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
              {
              // InternalSimpleExpressions.g:520:2: ()
              // InternalSimpleExpressions.g:521:5: 
              {
  
                      current = forceCreateModelElement(
                          grammarAccess.getBooleanLiteralAccess().getBooleanLiteralAction_0(),
                          current);
                  
  
              }
  
              // InternalSimpleExpressions.g:526:2: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
              int alt8=2;
              int LA8_0 = input.LA(1);
  
              if ( (LA8_0==22) ) {
                  alt8=1;
              }
              else if ( (LA8_0==23) ) {
                  alt8=2;
              }
              else {
                  NoViableAltException nvae =
                      new NoViableAltException("", 8, 0, input);
  
                  throw nvae;
              }
              switch (alt8) {
                  case 1 :
                      // InternalSimpleExpressions.g:526:3: ( (lv_value_1_0= 'true' ) )
                      {
                      // InternalSimpleExpressions.g:526:3: ( (lv_value_1_0= 'true' ) )
                      // InternalSimpleExpressions.g:527:1: (lv_value_1_0= 'true' )
                      {
                      // InternalSimpleExpressions.g:527:1: (lv_value_1_0= 'true' )
                      // InternalSimpleExpressions.g:528:3: lv_value_1_0= 'true'
                      {
                      lv_value_1_0=(Token)match(input,22,FOLLOW_2); 
  
                              newLeafNode(lv_value_1_0, grammarAccess.getBooleanLiteralAccess().getValueTrueKeyword_1_0_0());
                          
  
                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getBooleanLiteralRule());
                      	        }
                             		setWithLastConsumed(current, "value", true, "true");
                      	    
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalSimpleExpressions.g:542:7: otherlv_2= 'false'
                      {
                      otherlv_2=(Token)match(input,23,FOLLOW_2); 
  
                          	newLeafNode(otherlv_2, grammarAccess.getBooleanLiteralAccess().getFalseKeyword_1_1());
                          
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
               leaveRule(); 
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }