private boolean doAddFile(FSRL fsrl, TaskMonitor taskMonitor)
			throws IOException, CancelledException {

		// use the fsrl param instead of file.getFSRL() as param may have more info (ie. md5)

		try (RefdFile refdFile = fsService.getRefdFile(fsrl, taskMonitor)) {
			GFile file = refdFile.file;
			if (file.isDirectory()) {
				processFS(file.getFilesystem(), file, taskMonitor);
				return true;
			}

			if (processAsFS(fsrl, taskMonitor)) {
				return true;
			}

			if (processWithLoader(fsrl, taskMonitor)) {
				return true;
			}

			// the file was not of interest, let it be removed from the cache
			fsService.releaseFileCache(fsrl);

			return false;
		}
	}
The main worker for adding a file to the batch session.
<p>
The file is probed for high-priority filesystems first, then if no matches,
Ghidra loaders, and then if no matches, all filesystems.

@param fsrl {@link FSRL} of the file to probe and process
@param taskMonitor {@link TaskMonitor} to watch and update.
@return boolean true if something in the file produced something to import.
@throws IOException if io error when reading files.
@throws CancelledException if user cancels.
Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchInfo.java