synchronized (bundleFileList) {
synchronized (this) { if (bundleFile.getMruIndex() >= 0) return;
	public void add(BundleFile bundleFile) throws IOException {		if (fileLimit < MIN)			return; // MRU is disabled		synchronized (bundleFileList) {			int index = 0; // default to the first slot			if (numOpen < fileLimit) {				// numOpen does not exceed the fileLimit				// find the first null slot to use in the MRU				for (int i = 0; i < fileLimit; i++)					if (bundleFileList[i] == null) {						index = i;						break;					}			} else {				// numOpen has reached the fileLimit				// find the least recently used bundleFile and close it 				// and use it slot for the new bundleFile to be opened.				index = 0;				for (int i = 1; i < fileLimit; i++)					if (useStampList[i] < useStampList[index])						index = i;				BundleFile toRemove = bundleFileList[index];				remove(toRemove);				toRemove.close();			}			// found an index to place to bundleFile to be opened			bundleFileList[index] = bundleFile;			bundleFile.setMruIndex(index);			incUseStamp(index);			numOpen++;		}	}