if (exps[n] == constraint || exps[n].isOnRootPath(constraint.getExporter())) {
if (exps[n] == constraint || ResolverExport.isOnRootPath(constraint.getExporter(), exps[n])) {
	boolean checkRequiresConstraints(ResolverBundle bundle) {		BundleConstraint[] requires = bundle.getRequires();		if (requires == null)			return true;		for (int i = 0; i < requires.length; i++) {			ResolverBundle matchingBundle = requires[i].getMatchingBundle();			if (matchingBundle == null)				continue;			ResolverExport[] exports = matchingBundle.getExportPackages();			for (int j = 0; j < exports.length; j++) {				ArrayList list = (ArrayList) constraints.get(exports[j]);				if (list == null)					continue;				for (int k = 0; k < list.size(); k++) {					ResolverExport constraint = (ResolverExport) list.get(k);					boolean foundPotential = false;					boolean found = false;					for (int m = 0; m < requires.length; m++) {						if (requires[m].getMatchingBundle() == null)							continue;						ResolverExport[] exps = requires[m].getMatchingBundle().getExportPackages();						for (int n = 0; n < exps.length; n++) {							if (constraint.getExporter().isResolvable() && constraint.getName().equals(exps[n].getName())) {								foundPotential = true;								if (exps[n] == constraint || exps[n].isOnRootPath(constraint.getExporter())) {									found = true;									break;								}							}						}						if (found)							break;					}					if (foundPotential && !found) {						return false;					}				}			}		}		return true;	}