@Override
		public void setOperationResult(ExtractOperationResult extractOperationResult)
				throws SevenZipException {
			// STEP 4: SevenZip calls this to signal that the extract is done for this file.
			if (currentCacheEntryBuilder == null) {
				return;
			}
			try {
				FileCacheEntry fce = currentCacheEntryBuilder.finish();
				if (extractOperationResult == ExtractOperationResult.OK) {
					GFile gFile = fsIndex.getFileByIndex(currentIndex);
					if (gFile != null && gFile.getFSRL().getMD5() == null) {
						fsIndex.updateFSRL(gFile, gFile.getFSRL().withMD5(fce.getMD5()));
					}
					if (saveResults) {
						extractResults.put(currentIndex, fce);
					}
					Msg.debug(SevenZipFileSystem.this, "Wrote file to cache: " + gFile + ", " +
						FSUtilities.formatSize(fce.length()));
				}
				else {
					Msg.warn(SevenZipFileSystem.this, "Failed to push file[%d] %s to cache: %s"
							.formatted(currentIndex, currentName, extractOperationResult));
					extractOperationResultToException(extractOperationResult);
				}
			}
			catch (IOException e) {
				throw new SevenZipException(e);
			}
			finally {
				FSUtilities.uncheckedClose(currentCacheEntryBuilder, null);
				currentCacheEntryBuilder = null;

				// hack to advance the currentIndex for the next file so cryptoGetTextPassword
				// will have a correct currentIndex value if it is called before getStream(), 
				// which does happen depending on the phase of the moon or the 7zip
				// library's mood.
				currentIndex++;
			}
		}
Implements SevenZip bulk extract callback.
<p>
For each file in the archive, SZ will call this class's 1) getStream(), 2) prepare(), 
3) lots of write()s, and then 4) setOperationResult().
<p>
This class writes the extracted bytes to the FileCache.
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java