InternalPureXbase.g:6436:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
339064
public final EObject ruleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:6442:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // InternalPureXbase.g:6443:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // InternalPureXbase.g:6443:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // InternalPureXbase.g:6444:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,82,FOLLOW_11); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
              		
            }
            // InternalPureXbase.g:6448:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // InternalPureXbase.g:6449:4: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // InternalPureXbase.g:6449:4: (lv_typeReference_1_0= ruleJvmTypeReference )
            // InternalPureXbase.g:6450:5: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_typeReference_1_0=ruleJvmTypeReference();

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

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
              					}
              					set(
              						current,
              						"typeReference",
              						lv_typeReference_1_0,
              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        Token lv_type_0_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // InternalSimpleAntlr.g:457:28: ( ( ( (lv_type_0_0= RULE_ID ) ) ( (lv_name_1_0= RULE_ID ) ) ) )
            // InternalSimpleAntlr.g:458:1: ( ( (lv_type_0_0= RULE_ID ) ) ( (lv_name_1_0= RULE_ID ) ) )
            {
            // InternalSimpleAntlr.g:458:1: ( ( (lv_type_0_0= RULE_ID ) ) ( (lv_name_1_0= RULE_ID ) ) )
            // InternalSimpleAntlr.g:458:2: ( (lv_type_0_0= RULE_ID ) ) ( (lv_name_1_0= RULE_ID ) )
            {
            // InternalSimpleAntlr.g:458:2: ( (lv_type_0_0= RULE_ID ) )
            // InternalSimpleAntlr.g:459:1: (lv_type_0_0= RULE_ID )
            {
            // InternalSimpleAntlr.g:459:1: (lv_type_0_0= RULE_ID )
            // InternalSimpleAntlr.g:460:3: lv_type_0_0= RULE_ID
            {
            lv_type_0_0=(Token)match(input,RULE_ID,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_type_0_0, grammarAccess.getParameterAccess().getTypeIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getParameterRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"type",
                      		lv_type_0_0, 
                      		"org.eclipse.xtext.generator.parser.antlr.debug.SimpleAntlr.ID");
              	    
            }

            }


            }

            // InternalSimpleAntlr.g:476:2: ( (lv_name_1_0= RULE_ID ) )
            // InternalSimpleAntlr.g:477:1: (lv_name_1_0= RULE_ID )
            {
            // InternalSimpleAntlr.g:477:1: (lv_name_1_0= RULE_ID )
            // InternalSimpleAntlr.g:478:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getParameterRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.xtext.generator.parser.antlr.debug.SimpleAntlr.ID");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
628830
public final EObject entryRuleJvmTypeParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmTypeParameter = null;


        try {
            // InternalSARL.g:16562:57: (iv_ruleJvmTypeParameter= ruleJvmTypeParameter EOF )
            // InternalSARL.g:16563:2: iv_ruleJvmTypeParameter= ruleJvmTypeParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmTypeParameterRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleJvmTypeParameter=ruleJvmTypeParameter();

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

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
262439
@SuppressWarnings("fallthrough")
    boolean isUnboundMemberRef() {
        int pos = 0, depth = 0;
        outer: for (Token t = S.token(pos) ; ; t = S.token(++pos)) {
            switch (t.kind) {
                case IDENTIFIER: case UNDERSCORE: case QUES: case EXTENDS: case SUPER:
                case DOT: case RBRACKET: case LBRACKET: case COMMA:
                case BYTE: case SHORT: case INT: case LONG: case FLOAT:
                case DOUBLE: case BOOLEAN: case CHAR:
                case MONKEYS_AT:
                    break;

                case LPAREN:
                    // skip annotation values
                    int nesting = 0;
                    for (; ; pos++) {
                        TokenKind tk2 = S.token(pos).kind;
                        switch (tk2) {
                            case EOF:
                                return false;
                            case LPAREN:
                                nesting++;
                                break;
                            case RPAREN:
                                nesting--;
                                if (nesting == 0) {
                                    continue outer;
                                }
                                break;
                        }
                    }

                case LT:
                    depth++; break;
                case GTGTGT:
                    depth--;
                case GTGT:
                    depth--;
                case GT:
                    depth--;
                    if (depth == 0) {
                        TokenKind nextKind = S.token(pos + 1).kind;
                        return
                            nextKind == TokenKind.DOT ||
                            nextKind == TokenKind.LBRACKET ||
                            nextKind == TokenKind.COLCOL;
                    }
                    break;
                default:
                    return false;
            }
        }
    }
349781
public final void ruleJvmUpperBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1754:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
            // InternalXbase.g:1755:2: ( ( rule__JvmUpperBound__Group__0 ) )
            {
            // InternalXbase.g:1755:2: ( ( rule__JvmUpperBound__Group__0 ) )
            // InternalXbase.g:1756:3: ( rule__JvmUpperBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
            }
            // InternalXbase.g:1757:3: ( rule__JvmUpperBound__Group__0 )
            // InternalXbase.g:1757:4: rule__JvmUpperBound__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__JvmUpperBound__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
994953
public final void ruleJvmLowerBound() throws RecognitionException {

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

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
358618
public final EObject ruleJvmTypeParameter() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_constraints_1_0 = null;

        EObject lv_constraints_2_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:16575:2: ( ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? ) )
            // InternalSARL.g:16576:2: ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? )
            {
            // InternalSARL.g:16576:2: ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? )
            // InternalSARL.g:16577:3: ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )?
            {
            // InternalSARL.g:16577:3: ( (lv_name_0_0= ruleValidID ) )
            // InternalSARL.g:16578:4: (lv_name_0_0= ruleValidID )
            {
            // InternalSARL.g:16578:4: (lv_name_0_0= ruleValidID )
            // InternalSARL.g:16579:5: lv_name_0_0= ruleValidID
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getNameValidIDParserRuleCall_0_0());
              				
            }
            pushFollow(FOLLOW_155);
            lv_name_0_0=ruleValidID();

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

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
              					}
              					set(
              						current,
              						"name",
              						lv_name_0_0,
              						"org.eclipse.xtend.core.Xtend.ValidID");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalSARL.g:16596:3: ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )?
            int alt380=2;
            int LA380_0 = input.LA(1);

            if ( (LA380_0==28) ) {
                alt380=1;
            }
            switch (alt380) {
                case 1 :
                    // InternalSARL.g:16597:4: ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )*
                    {
                    // InternalSARL.g:16597:4: ( (lv_constraints_1_0= ruleJvmUpperBound ) )
                    // InternalSARL.g:16598:5: (lv_constraints_1_0= ruleJvmUpperBound )
                    {
                    // InternalSARL.g:16598:5: (lv_constraints_1_0= ruleJvmUpperBound )
                    // InternalSARL.g:16599:6: lv_constraints_1_0= ruleJvmUpperBound
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getConstraintsJvmUpperBoundParserRuleCall_1_0_0());
                      					
                    }
                    pushFollow(FOLLOW_154);
                    lv_constraints_1_0=ruleJvmUpperBound();

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

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
                      						}
                      						add(
                      							current,
                      							"constraints",
                      							lv_constraints_1_0,
                      							"org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalSARL.g:16616:4: ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )*
                    loop379:
                    do {
                        int alt379=2;
                        int LA379_0 = input.LA(1);

                        if ( (LA379_0==144) ) {
                            alt379=1;
                        }


                        switch (alt379) {
                    	case 1 :
                    	    // InternalSARL.g:16617:5: (lv_constraints_2_0= ruleJvmUpperBoundAnded )
                    	    {
                    	    // InternalSARL.g:16617:5: (lv_constraints_2_0= ruleJvmUpperBoundAnded )
                    	    // InternalSARL.g:16618:6: lv_constraints_2_0= ruleJvmUpperBoundAnded
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      						newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_1_1_0());
                    	      					
                    	    }
                    	    pushFollow(FOLLOW_154);
                    	    lv_constraints_2_0=ruleJvmUpperBoundAnded();

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

                    	      						if (current==null) {
                    	      							current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
                    	      						}
                    	      						add(
                    	      							current,
                    	      							"constraints",
                    	      							lv_constraints_2_0,
                    	      							"org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
                    	      						afterParserOrEnumRuleCall();
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

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


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
580192
public final void ruleJvmWildcardTypeReference() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1729:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
            // InternalXbase.g:1730:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
            {
            // InternalXbase.g:1730:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
            // InternalXbase.g:1731:3: ( rule__JvmWildcardTypeReference__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
            }
            // InternalXbase.g:1732:3: ( rule__JvmWildcardTypeReference__Group__0 )
            // InternalXbase.g:1732:4: rule__JvmWildcardTypeReference__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__JvmWildcardTypeReference__Group__0();

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

            }

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

            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
640642
public final void entryRuleTypeRef() throws RecognitionException {
        try {
            // InternalXtext.g:296:1: ( ruleTypeRef EOF )
            // InternalXtext.g:297:1: ruleTypeRef EOF
            {
             before(grammarAccess.getTypeRefRule()); 
            pushFollow(FollowSets000.FOLLOW_1);
            ruleTypeRef();

            state._fsp--;

             after(grammarAccess.getTypeRefRule()); 
            match(input,EOF,FollowSets000.FOLLOW_2); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
403047
public final EObject ruleSarlXLoopFormalParameter() throws RecognitionException {
        EObject current = null;

        Token lv_extension_1_0=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_parameterType_4_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:8462:2: ( ( () ( (lv_extension_1_0= 'extension' ) )? ( (lv_name_2_0= ruleValidID ) ) (otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) ) )? ) )
            // InternalSARL.g:8463:2: ( () ( (lv_extension_1_0= 'extension' ) )? ( (lv_name_2_0= ruleValidID ) ) (otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) ) )? )
            {
            // InternalSARL.g:8463:2: ( () ( (lv_extension_1_0= 'extension' ) )? ( (lv_name_2_0= ruleValidID ) ) (otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) ) )? )
            // InternalSARL.g:8464:3: () ( (lv_extension_1_0= 'extension' ) )? ( (lv_name_2_0= ruleValidID ) ) (otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) ) )?
            {
            // InternalSARL.g:8464:3: ()
            // InternalSARL.g:8465:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getSarlXLoopFormalParameterAccess().getXtendFormalParameterAction_0(),
              					current);
              			
            }

            }

            // InternalSARL.g:8471:3: ( (lv_extension_1_0= 'extension' ) )?
            int alt229=2;
            int LA229_0 = input.LA(1);

            if ( (LA229_0==45) ) {
                alt229=1;
            }
            switch (alt229) {
                case 1 :
                    // InternalSARL.g:8472:4: (lv_extension_1_0= 'extension' )
                    {
                    // InternalSARL.g:8472:4: (lv_extension_1_0= 'extension' )
                    // InternalSARL.g:8473:5: lv_extension_1_0= 'extension'
                    {
                    lv_extension_1_0=(Token)match(input,45,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					newLeafNode(lv_extension_1_0, grammarAccess.getSarlXLoopFormalParameterAccess().getExtensionExtensionKeyword_1_0());
                      				
                    }
                    if ( state.backtracking==0 ) {

                      					if (current==null) {
                      						current = createModelElement(grammarAccess.getSarlXLoopFormalParameterRule());
                      					}
                      					setWithLastConsumed(current, "extension", true, "extension");
                      				
                    }

                    }


                    }
                    break;

            }

            // InternalSARL.g:8485:3: ( (lv_name_2_0= ruleValidID ) )
            // InternalSARL.g:8486:4: (lv_name_2_0= ruleValidID )
            {
            // InternalSARL.g:8486:4: (lv_name_2_0= ruleValidID )
            // InternalSARL.g:8487:5: lv_name_2_0= ruleValidID
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getSarlXLoopFormalParameterAccess().getNameValidIDParserRuleCall_2_0());
              				
            }
            pushFollow(FOLLOW_74);
            lv_name_2_0=ruleValidID();

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

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getSarlXLoopFormalParameterRule());
              					}
              					set(
              						current,
              						"name",
              						lv_name_2_0,
              						"org.eclipse.xtend.core.Xtend.ValidID");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalSARL.g:8504:3: (otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) ) )?
            int alt230=2;
            int LA230_0 = input.LA(1);

            if ( (LA230_0==64) ) {
                alt230=1;
            }
            switch (alt230) {
                case 1 :
                    // InternalSARL.g:8505:4: otherlv_3= 'as' ( (lv_parameterType_4_0= ruleJvmTypeReference ) )
                    {
                    otherlv_3=(Token)match(input,64,FOLLOW_41); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				newLeafNode(otherlv_3, grammarAccess.getSarlXLoopFormalParameterAccess().getAsKeyword_3_0());
                      			
                    }
                    // InternalSARL.g:8509:4: ( (lv_parameterType_4_0= ruleJvmTypeReference ) )
                    // InternalSARL.g:8510:5: (lv_parameterType_4_0= ruleJvmTypeReference )
                    {
                    // InternalSARL.g:8510:5: (lv_parameterType_4_0= ruleJvmTypeReference )
                    // InternalSARL.g:8511:6: lv_parameterType_4_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getSarlXLoopFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_3_1_0());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_parameterType_4_0=ruleJvmTypeReference();

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

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getSarlXLoopFormalParameterRule());
                      						}
                      						set(
                      							current,
                      							"parameterType",
                      							lv_parameterType_4_0,
                      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        EObject iv_ruleJvmUpperBound = null;


        try {
            // InternalSARL.g:16394:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
            // InternalSARL.g:16395:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleJvmUpperBound=ruleJvmUpperBound();

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

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
897260
public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
        try {
            // InternalXbase.g:1159:1: ( ruleFullJvmFormalParameter EOF )
            // InternalXbase.g:1160:1: ruleFullJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getFullJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleFullJvmFormalParameter();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
108553
public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
        try {
            // InternalXbaseWithAnnotations.g:1942:1: ( ruleJvmLowerBoundAnded EOF )
            // InternalXbaseWithAnnotations.g:1943:1: ruleJvmLowerBoundAnded EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmLowerBoundAndedRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleJvmLowerBoundAnded();

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

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
171849
private JvmOperation getJvmOperation(IMethod method, JvmType context)
			throws JavaModelException {
		if (context instanceof JvmDeclaredType) {
			final JvmDeclaredType declaredType = (JvmDeclaredType) context;
			final ActionParameterTypes jdtSignature = this.actionPrototypeProvider.createParameterTypes(
					Flags.isVarargs(method.getFlags()),
					getFormalParameterProvider(method));
			for (final JvmOperation jvmOperation : declaredType.getDeclaredOperations()) {
				final ActionParameterTypes jvmSignature = this.actionPrototypeProvider.createParameterTypesFromJvmModel(
						jvmOperation.isVarArgs(),
						jvmOperation.getParameters());
				if (jvmSignature.equals(jdtSignature)) {
					return jvmOperation;
				}
			}
		}
		return null;
	}
688760
protected void sequence_JvmUpperBoundAnded(ISerializationContext context, JvmUpperBound semanticObject) {
		if (errorAcceptor != null) {
			if (transientValues.isValueTransient(semanticObject, TypesPackage.Literals.JVM_TYPE_CONSTRAINT__TYPE_REFERENCE) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, TypesPackage.Literals.JVM_TYPE_CONSTRAINT__TYPE_REFERENCE));
		}
		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
		feeder.accept(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0(), semanticObject.getTypeReference());
		feeder.finish();
	}
901329
public final EObject ruleNamedArgument() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_calledByName_1_0=null;
        EObject lv_value_2_0 = null;



        	enterRule();

        try {
            // InternalXtext.g:1657:2: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) ) )
            // InternalXtext.g:1658:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) )
            {
            // InternalXtext.g:1658:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) ) )
            // InternalXtext.g:1659:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )? ( (lv_value_2_0= ruleDisjunction ) )
            {
            // InternalXtext.g:1659:3: ( ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) ) )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==RULE_ID) ) {
                int LA42_1 = input.LA(2);

                if ( (LA42_1==35) ) {
                    alt42=1;
                }
            }
            switch (alt42) {
                case 1 :
                    // InternalXtext.g:1660:4: ( (otherlv_0= RULE_ID ) ) ( (lv_calledByName_1_0= '=' ) )
                    {
                    // InternalXtext.g:1660:4: ( (otherlv_0= RULE_ID ) )
                    // InternalXtext.g:1661:5: (otherlv_0= RULE_ID )
                    {
                    // InternalXtext.g:1661:5: (otherlv_0= RULE_ID )
                    // InternalXtext.g:1662:6: otherlv_0= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getNamedArgumentRule());
                    						}
                    					
                    otherlv_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_36); 

                    						newLeafNode(otherlv_0, grammarAccess.getNamedArgumentAccess().getParameterParameterCrossReference_0_0_0());
                    					

                    }


                    }

                    // InternalXtext.g:1673:4: ( (lv_calledByName_1_0= '=' ) )
                    // InternalXtext.g:1674:5: (lv_calledByName_1_0= '=' )
                    {
                    // InternalXtext.g:1674:5: (lv_calledByName_1_0= '=' )
                    // InternalXtext.g:1675:6: lv_calledByName_1_0= '='
                    {
                    lv_calledByName_1_0=(Token)match(input,35,FollowSets000.FOLLOW_26); 

                    						newLeafNode(lv_calledByName_1_0, grammarAccess.getNamedArgumentAccess().getCalledByNameEqualsSignKeyword_0_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getNamedArgumentRule());
                    						}
                    						setWithLastConsumed(current, "calledByName", true, "=");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalXtext.g:1688:3: ( (lv_value_2_0= ruleDisjunction ) )
            // InternalXtext.g:1689:4: (lv_value_2_0= ruleDisjunction )
            {
            // InternalXtext.g:1689:4: (lv_value_2_0= ruleDisjunction )
            // InternalXtext.g:1690:5: lv_value_2_0= ruleDisjunction
            {

            					newCompositeNode(grammarAccess.getNamedArgumentAccess().getValueDisjunctionParserRuleCall_1_0());
            				
            pushFollow(FollowSets000.FOLLOW_2);
            lv_value_2_0=ruleDisjunction();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNamedArgumentRule());
            					}
            					set(
            						current,
            						"value",
            						lv_value_2_0,
            						"org.eclipse.xtext.Xtext.Disjunction");
            					afterParserOrEnumRuleCall();
            				

            }


            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
279074
public final void entryRuleJvmTypeReference() throws RecognitionException {
        try {
            // InternalXbaseWithAnnotations.g:1717:1: ( ruleJvmTypeReference EOF )
            // InternalXbaseWithAnnotations.g:1718:1: ruleJvmTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleJvmTypeReference();

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

            }

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