return checkRequiresConstraints(req, req.getMatchingBundle());
result = checkRequiresConstraints(req, req.getMatchingBundle());
	private boolean resolveRequire(BundleConstraint req, ArrayList cycle) {		if (DEBUG_REQUIRES)			ResolverImpl.log("Trying to resolve: " + req.getBundle() + ", " + req.getVersionConstraint()); //$NON-NLS-1$ //$NON-NLS-2$		if (req.getMatchingBundle() != null) {			// Check for unrecorded cyclic dependency			if (req.getMatchingBundle().getState() == ResolverBundle.RESOLVING)				if (!cycle.contains(req.getBundle()))					cycle.add(req.getBundle());			if (DEBUG_REQUIRES)				ResolverImpl.log("  - already wired"); //$NON-NLS-1$			return true; // Already wired (due to grouping dependencies) so just return		}		Object[] bundles = resolverBundles.get(req.getVersionConstraint().getName());		for (int i = 0; i < bundles.length; i++) {			ResolverBundle bundle = (ResolverBundle) bundles[i];			if (DEBUG_REQUIRES)				ResolverImpl.log("CHECKING: " + bundle.getBundle()); //$NON-NLS-1$			// Check if export matches			if (req.isSatisfiedBy(bundle)) {				req.setMatchingBundle(bundle); // Wire to the bundle				if (req.getBundle() == bundle)					return true; // Wired to ourselves				if ((bundle.getState() != ResolverBundle.RESOLVED && !resolveBundle(bundle, cycle))) {					req.setMatchingBundle(null);					continue; // Bundle hasn't resolved				}				// Check cyclic dependencies				if (bundle.getState() == ResolverBundle.RESOLVING)					// If the bundle is RESOLVING, we have a cyclic dependency					if (!cycle.contains(req.getBundle()))						cycle.add(req.getBundle());				if (DEBUG_REQUIRES)					ResolverImpl.log("Found match: " + bundle.getBundle() + ". Wiring"); //$NON-NLS-1$ //$NON-NLS-2$				return checkRequiresConstraints(req, req.getMatchingBundle());			}		}		if (req.isOptional())			return true; // If the req is optional then just return true		return false;	}