String[] mandatory = pkgDes.getMandatory();
String[] mandatory = (String[]) pkgDes.getDirective(Constants.MANDATORY_DIRECTIVE);
	public boolean isSatisfiedBy(BaseDescription supplier) {		if (!(supplier instanceof ExportPackageDescription))			return false;		ExportPackageDescription pkgDes = (ExportPackageDescription) supplier;		boolean matchName = false;		if (symbolicName != null) {			BundleDescription exporter = pkgDes.getExporter();			if (!symbolicName.equals(exporter.getSymbolicName()))				return false;			if (getBundleVersionRange() != null && !getBundleVersionRange().isIncluded(exporter.getVersion()))				return false;		}		String name = getName();		// shortcut '*'		// TODO we have logic here for "*" exports for now to make progress in the resolver implementation		if ("*".equals(name) || "*".equals(pkgDes.getName())) {//$NON-NLS-1$ //$NON-NLS-2$			matchName = true;		}		else if (name.endsWith(".*")) { //$NON-NLS-1$			if (pkgDes.getName().startsWith((name.substring(0, name.length() - 1))))				matchName =  true;		}		else if (pkgDes.getName().equals(name)) {			matchName = true;		}		else if (pkgDes.getName().endsWith(".*")) { //$NON-NLS-1$			if (name.startsWith((pkgDes.getName().substring(0, name.length() - 1))))				matchName =  true;		}		if (!matchName)			return false;		if (getVersionRange() != null && !getVersionRange().isIncluded(pkgDes.getVersion()))			return false;		Map importAttrs = getAttributes();		if (importAttrs != null) {			Map exportAttrs = pkgDes.getAttributes();			if (exportAttrs == null)				return false;			for (Iterator i = importAttrs.keySet().iterator(); i.hasNext();) {				String importKey = (String) i.next();				String importValue = (String) importAttrs.get(importKey);				String exportValue = (String) exportAttrs.get(importKey);				if (exportValue == null || !importValue.equals(exportValue))					return false;			}		}		String[] mandatory = pkgDes.getMandatory();		if (mandatory != null) {			for(int i = 0; i < mandatory.length; i++) {				if (Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE.equals(mandatory[i])) {					if (symbolicName == null)						return false;				}				else if (Constants.BUNDLE_VERSION_ATTRIBUTE.equals(mandatory[i])) {					if (bundleVersionRange == null)						return false;				}				else if (Constants.PACKAGE_SPECIFICATION_VERSION.equals(mandatory[i]) || Constants.VERSION_ATTRIBUTE.equals(mandatory[i])) {					if (getVersionRange() == null)						return false;				}				else { // arbitrary attribute					if (importAttrs == null)						return false;					if (importAttrs.get(mandatory[i]) == null)						return false;				}			}		}		return true;	}