private boolean processWithLoader(FSRL fsrl, TaskMonitor monitor)
			throws IOException, CancelledException {

		try (ByteProvider provider = fsService.getByteProvider(fsrl, false, monitor)) {
			LoaderMap loaderMap = pollLoadersForLoadSpecs(provider, fsrl, monitor);
			for (Loader loader : loaderMap.keySet()) {
				Collection<LoadSpec> loadSpecs = loaderMap.get(loader);
				BatchSegregatingCriteria bsc =
					new BatchSegregatingCriteria(loader, loadSpecs, provider);
				BatchGroup batchGroup = groupsByCriteria.get(bsc);
				if (batchGroup == null) {
					batchGroup = new BatchGroup(bsc);
					groupsByCriteria.put(bsc, batchGroup);
				}
				batchGroup.add(provider, loadSpecs, fsrl, currentUASI);
			}

			return loaderMap.keySet().size() > 0;
		}
		catch (IOException ioe) {
			Msg.warn(this, "Error while probing file " + fsrl + " for loader applications: " +
				ioe.getMessage());
			return false;
		}
	}
Tries to open a file using Ghidra {@link Loader}s.
<p>
The {@link BinaryLoader} is unconditionally skipped.

@param fsrl {@link FSRL} of the file to open
@param monitor {@link TaskMonitor} to use
@return boolean true if successfully processed with a loader, false if no loader claimed
the file.
@throws IOException if io error during processing
@throws CancelledException if user cancels.
Ghidra/Features/Base/src/main/java/ghidra/plugins/importer/batch/BatchInfo.java