private FSRL createCachedFileFSRL(String md5) {
		return cacheFSRL.withPathMD5("/" + md5, md5);
	}
Returns a {@link ByteProvider} that contains the
derived (ie. decompressed or decrypted) contents of the requested file.
<p>
The resulting ByteProvider will be a cached file, either written to a 
temporary file, or a in-memory buffer if small enough (see {@link FileCache#MAX_INMEM_FILESIZE}).
<p> 
If the file was not present in the cache, the {@link DerivedStreamPushProducer pusher}
will be called and it will be responsible for producing and writing the derived
file's bytes to a {@link OutputStream}, which will be added to the file cache for next time.

@param containerFSRL {@link FSRL} w/hash of the source (or container) file that this 
derived file is based on
@param derivedFSRL (optional) {@link FSRL} to assign to the resulting ByteProvider
@param derivedName a unique string identifying the derived file inside the source (or container) file
@param sizeHint the expected size of the resulting ByteProvider, or -1 if unknown
@param pusher writes bytes to the supplied OutputStream.  See {@link DerivedStreamPushProducer}
@param monitor {@link TaskMonitor} that will be monitor for cancel requests and updated
with file io progress
@return a {@link ByteProvider} containing the bytes of the requested file, that has the 
specified derivedFSRL, or a pseudo FSRL if not specified.  Never null
@throws CancelledException if the user cancels
@throws IOException if there was an io error
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemService.java