private final static boolean doDeleteDir(File dir, TaskMonitor monitor)
			throws CancelledException {
		File[] files = dir.listFiles();

		if (files == null) {
			return dir.delete();
		}

		for (File file : files) {
			monitor.checkCancelled();
			if (file.isDirectory()) {
				// use a dummy monitor as not to ruin our progress
				if (!doDeleteDir(file, monitor)) {
					printDebug("Unable to delete directory: " + file);
					return false;
				}
			}
			else {
				monitor.setMessage("Deleting file: " + file);
				if (!file.delete()) {
					printDebug("Unable to delete file: " + file);
					return false;
				}
			}
		}
		return dir.delete();
	}
A version of {@link #deleteDir(File,TaskMonitor)} that does not alter
the progress value of the given monitor, only the status text.  This allows this recursive
method to send status updates while the caller of this method controls the progress.
Ghidra/Framework/Utility/src/main/java/utilities/util/FileUtilities.java