InternalXbase.g:592:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
543392
public final void ruleXPostfixOperation() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:596:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
            // InternalXbase.g:597:2: ( ( rule__XPostfixOperation__Group__0 ) )
            {
            // InternalXbase.g:597:2: ( ( rule__XPostfixOperation__Group__0 ) )
            // InternalXbase.g:598:3: ( rule__XPostfixOperation__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
            }
            // InternalXbase.g:599:3: ( rule__XPostfixOperation__Group__0 )
            // InternalXbase.g:599:4: rule__XPostfixOperation__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XPostfixOperation__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        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 ;
    }
242245
public final void ruleXEqualityExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:271:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
            // InternalXbase.g:272:2: ( ( rule__XEqualityExpression__Group__0 ) )
            {
            // InternalXbase.g:272:2: ( ( rule__XEqualityExpression__Group__0 ) )
            // InternalXbase.g:273:3: ( rule__XEqualityExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:274:3: ( rule__XEqualityExpression__Group__0 )
            // InternalXbase.g:274:4: rule__XEqualityExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XEqualityExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
441245
public final void synpred20_InternalXbase_fragment() throws RecognitionException {   
        // InternalXbase.g:2096:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
        // InternalXbase.g:2096:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
        {
        // InternalXbase.g:2096:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
        // InternalXbase.g:2097:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
        {
        // InternalXbase.g:2097:5: ()
        // InternalXbase.g:2098:5: 
        {
        }

        match(input,64,FOLLOW_44); if (state.failed) return ;
        match(input,49,FOLLOW_13); if (state.failed) return ;
        // InternalXbase.g:2101:5: ( ( ruleJvmFormalParameter ) )
        // InternalXbase.g:2102:6: ( ruleJvmFormalParameter )
        {
        // InternalXbase.g:2102:6: ( ruleJvmFormalParameter )
        // InternalXbase.g:2103:7: ruleJvmFormalParameter
        {
        pushFollow(FOLLOW_47);
        ruleJvmFormalParameter();

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

        }


        }

        match(input,61,FOLLOW_2); if (state.failed) return ;

        }


        }
    }
661341
public final void ruleXWhileExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1021:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
            // InternalXbase.g:1022:2: ( ( rule__XWhileExpression__Group__0 ) )
            {
            // InternalXbase.g:1022:2: ( ( rule__XWhileExpression__Group__0 ) )
            // InternalXbase.g:1023:3: ( rule__XWhileExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1024:3: ( rule__XWhileExpression__Group__0 )
            // InternalXbase.g:1024:4: rule__XWhileExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XWhileExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
680025
public final void synpred20_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:2127:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
        // InternalXbaseWithAnnotations.g:2127:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        {
        // InternalXbaseWithAnnotations.g:2127:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        // InternalXbaseWithAnnotations.g:2128:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
        {
        // InternalXbaseWithAnnotations.g:2128:7: ()
        // InternalXbaseWithAnnotations.g:2129:7: 
        {
        }

        // InternalXbaseWithAnnotations.g:2130:7: ( '.' | ( ( '::' ) ) )
        int alt123=2;
        int LA123_0 = input.LA(1);

        if ( (LA123_0==52) ) {
            alt123=1;
        }
        else if ( (LA123_0==53) ) {
            alt123=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 123, 0, input);

            throw nvae;
        }
        switch (alt123) {
            case 1 :
                // InternalXbaseWithAnnotations.g:2131:8: '.'
                {
                match(input,52,FOLLOW_32); if (state.failed) return ;

                }
                break;
            case 2 :
                // InternalXbaseWithAnnotations.g:2133:8: ( ( '::' ) )
                {
                // InternalXbaseWithAnnotations.g:2133:8: ( ( '::' ) )
                // InternalXbaseWithAnnotations.g:2134:9: ( '::' )
                {
                // InternalXbaseWithAnnotations.g:2134:9: ( '::' )
                // InternalXbaseWithAnnotations.g:2135:10: '::'
                {
                match(input,53,FOLLOW_32); if (state.failed) return ;

                }


                }


                }
                break;

        }

        // InternalXbaseWithAnnotations.g:2139:7: ( ( ruleFeatureCallID ) )
        // InternalXbaseWithAnnotations.g:2140:8: ( ruleFeatureCallID )
        {
        // InternalXbaseWithAnnotations.g:2140:8: ( ruleFeatureCallID )
        // InternalXbaseWithAnnotations.g:2141:9: ruleFeatureCallID
        {
        pushFollow(FOLLOW_8);
        ruleFeatureCallID();

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

        }


        }

        pushFollow(FOLLOW_2);
        ruleOpSingleAssign();

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

        }


        }
    }
