public synchronized GFile storeFile(String path, long fileIndex, boolean isDirectory,
			long length, METADATATYPE metadata) {

		String[] nameparts = splitPath(path);
		if (nameparts.length == 0) {
			return rootDir.file;
		}

		GFile parent = lookupParent(nameparts, null);
		String lastpart = nameparts[nameparts.length - 1];
		FileData<METADATATYPE> fileData =
			doStoreFile(lastpart, parent, fileIndex, isDirectory, length, null, metadata);
		return fileData.file;
	}
Creates and stores a file entry into in-memory indexes.
<p>
The string path will be normalized to forward slashes before being split into
directory components.
<p>
Filenames that are not unique in their directory will have a "[nnn]"
suffix added to the resultant GFile name, where nnn is the file's
order of occurrence in the container file.

@param path string path and filename of the file being added to the index.  Back
slashes are normalized to forward slashes
@param fileIndex the filesystem specific unique index for this file, or -1
if not available
@param isDirectory boolean true if the new file is a directory
@param length number of bytes in the file or -1 if not known or directory
@param metadata opaque blob that will be stored and associated with the new
GFile instance
@return new GFile instance
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemIndexHelper.java