private void processFS(GFileSystem fs, GFile startDir, TaskMonitor taskMonitor)
			throws CancelledException, IOException {

		for (GFile file : fs.files(startDir)) {
			taskMonitor.checkCancelled();
			FSRL fqFSRL;
			try {
				fqFSRL = fsService.getFullyQualifiedFSRL(file.getFSRL(), taskMonitor);
			}
			catch (IOException e) {
				Msg.warn(this, "Error getting info for " + file.getFSRL());
				continue;
			}
			doAddFile(fqFSRL, taskMonitor);
			currentUASI.incRawFileCount();
		}
	}
Recursively handles files in an already opened GFileSystem.
@param fs {@link GFileSystem} containing the startDir
@param startDir {@link GFile} ref to the directory to process, null if root of the filesystem.
@param taskMonitor {@link TaskMonitor} to watch and update.
@throws CancelledException if user cancels
@throws IOException if io error while reading files.
Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchInfo.java