@Override
	public FileAttributes getFileAttributes(GFile file, TaskMonitor monitor) {
		synchronized (fsIndex) {
			FileAttributes result = new FileAttributes();
			if (fsIndex.getRootDir().equals(file)) {
				result.add(NAME_ATTR, "/");
				result.add("Archive Format", archiveFormat.toString());
			}
			else {
				ISimpleInArchiveItem item = fsIndex.getMetadata(file);
				if (item == null) {
					return result;
				}

				result.add(NAME_ATTR,
					FilenameUtils.getName(uncheckedGet(item::getPath, "unknown")));
				result.add(FILE_TYPE_ATTR,
					uncheckedGet(item::isFolder, false) ? FileType.DIRECTORY : FileType.FILE);
				boolean encrypted = uncheckedGet(item::isEncrypted, false);
				result.add(IS_ENCRYPTED_ATTR, encrypted);
				if (encrypted) {
					result.add(HAS_GOOD_PASSWORD_ATTR, passwords.get(item.getItemIndex()) != null);
				}
				String comment = uncheckedGet(item::getComment, null);
				result.add(COMMENT_ATTR, !comment.isBlank() ? comment : null);
				result.add(COMPRESSED_SIZE_ATTR, uncheckedGet(item::getPackedSize, null));
				result.add(SIZE_ATTR, uncheckedGet(item::getSize, null));

				Integer crc = uncheckedGet(item::getCRC, null);
				result.add("CRC", crc != null ? "%08X".formatted(crc) : null);
				result.add("Compression Method", uncheckedGet(item::getMethod, null));
				result.add(CREATE_DATE_ATTR, uncheckedGet(item::getCreationTime, null));
				result.add(MODIFIED_DATE_ATTR, uncheckedGet(item::getLastWriteTime, null));
			}
			return result;
		}
	}
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