@Override
	public synchronized void moveFolder(String parentPath, String folderName, String newParentPath)
			throws InvalidNameException, IOException {

		boolean success = false;
		try {
			if (readOnly) {
				throw new ReadOnlyException();
			}

			testValidName(newParentPath, true);
			String folderPath = getPath(parentPath, folderName);
			File folder = getFile(folderPath);
			if (!folder.isDirectory()) {
				throw new FileNotFoundException(folderPath + " does not exist or is not a folder");
			}

			// TODO Must scan for items in use !!!

			String newFolderPath = getPath(newParentPath, folderName);
			File newFolder = getFile(newFolderPath);
			if (newFolder.exists()) {
				throw new DuplicateFileException(newFolderPath + " already exists.");
			}
			createFolders(getFile(newParentPath), newParentPath);
			if (!folder.renameTo(newFolder)) {
				throw new IOException("move failed for unknown reason");
			}

			eventManager.folderMoved(parentPath, folderName, newParentPath);
			deleteEmptyVersionedFolders(parentPath);
		}
		finally {
			if (!success) {
				deleteEmptyVersionedFolders(newParentPath);
			}
		}
	}
Deallocate item storage
@param folderPath
@param itemName
Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/store/local/MangledLocalFileSystem.java