public static synchronized FileSystemService getInstance() {
		if (instance == null) {
			instance = new FileSystemService();
		}
		return instance;
	}
Provides methods for dealing with GFilesystem files and {@link GFileSystem filesystems}.
<p>
Most methods take {@link FSRL} references to files as a way to decouple dependencies and
reduce forced filesystem instantiation.
<p>
(ie. a {@link GFile} instance is only valid if its {@link GFileSystem} is open, which
means that its parent probably also has to be open, recursively, etc, whereas a FSRL
is always valid and does not force the instantiation of parent objects)
<p>
{@link GFileSystem Filesystems} should be used via {@link FileSystemRef filesystem ref}
handles that ensure the filesystem is pinned in memory and won't be closed while
you are using it.
<p>
If you are working with {@link GFile} instances, you should have a
{@link FileSystemRef fs ref} that you are using to pin the filesystem.
<p>
Files written to the {@code fscache} directory are obfuscated to prevent interference from
virus scanners.  See {@link ObfuscatedInputStream} or {@link ObfuscatedOutputStream} or 
{@link ObfuscatedFileByteProvider}.
<p> 
Thread-safe.
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemService.java