@Override
	public ByteProvider getByteProvider(GFile file, TaskMonitor monitor)
			throws IOException, CancelledException {
		try {
			ISimpleInArchiveItem item = fsIndex.getMetadata(file);

			if (item == null) {
				return null;
			}

			int itemIndex = item.getItemIndex();

			if (item.isFolder()) {
				throw new IOException("Not a file: " + file.getName());
			}
			if (item.isEncrypted()) {
				String password = getPasswordForFile(file, item, monitor);
				if (password == null) {
					throw new CryptoException(
						"Unable to extract encrypted file, missing password: " + item.getPath());
				}
			}
			try (SZExtractCallback szCallback = new SZExtractCallback(monitor, itemIndex, true)) {
				synchronized (fsIndex) {
					archive.extract(new int[] { itemIndex }, false /* extract mode */, szCallback);
				}
				FileCacheEntry result = szCallback.getExtractResult(itemIndex);
				if (result == null) {
					throw new IOException("Unable to extract " + file.getFSRL());
				}
				return result.asByteProvider(file.getFSRL());
			}
		}
		catch (SevenZipException e) {
			throw unwrapSZException(e);
		}

	}
Opens the specified sevenzip container file and initializes this file system with the
contents.

@param byteProvider container file 
@param monitor {@link TaskMonitor} to allow the user to monitor and cancel
@throws CancelledException if user cancels
@throws IOException if error when reading data
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/sevenzip/SevenZipFileSystem.java