InternalSARL.g:16872:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
502355
public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:16878:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
            // InternalSARL.g:16879:2: (this_ValidID_0= ruleValidID kw= '.' )+
            {
            // InternalSARL.g:16879:2: (this_ValidID_0= ruleValidID kw= '.' )+
            int cnt386=0;
            loop386:
            do {
                int alt386=2;
                switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    int LA386_2 = input.LA(2);

                    if ( (LA386_2==77) ) {
                        alt386=1;
                    }


                    }
                    break;
                case 92:
                    {
                    int LA386_3 = input.LA(2);

                    if ( (LA386_3==77) ) {
                        alt386=1;
                    }


                    }
                    break;
                case 44:
                    {
                    int LA386_4 = input.LA(2);

                    if ( (LA386_4==77) ) {
                        alt386=1;
                    }


                    }
                    break;
                case 93:
                    {
                    int LA386_5 = input.LA(2);

                    if ( (LA386_5==77) ) {
                        alt386=1;
                    }


                    }
                    break;
                case 94:
                    {
                    int LA386_6 = input.LA(2);

                    if ( (LA386_6==77) ) {
                        alt386=1;
                    }


                    }
                    break;
                case 95:
                    {
                    int LA386_7 = input.LA(2);

                    if ( (LA386_7==77) ) {
                        alt386=1;
                    }


                    }
                    break;

                }

                switch (alt386) {
            	case 1 :
            	    // InternalSARL.g:16880:3: this_ValidID_0= ruleValidID kw= '.'
            	    {
            	    if ( state.backtracking==0 ) {

            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
            	      		
            	    }
            	    pushFollow(FOLLOW_156);
            	    this_ValidID_0=ruleValidID();

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

            	      			current.merge(this_ValidID_0);
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      			afterParserOrEnumRuleCall();
            	      		
            	    }
            	    kw=(Token)match(input,77,FOLLOW_161); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			current.merge(kw);
            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
            	      		
            	    }

            	    }
            	    break;

            	default :
            	    if ( cnt386 >= 1 ) break loop386;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(386, input);
                        throw eee;
                }
                cnt386++;
            } while (true);


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        Token otherlv_1=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_package_2_0 = null;

        EObject lv_importSection_4_0 = null;

        EObject lv_xtendTypes_5_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:97:2: ( ( () (otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )? )? ( (lv_importSection_4_0= ruleXImportSection ) )? ( (lv_xtendTypes_5_0= ruleType ) )* ) )
            // InternalSARL.g:98:2: ( () (otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )? )? ( (lv_importSection_4_0= ruleXImportSection ) )? ( (lv_xtendTypes_5_0= ruleType ) )* )
            {
            // InternalSARL.g:98:2: ( () (otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )? )? ( (lv_importSection_4_0= ruleXImportSection ) )? ( (lv_xtendTypes_5_0= ruleType ) )* )
            // InternalSARL.g:99:3: () (otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )? )? ( (lv_importSection_4_0= ruleXImportSection ) )? ( (lv_xtendTypes_5_0= ruleType ) )*
            {
            // InternalSARL.g:99:3: ()
            // InternalSARL.g:100:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getSarlScriptAccess().getSarlScriptAction_0(),
              					current);
              			
            }

            }

            // InternalSARL.g:106:3: (otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )? )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==25) ) {
                int LA2_1 = input.LA(2);

                if ( (LA2_1==44) ) {
                    int LA2_3 = input.LA(3);

                    if ( (LA2_3==44) ) {
                        int LA2_5 = input.LA(4);

                        if ( (LA2_5==RULE_ID||LA2_5==44||(LA2_5>=92 && LA2_5<=95)) ) {
                            alt2=1;
                        }
                    }
                    else if ( (LA2_3==EOF||(LA2_3>=25 && LA2_3<=27)||LA2_3==31||(LA2_3>=33 && LA2_3<=35)||(LA2_3>=37 && LA2_3<=39)||(LA2_3>=42 && LA2_3<=43)||(LA2_3>=77 && LA2_3<=89)||LA2_3==96||LA2_3==105) ) {
                        alt2=1;
                    }
                }
                else if ( (LA2_1==RULE_ID||(LA2_1>=92 && LA2_1<=95)) ) {
                    alt2=1;
                }
            }
            switch (alt2) {
                case 1 :
                    // InternalSARL.g:107:4: otherlv_1= 'package' ( (lv_package_2_0= ruleQualifiedName ) ) (otherlv_3= ';' )?
                    {
                    otherlv_1=(Token)match(input,25,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				newLeafNode(otherlv_1, grammarAccess.getSarlScriptAccess().getPackageKeyword_1_0());
                      			
                    }
                    // InternalSARL.g:111:4: ( (lv_package_2_0= ruleQualifiedName ) )
                    // InternalSARL.g:112:5: (lv_package_2_0= ruleQualifiedName )
                    {
                    // InternalSARL.g:112:5: (lv_package_2_0= ruleQualifiedName )
                    // InternalSARL.g:113:6: lv_package_2_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getSarlScriptAccess().getPackageQualifiedNameParserRuleCall_1_1_0());
                      					
                    }
                    pushFollow(FOLLOW_4);
                    lv_package_2_0=ruleQualifiedName();

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

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getSarlScriptRule());
                      						}
                      						set(
                      							current,
                      							"package",
                      							lv_package_2_0,
                      							"org.eclipse.xtext.xbase.Xbase.QualifiedName");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalSARL.g:130:4: (otherlv_3= ';' )?
                    int alt1=2;
                    int LA1_0 = input.LA(1);

                    if ( (LA1_0==26) ) {
                        alt1=1;
                    }
                    switch (alt1) {
                        case 1 :
                            // InternalSARL.g:131:5: otherlv_3= ';'
                            {
                            otherlv_3=(Token)match(input,26,FOLLOW_5); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              					newLeafNode(otherlv_3, grammarAccess.getSarlScriptAccess().getSemicolonKeyword_1_2());
                              				
                            }

                            }
                            break;

                    }


                    }
                    break;

            }

            // InternalSARL.g:137:3: ( (lv_importSection_4_0= ruleXImportSection ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==96) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // InternalSARL.g:138:4: (lv_importSection_4_0= ruleXImportSection )
                    {
                    // InternalSARL.g:138:4: (lv_importSection_4_0= ruleXImportSection )
                    // InternalSARL.g:139:5: lv_importSection_4_0= ruleXImportSection
                    {
                    if ( state.backtracking==0 ) {

                      					newCompositeNode(grammarAccess.getSarlScriptAccess().getImportSectionXImportSectionParserRuleCall_2_0());
                      				
                    }
                    pushFollow(FOLLOW_6);
                    lv_importSection_4_0=ruleXImportSection();

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

                      					if (current==null) {
                      						current = createModelElementForParent(grammarAccess.getSarlScriptRule());
                      					}
                      					set(
                      						current,
                      						"importSection",
                      						lv_importSection_4_0,
                      						"org.eclipse.xtext.xbase.Xtype.XImportSection");
                      					afterParserOrEnumRuleCall();
                      				
                    }

                    }


                    }
                    break;

            }

            // InternalSARL.g:156:3: ( (lv_xtendTypes_5_0= ruleType ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==25||LA4_0==27||LA4_0==31||(LA4_0>=33 && LA4_0<=35)||(LA4_0>=37 && LA4_0<=39)||(LA4_0>=42 && LA4_0<=44)||(LA4_0>=78 && LA4_0<=89)||LA4_0==105) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // InternalSARL.g:157:4: (lv_xtendTypes_5_0= ruleType )
            	    {
            	    // InternalSARL.g:157:4: (lv_xtendTypes_5_0= ruleType )
            	    // InternalSARL.g:158:5: lv_xtendTypes_5_0= ruleType
            	    {
            	    if ( state.backtracking==0 ) {

            	      					newCompositeNode(grammarAccess.getSarlScriptAccess().getXtendTypesTypeParserRuleCall_3_0());
            	      				
            	    }
            	    pushFollow(FOLLOW_6);
            	    lv_xtendTypes_5_0=ruleType();

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

            	      					if (current==null) {
            	      						current = createModelElementForParent(grammarAccess.getSarlScriptRule());
            	      					}
            	      					add(
            	      						current,
            	      						"xtendTypes",
            	      						lv_xtendTypes_5_0,
            	      						"io.sarl.lang.SARL.Type");
            	      					afterParserOrEnumRuleCall();
            	      				
            	    }

            	    }


            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        Token lv_extension_0_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_parameterType_3_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:8264:2: ( ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) otherlv_2= ':' ( (lv_parameterType_3_0= ruleMultiTypeReference ) ) ) )
            // InternalSARL.g:8265:2: ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) otherlv_2= ':' ( (lv_parameterType_3_0= ruleMultiTypeReference ) ) )
            {
            // InternalSARL.g:8265:2: ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) otherlv_2= ':' ( (lv_parameterType_3_0= ruleMultiTypeReference ) ) )
            // InternalSARL.g:8266:3: ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) otherlv_2= ':' ( (lv_parameterType_3_0= ruleMultiTypeReference ) )
            {
            // InternalSARL.g:8266:3: ( (lv_extension_0_0= 'extension' ) )?
            int alt227=2;
            int LA227_0 = input.LA(1);

            if ( (LA227_0==45) ) {
                alt227=1;
            }
            switch (alt227) {
                case 1 :
                    // InternalSARL.g:8267:4: (lv_extension_0_0= 'extension' )
                    {
                    // InternalSARL.g:8267:4: (lv_extension_0_0= 'extension' )
                    // InternalSARL.g:8268:5: lv_extension_0_0= 'extension'
                    {
                    lv_extension_0_0=(Token)match(input,45,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					newLeafNode(lv_extension_0_0, grammarAccess.getFullJvmFormalParameterAccess().getExtensionExtensionKeyword_0_0());
                      				
                    }
                    if ( state.backtracking==0 ) {

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

                    }


                    }
                    break;

            }

            // InternalSARL.g:8280:3: ( (lv_name_1_0= ruleValidID ) )
            // InternalSARL.g:8281:4: (lv_name_1_0= ruleValidID )
            {
            // InternalSARL.g:8281:4: (lv_name_1_0= ruleValidID )
            // InternalSARL.g:8282:5: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
              				
            }
            pushFollow(FOLLOW_40);
            lv_name_1_0=ruleValidID();

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

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

            }


            }

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

              			newLeafNode(otherlv_2, grammarAccess.getFullJvmFormalParameterAccess().getColonKeyword_2());
              		
            }
            // InternalSARL.g:8303:3: ( (lv_parameterType_3_0= ruleMultiTypeReference ) )
            // InternalSARL.g:8304:4: (lv_parameterType_3_0= ruleMultiTypeReference )
            {
            // InternalSARL.g:8304:4: (lv_parameterType_3_0= ruleMultiTypeReference )
            // InternalSARL.g:8305:5: lv_parameterType_3_0= ruleMultiTypeReference
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeMultiTypeReferenceParserRuleCall_3_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_parameterType_3_0=ruleMultiTypeReference();

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

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
              					}
              					set(
              						current,
              						"parameterType",
              						lv_parameterType_3_0,
              						"org.eclipse.xtend.core.Xtend.MultiTypeReference");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
