if (capabilityHosts[j].getState() == ResolverBundle.RESOLVED || resolveBundle(capabilityHosts[j], cycle)) {
if (capabilityHosts[j].getState() == ResolverBundle.RESOLVED || (resolveBundle(capabilityHosts[j], cycle) || developmentMode)) {
	private boolean resolveGenericReq(GenericConstraint constraint, ArrayList cycle) {		if (DEBUG_REQUIRES)			ResolverImpl.log("Trying to resolve: " + constraint.getBundle() + ", " + constraint.getVersionConstraint()); //$NON-NLS-1$ //$NON-NLS-2$		GenericCapability[] matchingCapabilities = constraint.getMatchingCapabilities();		if (matchingCapabilities != null) {			// Check for unrecorded cyclic dependency			for (int i = 0; i < matchingCapabilities.length; i++)				if (matchingCapabilities[i].getResolverBundle().getState() == ResolverBundle.RESOLVING)					if (!cycle.contains(constraint.getBundle()))						cycle.add(constraint.getBundle());			if (DEBUG_REQUIRES)				ResolverImpl.log("  - already wired"); //$NON-NLS-1$			return true; // Already wired (due to grouping dependencies) so just return		}		Object[] capabilities = resolverGenerics.get(constraint.getVersionConstraint().getName());		boolean result = false;		for (int i = 0; i < capabilities.length; i++) {			GenericCapability capability = (GenericCapability) capabilities[i];			if (DEBUG_GENERICS)				ResolverImpl.log("CHECKING GENERICS: " + capability.getBaseDescription()); //$NON-NLS-1$			// Check if capability matches			if (constraint.isSatisfiedBy(capability)) {				capability.getResolverBundle().addRef(constraint.getBundle());				if (result && (((GenericSpecification) constraint.getVersionConstraint()).getResolution() & GenericSpecification.RESOLUTION_MULTIPLE) == 0)					continue; // found a match already and this is not a multiple constraint				constraint.setMatchingCapability(capability); // Wire to the capability				if (constraint.getBundle() == capability.getResolverBundle()) {					result = true; // Wired to ourselves					continue;				}				ResolverBundle[] capabilityHosts = capability.isFromFragment() ? capability.getResolverBundle().getHost().getMatchingBundles() : new ResolverBundle[] {capability.getResolverBundle()};				boolean foundResolvedMatch = false;				for (int j = 0; capabilityHosts != null && j < capabilityHosts.length; j++)					if (capabilityHosts[j].getState() == ResolverBundle.RESOLVED || resolveBundle(capabilityHosts[j], cycle)) {						foundResolvedMatch |= !capability.isFromFragment() ? true : capability.getResolverBundle().getHost().getMatchingBundles() != null;						// Check cyclic dependencies						if (capabilityHosts[j].getState() == ResolverBundle.RESOLVING)							if (!cycle.contains(capabilityHosts[j]))								cycle.add(capabilityHosts[j]);					}				if (!foundResolvedMatch) {					constraint.removeMatchingCapability(capability);					continue; // constraint hasn't resolved				}				if (DEBUG_GENERICS)					ResolverImpl.log("Found match: " + capability.getBaseDescription() + ". Wiring"); //$NON-NLS-1$ //$NON-NLS-2$				result = true;			}		}		return result ? true : (((GenericSpecification) constraint.getVersionConstraint()).getResolution() & GenericSpecification.RESOLUTION_OPTIONAL) != 0;	}