public static String extractSingletonCabToFile(File cabFile, File destFile, TaskMonitor monitor)
			throws CancelledException, IOException {
		FileSystemService fsService = FileSystemService.getInstance();
		FSRL cabFSRL = fsService.getLocalFSRL(cabFile);
		try (GFileSystem fs = fsService.openFileSystemContainer(cabFSRL, monitor)) {
			if (fs != null) {
				List<GFile> rootListing = fs.getListing(null);
				if (rootListing.size() == 1) {
					GFile f = rootListing.get(0);
					try (InputStream is = fs.getInputStream(f, monitor)) {
						FileUtilities.copyStreamToFile(is, destFile, false, monitor);
						return f.getName();
					}
				}
			}
		}
		throw new IOException("Unable to find file to extract");
	}
Extracts a singleton file from a cab file that only has 1 file

@param cabFile Compressed cab file that only has 1 file embedded in it
@param destFile where to write the extracted file to
@param monitor {@link TaskMonitor} to allow canceling
@return original name of the file
@throws CancelledException if cancelled
@throws IOException if error reading / writing file or cab file has more than 1 file in it
Ghidra/Features/PDB/src/main/java/pdb/PdbUtils.java