next.setFileName(((AbstractFrameworkAdaptor) adaptor).mapLocationToName(getLocation()));
next.setFileName(AbstractFrameworkAdaptor.BUNDLEFILE_NAME);
	protected AbstractBundleData nextGeneration(String referenceFile) throws IOException {		int nextGeneration = getGeneration();		while (nextGeneration < Integer.MAX_VALUE) {			nextGeneration++;			File nextDirGeneration = new File(getBundleStoreDir(), String.valueOf(nextGeneration));			if (nextDirGeneration.exists()) {				continue;			}			AbstractBundleData next;			try {				next = (AbstractBundleData) clone();			} catch (CloneNotSupportedException e) {				// this shouldn't happen, since we are Cloneable				throw new InternalError();			}			next.setGeneration(nextGeneration);			if (referenceFile != null) {				next.setReference(true);				next.setFileName(referenceFile);			} else {				if (next.isReference()) {					next.setReference(false);					next.setFileName(((AbstractFrameworkAdaptor) adaptor).mapLocationToName(getLocation()));				}			}			// null out the manifest to force it to be re-read.			next.manifest = null;			return (next);		}		throw new IOException(AdaptorMsg.ADAPTOR_STORAGE_EXCEPTION);	}