InternalXbase.g:792:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
967833
public final void ruleXClosure() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:796:2: ( ( ( rule__XClosure__Group__0 ) ) )
            // InternalXbase.g:797:2: ( ( rule__XClosure__Group__0 ) )
            {
            // InternalXbase.g:797:2: ( ( rule__XClosure__Group__0 ) )
            // InternalXbase.g:798:3: ( rule__XClosure__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXClosureAccess().getGroup()); 
            }
            // InternalXbase.g:799:3: ( rule__XClosure__Group__0 )
            // InternalXbase.g:799:4: rule__XClosure__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XClosure__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
76425
public final void synpred4_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:2119:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
        // InternalXbaseWithAnnotations.g:2119:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
        {
        // InternalXbaseWithAnnotations.g:2119:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
        // InternalXbaseWithAnnotations.g:2120:3: ( rule__XAnnotationElementValue__Group_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
        }
        // InternalXbaseWithAnnotations.g:2121:3: ( rule__XAnnotationElementValue__Group_0__0 )
        // InternalXbaseWithAnnotations.g:2121:4: rule__XAnnotationElementValue__Group_0__0
        {
        pushFollow(FOLLOW_2);
        rule__XAnnotationElementValue__Group_0__0();

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

        }


        }


        }
    }
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 ;
    }
1008323
public final void synpred25_InternalXbase_fragment() throws RecognitionException {   
        // InternalXbase.g:2195:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
        // InternalXbase.g:2195:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
        {
        // InternalXbase.g:2195:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
        // InternalXbase.g:2196:3: ( rule__OpOther__Group_6_1_0__0 )
        {
        if ( state.backtracking==0 ) {
           before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
        }
        // InternalXbase.g:2197:3: ( rule__OpOther__Group_6_1_0__0 )
        // InternalXbase.g:2197:4: rule__OpOther__Group_6_1_0__0
        {
        pushFollow(FOLLOW_2);
        rule__OpOther__Group_6_1_0__0();

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

        }


        }


        }
    }
1172882
public final void ruleUntilToken() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:1308:2: ( ( ( rule__UntilToken__Group__0 ) ) )
            // InternalXtext.g:1309:2: ( ( rule__UntilToken__Group__0 ) )
            {
            // InternalXtext.g:1309:2: ( ( rule__UntilToken__Group__0 ) )
            // InternalXtext.g:1310:3: ( rule__UntilToken__Group__0 )
            {
             before(grammarAccess.getUntilTokenAccess().getGroup()); 
            // InternalXtext.g:1311:3: ( rule__UntilToken__Group__0 )
            // InternalXtext.g:1311:4: rule__UntilToken__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__UntilToken__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getUntilTokenAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
539628
public final void ruleXExpressionInClosure() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:821:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
            // InternalXbase.g:822:2: ( ( rule__XExpressionInClosure__Group__0 ) )
            {
            // InternalXbase.g:822:2: ( ( rule__XExpressionInClosure__Group__0 ) )
            // InternalXbase.g:823:3: ( rule__XExpressionInClosure__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
            }
            // InternalXbase.g:824:3: ( rule__XExpressionInClosure__Group__0 )
            // InternalXbase.g:824:4: rule__XExpressionInClosure__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XExpressionInClosure__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
43906
public final void synpred14_InternalXbase_fragment() throws RecognitionException {   
        // InternalXbase.g:1627:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
        // InternalXbase.g:1627:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        {
        // InternalXbase.g:1627:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        // InternalXbase.g:1628:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
        {
        // InternalXbase.g:1628:7: ()
        // InternalXbase.g:1629:7: 
        {
        }

        // InternalXbase.g:1630:7: ( '.' | ( ( '::' ) ) )
        int alt111=2;
        int LA111_0 = input.LA(1);

        if ( (LA111_0==45) ) {
            alt111=1;
        }
        else if ( (LA111_0==46) ) {
            alt111=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 111, 0, input);

            throw nvae;
        }
        switch (alt111) {
            case 1 :
                // InternalXbase.g:1631:8: '.'
                {
                match(input,45,FOLLOW_23); if (state.failed) return ;

                }
                break;
            case 2 :
                // InternalXbase.g:1633:8: ( ( '::' ) )
                {
                // InternalXbase.g:1633:8: ( ( '::' ) )
                // InternalXbase.g:1634:9: ( '::' )
                {
                // InternalXbase.g:1634:9: ( '::' )
                // InternalXbase.g:1635:10: '::'
                {
                match(input,46,FOLLOW_23); if (state.failed) return ;

                }


                }


                }
                break;

        }

        // InternalXbase.g:1639:7: ( ( ruleFeatureCallID ) )
        // InternalXbase.g:1640:8: ( ruleFeatureCallID )
        {
        // InternalXbase.g:1640:8: ( ruleFeatureCallID )
        // InternalXbase.g:1641:9: ruleFeatureCallID
        {
        pushFollow(FOLLOW_3);
        ruleFeatureCallID();

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

        }


        }

        pushFollow(FOLLOW_2);
        ruleOpSingleAssign();

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

        }


        }
    }
