return false;
continue;
	private boolean resolveImport(ResolverImport imp, boolean checkReexportsFromRequires, ArrayList cycle) {		if (DEBUG_IMPORTS)			ResolverImpl.log("Trying to resolve: " + imp.getBundle() + ", " + imp.getName()); //$NON-NLS-1$ //$NON-NLS-2$		if (imp.getMatchingExport() != null) {			// Check for unrecorded cyclic dependency			if (imp.getMatchingExport().getExporter().getState() == ResolverBundle.RESOLVING)				if (!cycle.contains(imp.getBundle()))					cycle.add(imp.getBundle());			if (DEBUG_IMPORTS)				ResolverImpl.log("  - already wired"); //$NON-NLS-1$			return true; // Already wired (due to grouping dependencies) so just return		}		Object[] exports = resolverExports.get(imp.getName());		exportsloop: for (int i = 0; i < exports.length; i++) {			ResolverExport export = (ResolverExport) exports[i];			if (DEBUG_IMPORTS)				ResolverImpl.log("CHECKING: " + export.getExporter().getBundle() + ", " + export.getName()); //$NON-NLS-1$ //$NON-NLS-2$			// Check if export matches			if (imp.isSatisfiedBy(export) && imp.isNotAnUnresolvableWiring(export)) {				int originalState = export.getExporter().getState();				if (imp.isDynamic() && originalState != ResolverBundle.RESOLVED)					return false; // Must not attempt to resolve an exporter when dynamic				if (imp.getBundle() == export.getExporter() && !export.getExportPackageDescription().isRoot())					continue; // Can't wire to our own re-export				imp.setMatchingExport(export); // Wire the import to the export				if (imp.getBundle() != export.getExporter()) {					ResolverExport[] exps = imp.getBundle().getExports(imp.getName());					for (int j = 0; j < exps.length; j++) {						if (exps[j].getExportPackageDescription().isRoot() && !export.getExportPackageDescription().isRoot())							continue exportsloop; // to prevent imports from getting wired to re-exports if we offer a root export						if (exps[j].getExportPackageDescription().isRoot()) // do not drop reexports when import wins							resolverExports.remove(exps[j]); // Import wins, remove export					}					if ((originalState != ResolverBundle.RESOLVED && !resolveBundle(export.getExporter(), cycle)) || export.isDropped()) {						if (imp.getMatchingExport() != null && imp.getMatchingExport() != export) // has been resolved to some other export recursively							return true;						for (int j = 0; j < exps.length; j++)							resolverExports.put(exps[j].getName(), exps[j]);						imp.setMatchingExport(null);						continue; // Bundle hasn't resolved || export has not been selected and is unavailable					}				}				// If the importer has become unresolvable then stop here				if (!imp.getBundle().isResolvable())					return false;				// Check grouping dependencies				if (checkImportConstraints(imp, imp.getMatchingExport(), cycle) && imp.getMatchingExport() != null) {					// Record any cyclic dependencies					if (export != imp.getMatchingExport())						export = imp.getMatchingExport();					if (imp.getBundle() != export.getExporter())						if (export.getExporter().getState() == ResolverBundle.RESOLVING) {							// If the exporter is RESOLVING, we have a cyclic dependency							if (!cycle.contains(imp.getBundle()))								cycle.add(imp.getBundle());						}					if (DEBUG_IMPORTS)						ResolverImpl.log("Found match: " + export.getExporter() + ". Wiring " + imp.getBundle() + ":" + imp.getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					return true;				} else if (!imp.getBundle().isResolvable()) {					// If grouping has caused recursive calls to resolveImport, and the grouping has failed					// then we need to catch that here, so we don't continue trying to wire here					return false;				}				if (imp.getMatchingExport() != null && imp.getMatchingExport() != export)					return true; // Grouping has changed the wiring, so return here			}		}		if (checkReexportsFromRequires && resolveImportReprovide(imp, cycle))			return true; // A reprovide satisfies imp		if (imp.isOptional())			return true; // If the import is optional then just return true		return false;	}