278661
public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:6116:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
            // InternalXbase.g:6117:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
            {
            // InternalXbase.g:6117:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
            // InternalXbase.g:6118:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_78);
            this_QualifiedName_0=ruleQualifiedName();

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

              			current.merge(this_QualifiedName_0);
              		
            }
            if ( state.backtracking==0 ) {

              			afterParserOrEnumRuleCall();
              		
            }
            kw=(Token)match(input,45,FOLLOW_79); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current.merge(kw);
              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
              		
            }
            kw=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			current.merge(kw);
              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
810335
public final String entryRuleQName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQName = null;


        try {
            // InternalSimpleAntlr.g:1616:2: (iv_ruleQName= ruleQName EOF )
            // InternalSimpleAntlr.g:1617:2: iv_ruleQName= ruleQName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleQName=ruleQName();

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

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
1219540
public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalXbaseWithAnnotations.g:767:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
            // InternalXbaseWithAnnotations.g:768:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
            {
            // InternalXbaseWithAnnotations.g:768:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
            int alt16=7;
            switch ( input.LA(1) ) {
            case 21:
                {
                alt16=1;
                }
                break;
            case 22:
                {
                alt16=2;
                }
                break;
            case 23:
                {
                alt16=3;
                }
                break;
            case 24:
                {
                alt16=4;
                }
                break;
            case 25:
                {
                alt16=5;
                }
                break;
            case 26:
                {
                alt16=6;
                }
                break;
            case 27:
                {
                alt16=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // InternalXbaseWithAnnotations.g:769:3: kw= '+='
                    {
                    kw=(Token)match(input,21,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalXbaseWithAnnotations.g:775:3: kw= '-='
                    {
                    kw=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1());
                      		
                    }

                    }
                    break;
                case 3 :
                    // InternalXbaseWithAnnotations.g:781:3: kw= '*='
                    {
                    kw=(Token)match(input,23,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
                      		
                    }

                    }
                    break;
                case 4 :
                    // InternalXbaseWithAnnotations.g:787:3: kw= '/='
                    {
                    kw=(Token)match(input,24,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
                      		
                    }

                    }
                    break;
                case 5 :
                    // InternalXbaseWithAnnotations.g:793:3: kw= '%='
                    {
                    kw=(Token)match(input,25,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
                      		
                    }

                    }
                    break;
                case 6 :
                    // InternalXbaseWithAnnotations.g:799:3: (kw= '<' kw= '<' kw= '=' )
                    {
                    // InternalXbaseWithAnnotations.g:799:3: (kw= '<' kw= '<' kw= '=' )
                    // InternalXbaseWithAnnotations.g:800:4: kw= '<' kw= '<' kw= '='
                    {
                    kw=(Token)match(input,26,FOLLOW_15); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
                      			
                    }
                    kw=(Token)match(input,26,FOLLOW_8); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
                      			
                    }
                    kw=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
                      			
                    }

                    }


                    }
                    break;
                case 7 :
                    // InternalXbaseWithAnnotations.g:817:3: (kw= '>' (kw= '>' )? kw= '>=' )
                    {
                    // InternalXbaseWithAnnotations.g:817:3: (kw= '>' (kw= '>' )? kw= '>=' )
                    // InternalXbaseWithAnnotations.g:818:4: kw= '>' (kw= '>' )? kw= '>='
                    {
                    kw=(Token)match(input,27,FOLLOW_16); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
                      			
                    }
                    // InternalXbaseWithAnnotations.g:823:4: (kw= '>' )?
                    int alt15=2;
                    int LA15_0 = input.LA(1);

                    if ( (LA15_0==27) ) {
                        alt15=1;
                    }
                    switch (alt15) {
                        case 1 :
                            // InternalXbaseWithAnnotations.g:824:5: kw= '>'
                            {
                            kw=(Token)match(input,27,FOLLOW_17); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              					current.merge(kw);
                              					newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1());
                              				
                            }

                            }
                            break;

                    }

                    kw=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
                      			
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        Token lv_extension_0_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_parameterType_3_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:8184:2: ( ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) ( ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) ) )? ) )
            // InternalSARL.g:8185:2: ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) ( ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) ) )? )
            {
            // InternalSARL.g:8185:2: ( ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) ( ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) ) )? )
            // InternalSARL.g:8186:3: ( (lv_extension_0_0= 'extension' ) )? ( (lv_name_1_0= ruleValidID ) ) ( ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) ) )?
            {
            // InternalSARL.g:8186:3: ( (lv_extension_0_0= 'extension' ) )?
            int alt225=2;
            int LA225_0 = input.LA(1);

            if ( (LA225_0==45) ) {
                alt225=1;
            }
            switch (alt225) {
                case 1 :
                    // InternalSARL.g:8187:4: (lv_extension_0_0= 'extension' )
                    {
                    // InternalSARL.g:8187:4: (lv_extension_0_0= 'extension' )
                    // InternalSARL.g:8188:5: lv_extension_0_0= 'extension'
                    {
                    lv_extension_0_0=(Token)match(input,45,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					newLeafNode(lv_extension_0_0, grammarAccess.getJvmFormalParameterAccess().getExtensionExtensionKeyword_0_0());
                      				
                    }
                    if ( state.backtracking==0 ) {

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

                    }


                    }
                    break;

            }

            // InternalSARL.g:8200:3: ( (lv_name_1_0= ruleValidID ) )
            // InternalSARL.g:8201:4: (lv_name_1_0= ruleValidID )
            {
            // InternalSARL.g:8201:4: (lv_name_1_0= ruleValidID )
            // InternalSARL.g:8202:5: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
              				
            }
            pushFollow(FOLLOW_79);
            lv_name_1_0=ruleValidID();

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

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

            }


            }

            // InternalSARL.g:8219:3: ( ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) ) )?
            int alt226=2;
            int LA226_0 = input.LA(1);

            if ( (LA226_0==46) ) {
                int LA226_1 = input.LA(2);

                if ( (synpred9_InternalSARL()) ) {
                    alt226=1;
                }
            }
            switch (alt226) {
                case 1 :
                    // InternalSARL.g:8220:4: ( ( ':' )=>otherlv_2= ':' ) ( (lv_parameterType_3_0= ruleJvmTypeReference ) )
                    {
                    // InternalSARL.g:8220:4: ( ( ':' )=>otherlv_2= ':' )
                    // InternalSARL.g:8221:5: ( ':' )=>otherlv_2= ':'
                    {
                    otherlv_2=(Token)match(input,46,FOLLOW_41); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      					newLeafNode(otherlv_2, grammarAccess.getJvmFormalParameterAccess().getColonKeyword_2_0());
                      				
                    }

                    }

                    // InternalSARL.g:8227:4: ( (lv_parameterType_3_0= ruleJvmTypeReference ) )
                    // InternalSARL.g:8228:5: (lv_parameterType_3_0= ruleJvmTypeReference )
                    {
                    // InternalSARL.g:8228:5: (lv_parameterType_3_0= ruleJvmTypeReference )
                    // InternalSARL.g:8229:6: lv_parameterType_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_2_1_0());
                      					
                    }
                    pushFollow(FOLLOW_2);
                    lv_parameterType_3_0=ruleJvmTypeReference();

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

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

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
603179
public final String entryRuleCommonModifier() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCommonModifier = null;


        try {
            // InternalSARL.g:9661:54: (iv_ruleCommonModifier= ruleCommonModifier EOF )
            // InternalSARL.g:9662:2: iv_ruleCommonModifier= ruleCommonModifier EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCommonModifierRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCommonModifier=ruleCommonModifier();

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

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
289706
public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalSARL.g:8843:2: ( (kw= '*' | kw= '/' | kw= '%' ) )
            // InternalSARL.g:8844:2: (kw= '*' | kw= '/' | kw= '%' )
            {
            // InternalSARL.g:8844:2: (kw= '*' | kw= '/' | kw= '%' )
            int alt236=3;
            switch ( input.LA(1) ) {
            case 59:
                {
                alt236=1;
                }
                break;
            case 70:
                {
                alt236=2;
                }
                break;
            case 71:
                {
                alt236=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 236, 0, input);

                throw nvae;
            }

            switch (alt236) {
                case 1 :
                    // InternalSARL.g:8845:3: kw= '*'
                    {
                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:8851:3: kw= '/'
                    {
                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_1());
                      		
                    }

                    }
                    break;
                case 3 :
                    // InternalSARL.g:8857:3: kw= '%'
                    {
                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_2());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
730663
public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;


        	enterRule();

        try {
            // InternalXtext.g:2138:2: ( (this_ID_0= RULE_ID | kw= 'true' | kw= 'false' ) )
            // InternalXtext.g:2139:2: (this_ID_0= RULE_ID | kw= 'true' | kw= 'false' )
            {
            // InternalXtext.g:2139:2: (this_ID_0= RULE_ID | kw= 'true' | kw= 'false' )
            int alt49=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt49=1;
                }
                break;
            case 39:
                {
                alt49=2;
                }
                break;
            case 40:
                {
                alt49=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 49, 0, input);

                throw nvae;
            }

            switch (alt49) {
                case 1 :
                    // InternalXtext.g:2140:3: this_ID_0= RULE_ID
                    {
                    this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_2); 

                    			current.merge(this_ID_0);
                    		

                    			newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall_0());
                    		

                    }
                    break;
                case 2 :
                    // InternalXtext.g:2148:3: kw= 'true'
                    {
                    kw=(Token)match(input,39,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getValidIDAccess().getTrueKeyword_1());
                    		

                    }
                    break;
                case 3 :
                    // InternalXtext.g:2154:3: kw= 'false'
                    {
                    kw=(Token)match(input,40,FollowSets000.FOLLOW_2); 

                    			current.merge(kw);
                    			newLeafNode(kw, grammarAccess.getValidIDAccess().getFalseKeyword_2());
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
627619
public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:4337:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
            // InternalXbase.g:4338:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
            {
            // InternalXbase.g:4338:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
            int alt73=5;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt73=1;
                }
                break;
            case 69:
                {
                alt73=2;
                }
                break;
            case 70:
                {
                alt73=3;
                }
                break;
            case 71:
                {
                alt73=4;
                }
                break;
            case 72:
                {
                alt73=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 73, 0, input);

                throw nvae;
            }

            switch (alt73) {
                case 1 :
                    // InternalXbase.g:4339:3: this_ValidID_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_ValidID_0=ruleValidID();

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

                      			current.merge(this_ValidID_0);
                      		
                    }
                    if ( state.backtracking==0 ) {

                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalXbase.g:4350:3: kw= 'extends'
                    {
                    kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
                      		
                    }

                    }
                    break;
                case 3 :
                    // InternalXbase.g:4356:3: kw= 'static'
                    {
                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
                      		
                    }

                    }
                    break;
                case 4 :
                    // InternalXbase.g:4362:3: kw= 'import'
                    {
                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
                      		
                    }

                    }
                    break;
                case 5 :
                    // InternalXbase.g:4368:3: kw= 'extension'
                    {
                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
34803
public final void synpred25_InternalSARL_fragment() throws RecognitionException {   
        // InternalSARL.g:11564:7: ( ( ( ( ruleValidID ) ) '=' ) )
        // InternalSARL.g:11564:8: ( ( ( ruleValidID ) ) '=' )
        {
        // InternalSARL.g:11564:8: ( ( ( ruleValidID ) ) '=' )
        // InternalSARL.g:11565:8: ( ( ruleValidID ) ) '='
        {
        // InternalSARL.g:11565:8: ( ( ruleValidID ) )
        // InternalSARL.g:11566:9: ( ruleValidID )
        {
        // InternalSARL.g:11566:9: ( ruleValidID )
        // InternalSARL.g:11567:10: ruleValidID
        {
        pushFollow(FOLLOW_83);
        ruleValidID();

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

        }


        }

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

        }


        }
    }
1075695
public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_InnerVarID_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:9886:2: ( (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' ) )
            // InternalSARL.g:9887:2: (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' )
            {
            // InternalSARL.g:9887:2: (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' )
            int alt256=2;
            int LA256_0 = input.LA(1);

            if ( (LA256_0==RULE_ID||LA256_0==25||LA256_0==28||LA256_0==36||LA256_0==39||(LA256_0>=42 && LA256_0<=44)||LA256_0==51||(LA256_0>=78 && LA256_0<=96)) ) {
                alt256=1;
            }
            else if ( (LA256_0==45) ) {
                alt256=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 256, 0, input);

                throw nvae;
            }
            switch (alt256) {
                case 1 :
                    // InternalSARL.g:9888:3: this_InnerVarID_0= ruleInnerVarID
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getInnerVarIDParserRuleCall_0());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_InnerVarID_0=ruleInnerVarID();

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

                      			current.merge(this_InnerVarID_0);
                      		
                    }
                    if ( state.backtracking==0 ) {

                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:9899:3: kw= 'extension'
                    {
                    kw=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_1());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
628198
public final String entryRuleIdOrInt() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleIdOrInt = null;


        try {
            // InternalSimpleAntlr.g:282:2: (iv_ruleIdOrInt= ruleIdOrInt EOF )
            // InternalSimpleAntlr.g:283:2: iv_ruleIdOrInt= ruleIdOrInt EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIdOrIntRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIdOrInt=ruleIdOrInt();

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

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
888387
public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalSARL.g:12767:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
            // InternalSARL.g:12768:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
            {
            // InternalSARL.g:12768:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
            int alt307=4;
            switch ( input.LA(1) ) {
            case 112:
                {
                alt307=1;
                }
                break;
            case 40:
                {
                int LA307_2 = input.LA(2);

                if ( (LA307_2==EOF||(LA307_2>=RULE_STRING && LA307_2<=RULE_RICH_TEXT_START)||(LA307_2>=RULE_HEX && LA307_2<=RULE_DECIMAL)||(LA307_2>=25 && LA307_2<=26)||(LA307_2>=28 && LA307_2<=30)||LA307_2==36||(LA307_2>=39 && LA307_2<=40)||(LA307_2>=42 && LA307_2<=46)||(LA307_2>=48 && LA307_2<=49)||(LA307_2>=51 && LA307_2<=55)||(LA307_2>=57 && LA307_2<=58)||(LA307_2>=60 && LA307_2<=63)||(LA307_2>=65 && LA307_2<=68)||(LA307_2>=73 && LA307_2<=75)||(LA307_2>=78 && LA307_2<=96)||(LA307_2>=105 && LA307_2<=106)||LA307_2==129||(LA307_2>=131 && LA307_2<=140)) ) {
                    alt307=4;
                }
                else if ( (LA307_2==47) ) {
                    alt307=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 307, 2, input);

                    throw nvae;
                }
                }
                break;
            case 41:
                {
                alt307=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 307, 0, input);

                throw nvae;
            }

            switch (alt307) {
                case 1 :
                    // InternalSARL.g:12769:3: kw= '>='
                    {
                    kw=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:12775:3: (kw= '<' kw= '=' )
                    {
                    // InternalSARL.g:12775:3: (kw= '<' kw= '=' )
                    // InternalSARL.g:12776:4: kw= '<' kw= '='
                    {
                    kw=(Token)match(input,40,FOLLOW_83); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
                      			
                    }
                    kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalSARL.g:12788:3: kw= '>'
                    {
                    kw=(Token)match(input,41,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
                      		
                    }

                    }
                    break;
                case 4 :
                    // InternalSARL.g:12794:3: kw= '<'
                    {
                    kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1929:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
            // InternalXbase.g:1930:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
            {
            // InternalXbase.g:1930:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
            // InternalXbase.g:1931:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
            {
            // InternalXbase.g:1931:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
            // InternalXbase.g:1932:4: ( rule__QualifiedNameInStaticImport__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
            }
            // InternalXbase.g:1933:4: ( rule__QualifiedNameInStaticImport__Group__0 )
            // InternalXbase.g:1933:5: rule__QualifiedNameInStaticImport__Group__0
            {
            pushFollow(FOLLOW_3);
            rule__QualifiedNameInStaticImport__Group__0();

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

            }

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

            }

            // InternalXbase.g:1936:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
            // InternalXbase.g:1937:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
            }
            // InternalXbase.g:1938:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID) ) {
                    int LA1_2 = input.LA(2);

                    if ( (LA1_2==43) ) {
                        alt1=1;
                    }


                }


                switch (alt1) {
            	case 1 :
            	    // InternalXbase.g:1938:5: rule__QualifiedNameInStaticImport__Group__0
            	    {
            	    pushFollow(FOLLOW_3);
            	    rule__QualifiedNameInStaticImport__Group__0();

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

            	    }
            	    break;

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

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

            }


            }


            }

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

            	restoreStackSize(stackSize);

        }
        return ;
    }
607239
public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalPureXbase.g:1112:2: (kw= '||' )
            // InternalPureXbase.g:1113:2: kw= '||'
            {
            kw=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(kw);
              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
              	
            }

            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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