@Override
	public ByteProvider getSectionAsByteProvider(String sectionName, TaskMonitor monitor)
			throws IOException {
		ByteProvider bp = sp.getSectionAsByteProvider(sectionName, monitor);
		if (bp != null) {
			return bp;
		}

		bp = decompressedSectionCache.get(sectionName);
		if (bp != null) {
			return bp;
		}

		bp = sp.getSectionAsByteProvider("z" + sectionName, monitor);
		if (bp != null) {
			FileSystemService fsService = FileSystemService.getInstance();
			try (
					InputStream is = getInputStreamForCompressedSection(bp);
					FileCacheEntryBuilder tmpFile = fsService.createTempFile(bp.length())) {

				FSUtilities.streamCopy(is, tmpFile, monitor);

				FileCacheEntry fce = tmpFile.finish();
				ByteProvider decompressedBP =
					fsService.getNamedTempFile(fce, "uncompressed_" + sectionName);
				decompressedSectionCache.put(sectionName, decompressedBP);

				return decompressedBP;
			}
			catch (CancelledException e) {
				// fall thru
			}
		}

		return null;
	}
Cache previously decompressed sections, indexed by their normal 'base' name with no
'z' prefix.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/sectionprovider/CompressedSectionProvider.java