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