722611
public final void synpred31_InternalPureXbase_fragment() throws RecognitionException {   
        // InternalPureXbase.g:3189:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // InternalPureXbase.g:3189:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // InternalPureXbase.g:3189:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // InternalPureXbase.g:3190:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // InternalPureXbase.g:3190:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt130=2;
        int LA130_0 = input.LA(1);

        if ( (LA130_0==RULE_ID||LA130_0==15||LA130_0==41) ) {
            alt130=1;
        }
        switch (alt130) {
            case 1 :
                // InternalPureXbase.g:3191:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // InternalPureXbase.g:3191:6: ( ( ruleJvmFormalParameter ) )
                // InternalPureXbase.g:3192:7: ( ruleJvmFormalParameter )
                {
                // InternalPureXbase.g:3192:7: ( ruleJvmFormalParameter )
                // InternalPureXbase.g:3193:8: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_47);
                ruleJvmFormalParameter();

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

                }


                }

                // InternalPureXbase.g:3196:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop129:
                do {
                    int alt129=2;
                    int LA129_0 = input.LA(1);

                    if ( (LA129_0==57) ) {
                        alt129=1;
                    }


                    switch (alt129) {
                	case 1 :
                	    // InternalPureXbase.g:3197:7: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,57,FOLLOW_11); if (state.failed) return ;
                	    // InternalPureXbase.g:3198:7: ( ( ruleJvmFormalParameter ) )
                	    // InternalPureXbase.g:3199:8: ( ruleJvmFormalParameter )
                	    {
                	    // InternalPureXbase.g:3199:8: ( ruleJvmFormalParameter )
                	    // InternalPureXbase.g:3200:9: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_47);
                	    ruleJvmFormalParameter();

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

                	    }


                	    }


                	    }
                	    break;

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


                }
                break;

        }

        // InternalPureXbase.g:3205:5: ( ( '|' ) )
        // InternalPureXbase.g:3206:6: ( '|' )
        {
        // InternalPureXbase.g:3206:6: ( '|' )
        // InternalPureXbase.g:3207:7: '|'
        {
        match(input,63,FOLLOW_2); if (state.failed) return ;

        }


        }


        }


        }
    }
1355793
public final void entryRuleXClosure() throws RecognitionException {
        try {
            // InternalXbase.g:784:1: ( ruleXClosure EOF )
            // InternalXbase.g:785:1: ruleXClosure EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXClosureRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleXClosure();

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

            }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtext.g:608:2: ( ( ( rule__LiteralCondition__Group__0 ) ) )
            // InternalXtext.g:609:2: ( ( rule__LiteralCondition__Group__0 ) )
            {
            // InternalXtext.g:609:2: ( ( rule__LiteralCondition__Group__0 ) )
            // InternalXtext.g:610:3: ( rule__LiteralCondition__Group__0 )
            {
             before(grammarAccess.getLiteralConditionAccess().getGroup()); 
            // InternalXtext.g:611:3: ( rule__LiteralCondition__Group__0 )
            // InternalXtext.g:611:4: rule__LiteralCondition__Group__0
            {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__LiteralCondition__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getLiteralConditionAccess().getGroup()); 

            }


            }

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

            	restoreStackSize(stackSize);

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1421:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
            // InternalXbase.g:1422:2: ( ( rule__XThrowExpression__Group__0 ) )
            {
            // InternalXbase.g:1422:2: ( ( rule__XThrowExpression__Group__0 ) )
            // InternalXbase.g:1423:3: ( rule__XThrowExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:1424:3: ( rule__XThrowExpression__Group__0 )
            // InternalXbase.g:1424:4: rule__XThrowExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XThrowExpression__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        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 ;

        }


        }


        }


        }
    }
