private GFile getGFile(File f) throws IOException {
		List<File> parts = LocalFileSystem.getFilePathParts(f); // [/subdir/subroot/file, /subdir/subroot, /subdir, /]
		int rootDirIndex = findRootDirIndex(parts);
		if (rootDirIndex < 0) {
			throw new IOException("Invalid directory " + f);
		}
		GFile current = rootGFile;
		for (int i = rootDirIndex - 1; i >= 0; i--) {
			File part = parts.get(i);
			FSRL childFSRL = current.getFSRL().appendPath(part.getName());
			String childPath = FSUtilities.appendPath(current.getPath(), part.getName());
			current = new GFileLocal(part, childPath, childFSRL, this, current);
		}
		return current;
	}
A {@link GFileSystem} interface to a part of the user's local / native file system.
<p>
This class is a sub-view of the {@link LocalFileSystem}, and returns hybrid GFile objects
that have fully specified FSRL paths that are valid in the Root filesystem, but relative
GFile paths.
<p>
This class's name doesn't end with "FileSystem" to ensure it will not be auto-discovered
by the FileSystemFactoryMgr.
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/LocalFileSystemSub.java