private boolean checkImportConstraints(ResolverImport imp, ResolverExport exp, ArrayList cycle) {
private boolean checkImportConstraints(ResolverImport imp, ResolverExport exp, ArrayList cycle, ResolverExport[] importerExps) {
	private boolean checkImportConstraints(ResolverImport imp, ResolverExport exp, ArrayList cycle) {		if (DEBUG_GROUPING)			ResolverImpl.log("  Checking grouping for " + imp.getBundle() + ":" + imp.getName() + " -> " + exp.getExporter() + ":" + exp.getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$		ResolverBundle importer = imp.getBundle();		ResolverExport clash = groupingChecker.isConsistent(imp, exp);		if (clash == null)			return true;		if (DEBUG_GROUPING)			ResolverImpl.log("  * grouping clash with " + clash.getExporter() + ":" + clash.getName()); //$NON-NLS-1$ //$NON-NLS-2$		// Try to rewire imp		imp.addUnresolvableWiring(exp.getExporter());		imp.setMatchingExport(null);		if (resolveImport(imp, false, cycle))			return true;		if (imp.isDynamic())			return false;		// Rewiring of imp has failed so try to rewire clashing import		imp.clearUnresolvableWirings();		imp.setMatchingExport(exp);		ResolverImport[] imports = importer.getImportPackages();		for (int i = 0; i < imports.length; i++) {			if (imports[i].getMatchingExport() != null && imports[i].getMatchingExport().getName().equals(clash.getName())) {				imports[i].addUnresolvableWiring(imports[i].getMatchingExport().getExporter());				imports[i].setMatchingExport(null); // clear the conflicting wire				// If the clashing import package was also exported then				// we need to put the export back into resolverExports				ResolverExport removed[] = importer.getExports(imports[i].getName());				resolverExports.put(removed);			}		}		// Try to re-resolve the bundle		if (resolveBundle(importer, cycle))			return true;		state.addResolverError(imp.getVersionConstraint().getBundle(), ResolverError.IMPORT_PACKAGE_USES_CONFLICT, imp.getVersionConstraint().toString(), imp.getVersionConstraint());		return false;	}