public synchronized void convertToIndexedLocalFileSystem() throws IOException {

		if (readOnly) {
			throw new IOException("Unable to convert read-only filesystem");
		}

		cleanupAfterConstruction(); // remove all temporary content

		File tmpRoot = new File(root.getCanonicalFile().getParentFile(),
			HIDDEN_DIR_PREFIX + '.' + root.getName());
		if (tmpRoot.exists() || !tmpRoot.mkdir()) {
			throw new IOException("Failed to create data directory: " + tmpRoot);
		}

		IndexedV1LocalFileSystem indexedFs = new IndexedV1LocalFileSystem(tmpRoot.getAbsolutePath(),
			isVersioned, false, false, true);

		migrationInProgress = true;
		migrateFolder(SEPARATOR, indexedFs);
		indexedFs.dispose();

		for (File f : root.listFiles()) {
			File newFile = new File(tmpRoot, f.getName());
			f.renameTo(newFile);
		}

		if (!root.delete()) {
			throw new IOException("Failed to remove old root following conversion: " + root);
		}

		tmpRoot.renameTo(root);
	}
Convert this mangled filesystem to an indexed filesystem.  This instance should be discarded
and not used once the conversion has completed.

@throws IOException
Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/store/local/MangledLocalFileSystem.java