public boolean addContribution(InputStream is, long contributorId, String contributionName, ResourceBundle b, Object key) {
public boolean addContribution(InputStream is, String contributorId, String contributionName, ResourceBundle b, Object key) {
	public boolean addContribution(InputStream is, long contributorId, String contributionName, ResourceBundle b, Object key) {		// check access		if (!strategy.isModifiable() && masterToken != key && userToken != key)			throw new IllegalArgumentException("Unauthorized access to the ExtensionRegistry.addXMLContribution() method. Check if proper access token is supplied."); //$NON-NLS-1$		//  determine contribution nature		boolean isDynamic;		if (masterToken == key)			isDynamic = false;		else if (userToken == key)			isDynamic = true;		else			isDynamic = false; // default: for modifiable registry contributions are static		if (contributionName == null)			contributionName = ""; //$NON-NLS-1$		String ownerName = getNamespace(contributorId);		String message = NLS.bind(RegistryMessages.parse_problems, ownerName);		MultiStatus problems = new MultiStatus(RegistryMessages.OWNER_NAME, ExtensionsParser.PARSE_PROBLEM, message, null);		ExtensionsParser parser = new ExtensionsParser(problems, this);		Contribution contribution = getElementFactory().createContribution(contributorId, isDynamic);		try {			parser.parseManifest(strategy.getXMLParser(), new InputSource(is), contributionName, getObjectManager(), contribution, b);			if (problems.getSeverity() != IStatus.OK) {				log(problems);				return false;			}		} catch (ParserConfigurationException e) {			logError(ownerName, contributionName, e);			return false;		} catch (SAXException e) {			logError(ownerName, contributionName, e);			return false;		} catch (IOException e) {			logError(ownerName, contributionName, e);			return false;		} finally {			try {				is.close();			} catch (IOException ioe) {				// nothing to do			}		}		// Do not synchronize on registry here because the registry handles		// the synchronization for us in registry.add				add(contribution);		return true;	}