public final EObject ruleXImportDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_static_1_0=null;
        Token lv_extension_2_0=null;
        Token lv_wildcard_4_0=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_memberName_5_0 = null;

        AntlrDatatypeRuleToken lv_importedNamespace_7_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:16728:2: ( (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) )
            // InternalSARL.g:16729:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
            {
            // InternalSARL.g:16729:2: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
            // InternalSARL.g:16730:3: otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )?
            {
            otherlv_0=(Token)match(input,96,FOLLOW_159); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
              		
            }
            // InternalSARL.g:16734:3: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )
            int alt384=3;
            alt384 = dfa384.predict(input);
            switch (alt384) {
                case 1 :
                    // InternalSARL.g:16735:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
                    {
                    // InternalSARL.g:16735:4: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) )
                    // InternalSARL.g:16736:5: ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
                    {
                    // InternalSARL.g:16736:5: ( (lv_static_1_0= 'static' ) )
                    // InternalSARL.g:16737:6: (lv_static_1_0= 'static' )
                    {
                    // InternalSARL.g:16737:6: (lv_static_1_0= 'static' )
                    // InternalSARL.g:16738:7: lv_static_1_0= 'static'
                    {
                    lv_static_1_0=(Token)match(input,82,FOLLOW_75); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      							newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
                      						
                    }
                    if ( state.backtracking==0 ) {

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

                    }


                    }

                    // InternalSARL.g:16750:5: ( (lv_extension_2_0= 'extension' ) )?
                    int alt382=2;
                    int LA382_0 = input.LA(1);

                    if ( (LA382_0==45) ) {
                        alt382=1;
                    }
                    switch (alt382) {
                        case 1 :
                            // InternalSARL.g:16751:6: (lv_extension_2_0= 'extension' )
                            {
                            // InternalSARL.g:16751:6: (lv_extension_2_0= 'extension' )
                            // InternalSARL.g:16752:7: lv_extension_2_0= 'extension'
                            {
                            lv_extension_2_0=(Token)match(input,45,FOLLOW_75); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              							newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
                              						
                            }
                            if ( state.backtracking==0 ) {

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

                            }


                            }
                            break;

                    }

                    // InternalSARL.g:16764:5: ( ( ruleQualifiedNameInStaticImport ) )
                    // InternalSARL.g:16765:6: ( ruleQualifiedNameInStaticImport )
                    {
                    // InternalSARL.g:16765:6: ( ruleQualifiedNameInStaticImport )
                    // InternalSARL.g:16766:7: ruleQualifiedNameInStaticImport
                    {
                    if ( state.backtracking==0 ) {

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

                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0());
                      						
                    }
                    pushFollow(FOLLOW_160);
                    ruleQualifiedNameInStaticImport();

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

                      							afterParserOrEnumRuleCall();
                      						
                    }

                    }


                    }

                    // InternalSARL.g:16780:5: ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) )
                    int alt383=2;
                    int LA383_0 = input.LA(1);

                    if ( (LA383_0==59) ) {
                        alt383=1;
                    }
                    else if ( (LA383_0==RULE_ID||LA383_0==44||(LA383_0>=92 && LA383_0<=95)) ) {
                        alt383=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 383, 0, input);

                        throw nvae;
                    }
                    switch (alt383) {
                        case 1 :
                            // InternalSARL.g:16781:6: ( (lv_wildcard_4_0= '*' ) )
                            {
                            // InternalSARL.g:16781:6: ( (lv_wildcard_4_0= '*' ) )
                            // InternalSARL.g:16782:7: (lv_wildcard_4_0= '*' )
                            {
                            // InternalSARL.g:16782:7: (lv_wildcard_4_0= '*' )
                            // InternalSARL.g:16783:8: lv_wildcard_4_0= '*'
                            {
                            lv_wildcard_4_0=(Token)match(input,59,FOLLOW_46); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              								newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
                              							
                            }
                            if ( state.backtracking==0 ) {

                              								if (current==null) {
                              									current = createModelElement(grammarAccess.getXImportDeclarationRule());
                              								}
                              								setWithLastConsumed(current, "wildcard", true, "*");
                              							
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalSARL.g:16796:6: ( (lv_memberName_5_0= ruleValidID ) )
                            {
                            // InternalSARL.g:16796:6: ( (lv_memberName_5_0= ruleValidID ) )
                            // InternalSARL.g:16797:7: (lv_memberName_5_0= ruleValidID )
                            {
                            // InternalSARL.g:16797:7: (lv_memberName_5_0= ruleValidID )
                            // InternalSARL.g:16798:8: lv_memberName_5_0= ruleValidID
                            {
                            if ( state.backtracking==0 ) {

                              								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0());
                              							
                            }
                            pushFollow(FOLLOW_46);
                            lv_memberName_5_0=ruleValidID();

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

                              								if (current==null) {
                              									current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
                              								}
                              								set(
                              									current,
                              									"memberName",
                              									lv_memberName_5_0,
                              									"org.eclipse.xtend.core.Xtend.ValidID");
                              								afterParserOrEnumRuleCall();
                              							
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalSARL.g:16818:4: ( ( ruleQualifiedName ) )
                    {
                    // InternalSARL.g:16818:4: ( ( ruleQualifiedName ) )
                    // InternalSARL.g:16819:5: ( ruleQualifiedName )
                    {
                    // InternalSARL.g:16819:5: ( ruleQualifiedName )
                    // InternalSARL.g:16820:6: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

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

                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0());
                      					
                    }
                    pushFollow(FOLLOW_46);
                    ruleQualifiedName();

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

                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalSARL.g:16835:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
                    {
                    // InternalSARL.g:16835:4: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
                    // InternalSARL.g:16836:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
                    {
                    // InternalSARL.g:16836:5: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
                    // InternalSARL.g:16837:6: lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0());
                      					
                    }
                    pushFollow(FOLLOW_46);
                    lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard();

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

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
                      						}
                      						set(
                      							current,
                      							"importedNamespace",
                      							lv_importedNamespace_7_0,
                      							"org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            // InternalSARL.g:16855:3: (otherlv_8= ';' )?
            int alt385=2;
            int LA385_0 = input.LA(1);

            if ( (LA385_0==26) ) {
                alt385=1;
            }
            switch (alt385) {
                case 1 :
                    // InternalSARL.g:16856:4: otherlv_8= ';'
                    {
                    otherlv_8=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
                      			
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
public final EObject ruleXImportDeclaration ( ) throws RecognitionException { EObject current = null ; Token otherlv_0 = null ; Token lv_static_1_0 = null ; Token lv_extension_2_0 = null ; Token lv_wildcard_4_0 = null ; Token otherlv_8 = null ; AntlrDatatypeRuleToken lv_memberName_5_0 = null ; AntlrDatatypeRuleToken lv_importedNamespace_7_0 = null ; enterRule ( ) ; try { { { otherlv_0 = ( Token ) match ( input , 96 , FOLLOW_159 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( otherlv_0 , grammarAccess . getXImportDeclarationAccess ( ) . getImportKeyword_0 ( ) ) ; } int alt384 = 3 ; alt384 = dfa384 . predict ( input ) ; switch ( alt384 ) { case 1 : { { { { lv_static_1_0 = ( Token ) match ( input , 82 , FOLLOW_75 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( lv_static_1_0 , grammarAccess . getXImportDeclarationAccess ( ) . getStaticStaticKeyword_1_0_0_0 ( ) ) ; } if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getXImportDeclarationRule ( ) ) ; } setWithLastConsumed ( current , "static" , true , "static" ) ; } } } int alt382 = 2 ; int LA382_0 = input . LA ( 1 ) ; if ( ( LA382_0 == 45 ) ) { alt382 = 1 ; } switch ( alt382 ) { case 1 : { { lv_extension_2_0 = ( Token ) match ( input , 45 , FOLLOW_75 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( lv_extension_2_0 , grammarAccess . getXImportDeclarationAccess ( ) . getExtensionExtensionKeyword_1_0_1_0 ( ) ) ; } if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getXImportDeclarationRule ( ) ) ; } setWithLastConsumed ( current , "extension" , true , "extension" ) ; } } } break ; } { { if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getXImportDeclarationRule ( ) ) ; } } if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXImportDeclarationAccess ( ) . getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0 ( ) ) ; } pushFollow ( FOLLOW_160 ) ; ruleQualifiedNameInStaticImport ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { afterParserOrEnumRuleCall ( ) ; } } } int alt383 = 2 ; int LA383_0 = input . LA ( 1 ) ; if ( ( LA383_0 == 59 ) ) { alt383 = 1 ; } else if ( ( LA383_0 == RULE_ID || LA383_0 == 44 || ( LA383_0 >= 92 && LA383_0 <= 95 ) ) ) { alt383 = 2 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 383 , 0 , input ) ; throw nvae ; } switch ( alt383 ) { case 1 : { { { lv_wildcard_4_0 = ( Token ) match ( input , 59 , FOLLOW_46 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( lv_wildcard_4_0 , grammarAccess . getXImportDeclarationAccess ( ) . getWildcardAsteriskKeyword_1_0_3_0_0 ( ) ) ; } if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getXImportDeclarationRule ( ) ) ; } setWithLastConsumed ( current , "wildcard" , true , "*" ) ; } } } } break ; case 2 : { { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXImportDeclarationAccess ( ) . getMemberNameValidIDParserRuleCall_1_0_3_1_0 ( ) ) ; } pushFollow ( FOLLOW_46 ) ; lv_memberName_5_0 = ruleValidID ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getXImportDeclarationRule ( ) ) ; } set ( current , "memberName" , lv_memberName_5_0 , "org.eclipse.xtend.core.Xtend.ValidID" ) ; afterParserOrEnumRuleCall ( ) ; } } } } break ; } } } break ; case 2 : { { { if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getXImportDeclarationRule ( ) ) ; } } if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXImportDeclarationAccess ( ) . getImportedTypeJvmDeclaredTypeCrossReference_1_1_0 ( ) ) ; } pushFollow ( FOLLOW_46 ) ; ruleQualifiedName ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { afterParserOrEnumRuleCall ( ) ; } } } } break ; case 3 : { { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getXImportDeclarationAccess ( ) . getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0 ( ) ) ; } pushFollow ( FOLLOW_46 ) ; lv_importedNamespace_7_0 = ruleQualifiedNameWithWildcard ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getXImportDeclarationRule ( ) ) ; } set ( current , "importedNamespace" , lv_importedNamespace_7_0 , "org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard" ) ; afterParserOrEnumRuleCall ( ) ; } } } } break ; } int alt385 = 2 ; int LA385_0 = input . LA ( 1 ) ; if ( ( LA385_0 == 26 ) ) { alt385 = 1 ; } switch ( alt385 ) { case 1 : { otherlv_8 = ( Token ) match ( input , 26 , FOLLOW_2 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( otherlv_8 , grammarAccess . getXImportDeclarationAccess ( ) . getSemicolonKeyword_2 ( ) ) ; } } break ; } } } if ( state . backtracking == 0 ) { leaveRule ( ) ; } } catch ( RecognitionException re ) { recover ( input , re ) ; appendSkippedTokens ( ) ; } finally { } return current ; }
InternalSARL.g:16722:1: ruleXImportDeclaration returns [EObject current=null] : (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) ;