public static GFileImpl fromPathString(GFileSystem fileSystem, GFile parent, String path,
			FSRL fsrl, boolean isDirectory, long length) {
		String[] split = path.split(FSUtilities.SEPARATOR);
		if (split.length >= 3 && split[0].isEmpty() && split[1].isEmpty() && !split[2].isEmpty()) {
			// The path was in UNC format, either //unc or \\unc.
			// Put a unc prefix "//" back into the element that has the unc name.  The leading empty
			// elements will be skipped when building the parentage.
			split[2] = "//" + split[2];
		}
		for (int i = 0; i < split.length - 1; ++i) {
			if (split[i].length() == 0) {
				continue;
			}
			parent = fromFilename(fileSystem, parent, split[i], true, -1, null);
		}
		if (fsrl == null) {
			String filename = split.length > 0 ? split[split.length - 1] : "/";
			fsrl = getFSRLFromParent(fileSystem, parent, filename);
		}
		return new GFileImpl(fileSystem, parent, isDirectory, length, fsrl);
	}
Creates a GFile for a specific owning filesystem using a string
path (ie. "dir/subdir/filename"), with the path starting at the supplied
{@code parent} directory.
<p>
The parents of this GFile are created fresh from any directory names
in the path string.  It is better to use the
{@link #fromFilename(GFileSystem, GFile, String, boolean, long, FSRL)} method
to create GFile instances if you can supply the parent value as that will
allow reuse of the parent objects instead of duplicates of them being created
for each file with the same parent path.

@param fileSystem the {@link GFileSystem} that owns this file
@param parent the parent of the new GFile or null if child-of-root.
@param path forward slash '/' separated path and filename string.
@param fsrl {@link FSRL} to assign to the file, NULL if an auto-created FSRL is ok.
@param isDirectory boolean flag to indicate that this is a directory
@param length length of the file (use -1 if not know or specified).
@return a new {@link GFileImpl}
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/GFileImpl.java