41305
public final void synpred32_InternalXbaseWithAnnotations_fragment() throws RecognitionException {   
        // InternalXbaseWithAnnotations.g:3483:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
        // InternalXbaseWithAnnotations.g:3483:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
        {
        // InternalXbaseWithAnnotations.g:3483:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
        // InternalXbaseWithAnnotations.g:3484:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
        {
        match(input,14,FOLLOW_22); if (state.failed) return ;
        // InternalXbaseWithAnnotations.g:3485:7: ( ( ruleJvmFormalParameter ) )
        // InternalXbaseWithAnnotations.g:3486:8: ( ruleJvmFormalParameter )
        {
        // InternalXbaseWithAnnotations.g:3486:8: ( ruleJvmFormalParameter )
        // InternalXbaseWithAnnotations.g:3487:9: ruleJvmFormalParameter
        {
        pushFollow(FOLLOW_51);
        ruleJvmFormalParameter();

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

        }


        }

        match(input,62,FOLLOW_2); 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 ;
    }
463495
public final EObject ruleUnorderedGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_Group_0 = null;

        EObject lv_elements_3_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1131:2: ( (this_Group_0= ruleGroup ( () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+ )? ) )
            // InternalXtext.g:1132:2: (this_Group_0= ruleGroup ( () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+ )? )
            {
            // InternalXtext.g:1132:2: (this_Group_0= ruleGroup ( () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+ )? )
            // InternalXtext.g:1133:3: this_Group_0= ruleGroup ( () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+ )?
            {

            			newCompositeNode(grammarAccess.getUnorderedGroupAccess().getGroupParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_30);
            this_Group_0=ruleGroup();

            state._fsp--;


            			current = this_Group_0;
            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:1141:3: ( () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+ )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==31) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // InternalXtext.g:1142:4: () (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+
                    {
                    // InternalXtext.g:1142:4: ()
                    // InternalXtext.g:1143:5: 
                    {

                    					current = forceCreateModelElementAndAdd(
                    						grammarAccess.getUnorderedGroupAccess().getUnorderedGroupElementsAction_1_0(),
                    						current);
                    				

                    }

                    // InternalXtext.g:1149:4: (otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) ) )+
                    int cnt29=0;
                    loop29:
                    do {
                        int alt29=2;
                        int LA29_0 = input.LA(1);

                        if ( (LA29_0==31) ) {
                            alt29=1;
                        }


                        switch (alt29) {
                    	case 1 :
                    	    // InternalXtext.g:1150:5: otherlv_2= '&' ( (lv_elements_3_0= ruleGroup ) )
                    	    {
                    	    otherlv_2=(Token)match(input,31,FollowSets000.FOLLOW_28); 

                    	    					newLeafNode(otherlv_2, grammarAccess.getUnorderedGroupAccess().getAmpersandKeyword_1_1_0());
                    	    				
                    	    // InternalXtext.g:1154:5: ( (lv_elements_3_0= ruleGroup ) )
                    	    // InternalXtext.g:1155:6: (lv_elements_3_0= ruleGroup )
                    	    {
                    	    // InternalXtext.g:1155:6: (lv_elements_3_0= ruleGroup )
                    	    // InternalXtext.g:1156:7: lv_elements_3_0= ruleGroup
                    	    {

                    	    							newCompositeNode(grammarAccess.getUnorderedGroupAccess().getElementsGroupParserRuleCall_1_1_1_0());
                    	    						
                    	    pushFollow(FollowSets000.FOLLOW_30);
                    	    lv_elements_3_0=ruleGroup();

                    	    state._fsp--;


                    	    							if (current==null) {
                    	    								current = createModelElementForParent(grammarAccess.getUnorderedGroupRule());
                    	    							}
                    	    							add(
                    	    								current,
                    	    								"elements",
                    	    								lv_elements_3_0,
                    	    								"org.eclipse.xtext.Xtext.Group");
                    	    							afterParserOrEnumRuleCall();
                    	    						

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt29 >= 1 ) break loop29;
                                EarlyExitException eee =
                                    new EarlyExitException(29, input);
                                throw eee;
                        }
                        cnt29++;
                    } while (true);


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
162031
public final void synpred29_InternalXbase_fragment() throws RecognitionException {   
        // InternalXbase.g:3868:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
        // InternalXbase.g:3868:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        {
        // InternalXbase.g:3868:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        // InternalXbase.g:3869:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
        {
        // InternalXbase.g:3869:6: ( ( ruleJvmTypeReference ) )
        // InternalXbase.g:3870:7: ( ruleJvmTypeReference )
        {
        // InternalXbase.g:3870:7: ( ruleJvmTypeReference )
        // InternalXbase.g:3871:8: ruleJvmTypeReference
        {
        pushFollow(FOLLOW_61);
        ruleJvmTypeReference();

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

        }


        }

        // InternalXbase.g:3874:6: ( ( ruleValidID ) )
        // InternalXbase.g:3875:7: ( ruleValidID )
        {
        // InternalXbase.g:3875:7: ( ruleValidID )
        // InternalXbase.g:3876:8: ruleValidID
        {
        pushFollow(FOLLOW_2);
        ruleValidID();

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

        }


        }


        }


        }
    }