1072863
public final void ruleXTypeLiteral() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1396:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
            // InternalXbase.g:1397:2: ( ( rule__XTypeLiteral__Group__0 ) )
            {
            // InternalXbase.g:1397:2: ( ( rule__XTypeLiteral__Group__0 ) )
            // InternalXbase.g:1398:3: ( rule__XTypeLiteral__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
            }
            // InternalXbase.g:1399:3: ( rule__XTypeLiteral__Group__0 )
            // InternalXbase.g:1399:4: rule__XTypeLiteral__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XTypeLiteral__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
944146
public final void synpred2_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:2077:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
        // InternalXbaseWithAnnotations.g:2077:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
        {
        // InternalXbaseWithAnnotations.g:2077:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
        // InternalXbaseWithAnnotations.g:2078:3: ( rule__XAnnotation__Group_3_1_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
        }
        // InternalXbaseWithAnnotations.g:2079:3: ( rule__XAnnotation__Group_3_1_0__0 )
        // InternalXbaseWithAnnotations.g:2079:4: rule__XAnnotation__Group_3_1_0__0
        {
        pushFollow(FOLLOW_2);
        rule__XAnnotation__Group_3_1_0__0();

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

        }


        }


        }
    }
143540
public final void ruleXParenthesizedExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:871:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
            // InternalXbase.g:872:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
            {
            // InternalXbase.g:872:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
            // InternalXbase.g:873:3: ( rule__XParenthesizedExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:874:3: ( rule__XParenthesizedExpression__Group__0 )
            // InternalXbase.g:874:4: rule__XParenthesizedExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XParenthesizedExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
935360
public final EObject entryRuleXPostfixOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXPostfixOperation = null;


        try {
            // InternalSARL.g:13146:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
            // InternalSARL.g:13147:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleXPostfixOperation=ruleXPostfixOperation();

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

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1243219
public final void entryRuleXIfExpression() throws RecognitionException {
        try {
            // InternalXbase.g:884:1: ( ruleXIfExpression EOF )
            // InternalXbase.g:885:1: ruleXIfExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXIfExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXIfExpression();

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

            }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1371:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
            // InternalXbase.g:1372:2: ( ( rule__XStringLiteral__Group__0 ) )
            {
            // InternalXbase.g:1372:2: ( ( rule__XStringLiteral__Group__0 ) )
            // InternalXbase.g:1373:3: ( rule__XStringLiteral__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
            }
            // InternalXbase.g:1374:3: ( rule__XStringLiteral__Group__0 )
            // InternalXbase.g:1374:4: rule__XStringLiteral__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XStringLiteral__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
36615
public final void ruleXMultiplicativeExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:471:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
            // InternalXbase.g:472:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
            {
            // InternalXbase.g:472:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
            // InternalXbase.g:473:3: ( rule__XMultiplicativeExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:474:3: ( rule__XMultiplicativeExpression__Group__0 )
            // InternalXbase.g:474:4: rule__XMultiplicativeExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XMultiplicativeExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
756760
public final void entryRuleXPrimaryExpression() throws RecognitionException {
        try {
            // InternalXbase.g:659:1: ( ruleXPrimaryExpression EOF )
            // InternalXbase.g:660:1: ruleXPrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXPrimaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXPrimaryExpression();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
31389
public final void synpred2_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:121:7: ( ( ( ( ruleValidID ) ) '=' ) )
        // InternalXbaseWithAnnotations.g:121:8: ( ( ( ruleValidID ) ) '=' )
        {
        // InternalXbaseWithAnnotations.g:121:8: ( ( ( ruleValidID ) ) '=' )
        // InternalXbaseWithAnnotations.g:122:8: ( ( ruleValidID ) ) '='
        {
        // InternalXbaseWithAnnotations.g:122:8: ( ( ruleValidID ) )
        // InternalXbaseWithAnnotations.g:123:9: ( ruleValidID )
        {
        // InternalXbaseWithAnnotations.g:123:9: ( ruleValidID )
        // InternalXbaseWithAnnotations.g:124:10: ruleValidID
        {
        pushFollow(FOLLOW_8);
        ruleValidID();

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

        }


        }

        match(input,17,FOLLOW_2); if (state.failed) return ;

        }


        }
    }
585025
function parsePostfixExpression() {
        var expr, token, startToken = lookahead;

        expr = inheritCoverGrammar(parseLeftHandSideExpressionAllowCall);

        if (!hasLineTerminator && lookahead.type === Token.Punctuator) {
            if (match('++') || match('--')) {
                // ECMA-262 11.3.1, 11.3.2
                if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
                    tolerateError(Messages.StrictLHSPostfix);
                }

                if (!isAssignmentTarget) {
                    tolerateError(Messages.InvalidLHSInAssignment);
                }

                isAssignmentTarget = isBindingElement = false;

                token = lex();
                expr = new WrappingNode(startToken).finishPostfixExpression(token.value, expr);
            }
        }

        return expr;
    }
772177
public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XUnaryOperation_0 = null;

        EObject lv_rightOperand_3_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:1216:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
            // InternalXbase.g:1217:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            {
            // InternalXbase.g:1217:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            // InternalXbase.g:1218:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_19);
            this_XUnaryOperation_0=ruleXUnaryOperation();

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

              			current = this_XUnaryOperation_0;
              			afterParserOrEnumRuleCall();
              		
            }
            // InternalXbase.g:1226:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            loop17:
            do {
                int alt17=2;
                switch ( input.LA(1) ) {
                case 37:
                    {
                    int LA17_2 = input.LA(2);

                    if ( (synpred11_InternalXbase()) ) {
                        alt17=1;
                    }


                    }
                    break;
                case 38:
                    {
                    int LA17_3 = input.LA(2);

                    if ( (synpred11_InternalXbase()) ) {
                        alt17=1;
                    }


                    }
                    break;
                case 39:
                    {
                    int LA17_4 = input.LA(2);

                    if ( (synpred11_InternalXbase()) ) {
                        alt17=1;
                    }


                    }
                    break;
                case 40:
                    {
                    int LA17_5 = input.LA(2);

                    if ( (synpred11_InternalXbase()) ) {
                        alt17=1;
                    }


                    }
                    break;

                }

                switch (alt17) {
            	case 1 :
            	    // InternalXbase.g:1227:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    {
            	    // InternalXbase.g:1227:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
            	    // InternalXbase.g:1228:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
            	    {
            	    // InternalXbase.g:1238:5: ( () ( ( ruleOpMulti ) ) )
            	    // InternalXbase.g:1239:6: () ( ( ruleOpMulti ) )
            	    {
            	    // InternalXbase.g:1239:6: ()
            	    // InternalXbase.g:1240:7: 
            	    {
            	    if ( state.backtracking==0 ) {

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

            	    }

            	    // InternalXbase.g:1246:6: ( ( ruleOpMulti ) )
            	    // InternalXbase.g:1247:7: ( ruleOpMulti )
            	    {
            	    // InternalXbase.g:1247:7: ( ruleOpMulti )
            	    // InternalXbase.g:1248:8: ruleOpMulti
            	    {
            	    if ( state.backtracking==0 ) {

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

            	      								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
            	      							
            	    }
            	    pushFollow(FOLLOW_4);
            	    ruleOpMulti();

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

            	      								afterParserOrEnumRuleCall();
            	      							
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // InternalXbase.g:1264:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    // InternalXbase.g:1265:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    {
            	    // InternalXbase.g:1265:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    // InternalXbase.g:1266:6: lv_rightOperand_3_0= ruleXUnaryOperation
            	    {
            	    if ( state.backtracking==0 ) {

            	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
            	      					
            	    }
            	    pushFollow(FOLLOW_19);
            	    lv_rightOperand_3_0=ruleXUnaryOperation();

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

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

            	    }


            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }