InternalXbase.g:317:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
550926
public final void ruleXRelationalExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:321:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
            // InternalXbase.g:322:2: ( ( rule__XRelationalExpression__Group__0 ) )
            {
            // InternalXbase.g:322:2: ( ( rule__XRelationalExpression__Group__0 ) )
            // InternalXbase.g:323:3: ( rule__XRelationalExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:324:3: ( rule__XRelationalExpression__Group__0 )
            // InternalXbase.g:324:4: rule__XRelationalExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XRelationalExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
415717
public final void ruleXSetLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:746:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
            // InternalXbase.g:747:2: ( ( rule__XSetLiteral__Group__0 ) )
            {
            // InternalXbase.g:747:2: ( ( rule__XSetLiteral__Group__0 ) )
            // InternalXbase.g:748:3: ( rule__XSetLiteral__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
            }
            // InternalXbase.g:749:3: ( rule__XSetLiteral__Group__0 )
            // InternalXbase.g:749:4: rule__XSetLiteral__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XSetLiteral__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXSetLiteralAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
1236683
public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
        try {
            // InternalXbase.g:359:1: ( ruleXOtherOperatorExpression EOF )
            // InternalXbase.g:360:1: ruleXOtherOperatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXOtherOperatorExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXOtherOperatorExpressionRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
690184
public final void synpred31_InternalXbase_fragment() throws RecognitionException {   
        // InternalXbase.g:4199:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // InternalXbase.g:4199:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // InternalXbase.g:4199:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // InternalXbase.g:4200:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // InternalXbase.g:4200:7: ()
        // InternalXbase.g:4201:7: 
        {
        }

        // InternalXbase.g:4202:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt120=2;
        int LA120_0 = input.LA(1);

        if ( (LA120_0==RULE_ID||LA120_0==32||LA120_0==49) ) {
            alt120=1;
        }
        switch (alt120) {
            case 1 :
                // InternalXbase.g:4203:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // InternalXbase.g:4203:8: ( ( ruleJvmFormalParameter ) )
                // InternalXbase.g:4204:9: ( ruleJvmFormalParameter )
                {
                // InternalXbase.g:4204:9: ( ruleJvmFormalParameter )
                // InternalXbase.g:4205:10: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_39);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // InternalXbase.g:4208:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop119:
                do {
                    int alt119=2;
                    int LA119_0 = input.LA(1);

                    if ( (LA119_0==48) ) {
                        alt119=1;
                    }


                    switch (alt119) {
                	case 1 :
                	    // InternalXbase.g:4209:9: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,48,FOLLOW_13); if (state.failed) return ;
                	    // InternalXbase.g:4210:9: ( ( ruleJvmFormalParameter ) )
                	    // InternalXbase.g:4211:10: ( ruleJvmFormalParameter )
                	    {
                	    // InternalXbase.g:4211:10: ( ruleJvmFormalParameter )
                	    // InternalXbase.g:4212:11: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_39);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop119;
                    }
                } while (true);


                }
                break;

        }

        // InternalXbase.g:4217:7: ( ( '|' ) )
        // InternalXbase.g:4218:8: ( '|' )
        {
        // InternalXbase.g:4218:8: ( '|' )
        // InternalXbase.g:4219:9: '|'
        {
        match(input,56,FOLLOW_2); if (state.failed) return ;

        }


        }


        }


        }
    }
1185045
public final EObject ruleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XEqualityExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:12403:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
            // InternalSARL.g:12404:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            {
            // InternalSARL.g:12404:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            // InternalSARL.g:12405:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_116);
            this_XEqualityExpression_0=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current = this_XEqualityExpression_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalSARL.g:12413:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            loop303:
            do {
                int alt303=2;
                int LA303_0 = input.LA(1);

                if ( (LA303_0==114) ) {
                    int LA303_2 = input.LA(2);

                    if ( (synpred32_InternalSARL()) ) {
                        alt303=1;
                    }


                }


                switch (alt303) {
            	case 1 :
            	    // InternalSARL.g:12414:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    {
            	    // InternalSARL.g:12414:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
            	    // InternalSARL.g:12415:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
            	    {
            	    // InternalSARL.g:12425:5: ( () ( ( ruleOpAnd ) ) )
            	    // InternalSARL.g:12426:6: () ( ( ruleOpAnd ) )
            	    {
            	    // InternalSARL.g:12426:6: ()
            	    // InternalSARL.g:12427:7: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      							current = forceCreateModelElementAndSet(
            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	      								current);
            	      						
            	    }

            	    }

            	    // InternalSARL.g:12433:6: ( ( ruleOpAnd ) )
            	    // InternalSARL.g:12434:7: ( ruleOpAnd )
            	    {
            	    // InternalSARL.g:12434:7: ( ruleOpAnd )
            	    // InternalSARL.g:12435:8: ruleOpAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      								if (current==null) {
            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
            	      								}
            	      							
            	    }
            	    if ( state.backtracking==0 ) {

            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
            	      							
            	    }
            	    pushFollow(FOLLOW_45);
            	    ruleOpAnd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      								afterParserOrEnumRuleCall();
            	      							
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // InternalSARL.g:12451:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    // InternalSARL.g:12452:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    {
            	    // InternalSARL.g:12452:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    // InternalSARL.g:12453:6: lv_rightOperand_3_0= ruleXEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_116);
            	    lv_rightOperand_3_0=ruleXEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
            	      						}
            	      						set(
            	      							current,
            	      							"rightOperand",
            	      							lv_rightOperand_3_0,
            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop303;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
643722
public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
        try {
            // InternalXbase.g:984:1: ( ruleXBasicForLoopExpression EOF )
            // InternalXbase.g:985:1: ruleXBasicForLoopExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXBasicForLoopExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXBasicForLoopExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXBasicForLoopExpressionRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
1216707
public final void ruleXExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:71:2: ( ( ruleXAssignment ) )
            // InternalXbase.g:72:2: ( ruleXAssignment )
            {
            // InternalXbase.g:72:2: ( ruleXAssignment )
            // InternalXbase.g:73:3: ruleXAssignment
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
            }
            pushFollow(FOLLOW_2);
            ruleXAssignment();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
736975
public final EObject ruleXCastedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XPostfixOperation_0 = null;

        EObject lv_type_3_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:1451:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
            // InternalXbase.g:1452:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            {
            // InternalXbase.g:1452:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            // InternalXbase.g:1453:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_20);
            this_XPostfixOperation_0=ruleXPostfixOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current = this_XPostfixOperation_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalXbase.g:1461:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==42) ) {
                    int LA21_2 = input.LA(2);

                    if ( (synpred12_InternalXbase()) ) {
                        alt21=1;
                    }


                }


                switch (alt21) {
            	case 1 :
            	    // InternalXbase.g:1462:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // InternalXbase.g:1462:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
            	    // InternalXbase.g:1463:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
            	    {
            	    // InternalXbase.g:1469:5: ( () otherlv_2= 'as' )
            	    // InternalXbase.g:1470:6: () otherlv_2= 'as'
            	    {
            	    // InternalXbase.g:1470:6: ()
            	    // InternalXbase.g:1471:7: 
            	    {
            	    if ( state.backtracking==0 ) {

            	      							current = forceCreateModelElementAndSet(
            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
            	      								current);
            	      						
            	    }

            	    }

            	    otherlv_2=(Token)match(input,42,FOLLOW_13); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
            	      					
            	    }

            	    }


            	    }

            	    // InternalXbase.g:1483:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // InternalXbase.g:1484:5: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // InternalXbase.g:1484:5: (lv_type_3_0= ruleJvmTypeReference )
            	    // InternalXbase.g:1485:6: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_20);
            	    lv_type_3_0=ruleJvmTypeReference();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      						if (current==null) {
            	      							current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
            	      						}
            	      						set(
            	      							current,
            	      							"type",
            	      							lv_type_3_0,
            	      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
            	      						afterParserOrEnumRuleCall();
            	      					
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
651749
public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
        try {
            // InternalXbaseWithAnnotations.g:159:1: ( ruleXAnnotationOrExpression EOF )
            // InternalXbaseWithAnnotations.g:160:1: ruleXAnnotationOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXAnnotationOrExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXAnnotationOrExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXAnnotationOrExpressionRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
361391
public final void ruleXTryCatchFinallyExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1471:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
            // InternalXbase.g:1472:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
            {
            // InternalXbase.g:1472:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
            // InternalXbase.g:1473:3: ( rule__XTryCatchFinallyExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1474:3: ( rule__XTryCatchFinallyExpression__Group__0 )
            // InternalXbase.g:1474:4: rule__XTryCatchFinallyExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XTryCatchFinallyExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
1057722
public final void synpred52_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:2692:2: ( ( ruleXBasicForLoopExpression ) )
        // InternalXbaseWithAnnotations.g:2692:2: ( ruleXBasicForLoopExpression )
        {
        // InternalXbaseWithAnnotations.g:2692:2: ( ruleXBasicForLoopExpression )
        // InternalXbaseWithAnnotations.g:2693:3: ruleXBasicForLoopExpression
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
        }
        pushFollow(FOLLOW_2);
        ruleXBasicForLoopExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
176784
public final EObject ruleXCatchClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_declaredParam_2_0 = null;

        EObject lv_expression_4_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:5222:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
            // InternalXbase.g:5223:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            {
            // InternalXbase.g:5223:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            // InternalXbase.g:5224:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
            {
            // InternalXbase.g:5224:3: ( ( 'catch' )=>otherlv_0= 'catch' )
            // InternalXbase.g:5225:4: ( 'catch' )=>otherlv_0= 'catch'
            {
            otherlv_0=(Token)match(input,84,FOLLOW_44); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
              			
            }

            }

            otherlv_1=(Token)match(input,49,FOLLOW_13); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
              		
            }
            // InternalXbase.g:5235:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
            // InternalXbase.g:5236:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            {
            // InternalXbase.g:5236:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            // InternalXbase.g:5237:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
              				
            }
            pushFollow(FOLLOW_29);
            lv_declaredParam_2_0=ruleFullJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              					}
              					set(
              						current,
              						"declaredParam",
              						lv_declaredParam_2_0,
              						"org.eclipse.xtext.xbase.Xbase.FullJvmFormalParameter");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            otherlv_3=(Token)match(input,50,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
              		
            }
            // InternalXbase.g:5258:3: ( (lv_expression_4_0= ruleXExpression ) )
            // InternalXbase.g:5259:4: (lv_expression_4_0= ruleXExpression )
            {
            // InternalXbase.g:5259:4: (lv_expression_4_0= ruleXExpression )
            // InternalXbase.g:5260:5: lv_expression_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_expression_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              					}
              					set(
              						current,
              						"expression",
              						lv_expression_4_0,
              						"org.eclipse.xtext.xbase.Xbase.XExpression");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
238674
public final void entryRuleXExpression() throws RecognitionException {
        try {
            // InternalXbase.g:59:1: ( ruleXExpression EOF )
            // InternalXbase.g:60:1: ruleXExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXExpression();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getXExpressionRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
542484
public final void ruleXDoWhileExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1046:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
            // InternalXbase.g:1047:2: ( ( rule__XDoWhileExpression__Group__0 ) )
            {
            // InternalXbase.g:1047:2: ( ( rule__XDoWhileExpression__Group__0 ) )
            // InternalXbase.g:1048:3: ( rule__XDoWhileExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1049:3: ( rule__XDoWhileExpression__Group__0 )
            // InternalXbase.g:1049:4: rule__XDoWhileExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XDoWhileExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
1261712
public final void ruleXIfExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:896:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
            // InternalXbase.g:897:2: ( ( rule__XIfExpression__Group__0 ) )
            {
            // InternalXbase.g:897:2: ( ( rule__XIfExpression__Group__0 ) )
            // InternalXbase.g:898:3: ( rule__XIfExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:899:3: ( rule__XIfExpression__Group__0 )
            // InternalXbase.g:899:4: rule__XIfExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XIfExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXIfExpressionAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
919672
public final EObject entryRuleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXRelationalExpression = null;


        try {
            // InternalPureXbase.g:1355:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
            // InternalPureXbase.g:1356:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleXRelationalExpression=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXRelationalExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
403814
public final EObject rulePrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_ParenthesizedExpression_0 = null;

        EObject this_ReferenceOrLiteral_1 = null;


         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:1154:28: ( (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_ReferenceOrLiteral_1= ruleReferenceOrLiteral ) )
            // InternalSimpleAntlr.g:1155:1: (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_ReferenceOrLiteral_1= ruleReferenceOrLiteral )
            {
            // InternalSimpleAntlr.g:1155:1: (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_ReferenceOrLiteral_1= ruleReferenceOrLiteral )
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==RULE_OPEN) ) {
                alt22=1;
            }
            else if ( (LA22_0==RULE_ID) ) {
                alt22=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }
            switch (alt22) {
                case 1 :
                    // InternalSimpleAntlr.g:1156:2: this_ParenthesizedExpression_0= ruleParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getParenthesizedExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ParenthesizedExpression_0=ruleParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ParenthesizedExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalSimpleAntlr.g:1169:2: this_ReferenceOrLiteral_1= ruleReferenceOrLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getReferenceOrLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ReferenceOrLiteral_1=ruleReferenceOrLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ReferenceOrLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }