public RefdFile getRefdFile(FSRL fsrl, TaskMonitor monitor)
			throws CancelledException, IOException {
		FileSystemRef ref = getFilesystem(fsrl.getFS(), monitor);
		try {
			GFile gfile = ref.getFilesystem().lookup(fsrl.getPath());
			if (gfile == null) {
				throw new IOException("File [" + fsrl + "] not found in filesystem [" +
					ref.getFilesystem().getFSRL() + "]");
			}
			RefdFile result = new RefdFile(ref, gfile);
			ref = null;
			return result;
		}
		finally {
			if (ref != null) {
				ref.close();
			}
		}
	}
Returns the {@link GFile} pointed to by the FSRL, along with a {@link FileSystemRef}
that the caller is responsible for releasing (either explicitly via
{@code result.fsRef.close()} or via the {@link RefdFile#close()}).

@param fsrl {@link FSRL} of the desired file
@param monitor {@link TaskMonitor} so the user can cancel
@return a {@link RefdFile} which contains the resultant {@link GFile} and a
{@link FileSystemRef} that needs to be closed, or {@code null} if the filesystem
does not have the requested file.

@throws CancelledException if the user cancels
@throws IOException if there was a file io problem
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemService.java