docs: public final EObject ruleIfCondition() throws RecognitionException {
          EObject current = null;
  
          Token lv_elseif_0_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token otherlv_5=null;
          EObject lv_condition_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // InternalSimpleExpressions.g:79:28: ( ( ( (lv_elseif_0_0= 'else' ) )? otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleExpression ) ) otherlv_4= ')' otherlv_5= '{' ) )
              // InternalSimpleExpressions.g:80:1: ( ( (lv_elseif_0_0= 'else' ) )? otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleExpression ) ) otherlv_4= ')' otherlv_5= '{' )
              {
              // InternalSimpleExpressions.g:80:1: ( ( (lv_elseif_0_0= 'else' ) )? otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleExpression ) ) otherlv_4= ')' otherlv_5= '{' )
              // InternalSimpleExpressions.g:80:2: ( (lv_elseif_0_0= 'else' ) )? otherlv_1= 'if' otherlv_2= '(' ( (lv_condition_3_0= ruleExpression ) ) otherlv_4= ')' otherlv_5= '{'
              {
              // InternalSimpleExpressions.g:80:2: ( (lv_elseif_0_0= 'else' ) )?
              int alt1=2;
              int LA1_0 = input.LA(1);
  
              if ( (LA1_0==11) ) {
                  alt1=1;
              }
              switch (alt1) {
                  case 1 :
                      // InternalSimpleExpressions.g:81:1: (lv_elseif_0_0= 'else' )
                      {
                      // InternalSimpleExpressions.g:81:1: (lv_elseif_0_0= 'else' )
                      // InternalSimpleExpressions.g:82:3: lv_elseif_0_0= 'else'
                      {
                      lv_elseif_0_0=(Token)match(input,11,FOLLOW_3); 
  
                              newLeafNode(lv_elseif_0_0, grammarAccess.getIfConditionAccess().getElseifElseKeyword_0_0());
                          
  
                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getIfConditionRule());
                      	        }
                             		setWithLastConsumed(current, "elseif", true, "else");
                      	    
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_1=(Token)match(input,12,FOLLOW_4); 
  
                  	newLeafNode(otherlv_1, grammarAccess.getIfConditionAccess().getIfKeyword_1());
                  
              otherlv_2=(Token)match(input,13,FOLLOW_5); 
  
                  	newLeafNode(otherlv_2, grammarAccess.getIfConditionAccess().getLeftParenthesisKeyword_2());
                  
              // InternalSimpleExpressions.g:103:1: ( (lv_condition_3_0= ruleExpression ) )
              // InternalSimpleExpressions.g:104:1: (lv_condition_3_0= ruleExpression )
              {
              // InternalSimpleExpressions.g:104:1: (lv_condition_3_0= ruleExpression )
              // InternalSimpleExpressions.g:105:3: lv_condition_3_0= ruleExpression
              {
               
              	        newCompositeNode(grammarAccess.getIfConditionAccess().getConditionExpressionParserRuleCall_3_0()); 
              	    
              pushFollow(FOLLOW_6);
              lv_condition_3_0=ruleExpression();
  
              state._fsp--;
  
  
              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIfConditionRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_3_0, 
                      		"org.eclipse.xtext.xtext.generator.parser.antlr.splitting.SimpleExpressions.Expression");
              	        afterParserOrEnumRuleCall();
              	    
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,14,FOLLOW_7); 
  
                  	newLeafNode(otherlv_4, grammarAccess.getIfConditionAccess().getRightParenthesisKeyword_4());
                  
              otherlv_5=(Token)match(input,15,FOLLOW_2); 
  
                  	newLeafNode(otherlv_5, grammarAccess.getIfConditionAccess().getLeftCurlyBracketKeyword_5());
                  
  
              }
  
  
              }
  
               leaveRule(); 
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }