next.setBaseFile(new File(nextDirGeneration, next.getFileName()));
	protected DefaultBundleData 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;			}			DefaultBundleData next;			try {				next = (DefaultBundleData) clone();			} catch (CloneNotSupportedException e) {				// this shouldn't happen, since we are Cloneable				throw new InternalError();			}			next.setGeneration(nextGeneration);			next.setGenerationDir(nextDirGeneration);			if (referenceFile != null) {				next.setReference(true);				next.setFileName(referenceFile);				next.setBaseFile(new File(referenceFile));			}			else {				if (next.isReference()) {					next.setReference(false);					next.setFileName(((DefaultAdaptor)adaptor).mapLocationToName(getLocation()));				}				next.setBaseFile(new File(nextDirGeneration, next.getFileName()));			}			// null out the manifest to force it to be re-read.			next.manifest = null;			return (next);		}		throw new IOException(AdaptorMsg.formatter.getString("ADAPTOR_STORAGE_EXCEPTION"));	}