}
	private void cleanup() throws IOException {		//Iterate through the temp files and delete them all, except the one representing this filemanager.		String[] files = managerRoot.list();		for (int i = 0; i < files.length; i++) {			if (files[i].endsWith(".instance") && instanceFile!= null && !files[i].equalsIgnoreCase(instanceFile.getName())) { //$NON-NLS-1$				Locker tmpLocker = BasicLocation.createLocker(new File(managerRoot, files[i]), lockMode);				if (tmpLocker.lock()) {					//If I can lock it is a file that has been left behind by a crash					new File(managerRoot, files[i]).delete();					tmpLocker.release();				} else {					tmpLocker.release();					return;	//The file is still being locked by somebody else				}			}		}		//If we are here it is because we are the last instance running. After locking the table and getting its latest content, remove all the backup files and change the table		//If the exception comes from lock, another instance may have been started after we cleaned up, therefore we abort		if (! lock())			throw new IOException(EclipseAdaptorMsg.formatter.getString("fileManager.cannotLock")); //$NON-NLS-1$		try {			updateTable();			Collection managedFiles = table.entrySet();			for (Iterator iter = managedFiles.iterator(); iter.hasNext();) {				Map.Entry fileEntry = (Map.Entry) iter.next();				String fileName = (String) fileEntry.getKey();				Entry info = (Entry) fileEntry.getValue();				//Because we are cleaning up, we are giving up the values from our table, and we must delete all the files that are not referenced by the table				String readId = Integer.toString(info.getWriteId() - 1);				deleteCopies(fileName, readId);			}		} catch (IOException e) {			//If the exception comes from the updateTable(), there has been a problem in reading the file.		 			//If an exception occured in the save, then the table won't be up to date!			throw e;		} finally {			release();		}	}