public <FSTYPE extends GFileSystem> FSTYPE mountSpecificFileSystem(FSRL containerFSRL,
			Class<FSTYPE> fsClass, TaskMonitor monitor) throws CancelledException, IOException {

		String fsType = fsFactoryMgr.getFileSystemType(fsClass);
		if (fsType == null) {
			Msg.error(this, "Specific file system implemention " + fsClass.getName() +
				" not registered correctly in file system factory.");
			return null;
		}
		ByteProvider byteProvider = getByteProvider(containerFSRL, true, monitor);
		GFileSystem fs =
			fsFactoryMgr.mountFileSystem(fsType, byteProvider, this, monitor);
		Class<?> producedClass = fs.getClass();
		if (!fsClass.isAssignableFrom(fs.getClass())) {
			fs.close();
			throw new IOException("Bad file system type returned by factory. Expecting " +
				fsClass.getName() + " but factory produced " + producedClass.getName());
		}
		return fsClass.cast(fs);
	}
Mount a specific file system (by class) using a specified container file.
<p>
The newly constructed / mounted file system is not managed by this FileSystemService
or controlled with {@link FileSystemRef}s.
<p>
The caller is responsible for closing the resultant file system instance when it is
no longer needed.

@param containerFSRL a reference to the file that contains the file system image
@param fsClass the GFileSystem derived class that implements the specific file system
@param monitor {@link TaskMonitor} to allow the user to cancel
@return new {@link GFileSystem} instance, caller is responsible for closing() when done.
@throws CancelledException if user cancels
@throws IOException if file io error or wrong file system type.
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemService.java