private void mapInto(@Nonnull Map<String, byte[]> map, @Nonnull WorkspaceResource resource) {
			// Place classes into map
			resource.jvmClassBundleStream().forEach(bundle -> {
				for (JvmClassInfo classInfo : bundle) {
					String key;
					String originalName = PathOriginalNameProperty.get(classInfo);
					if (originalName == null) {
						String pathPrefix = PathPrefixProperty.get(classInfo);
						String pathSuffix = Objects.requireNonNullElse(PathSuffixProperty.get(classInfo), ".class");
						key = classInfo.getName() + pathSuffix;
						if (pathPrefix != null)
							key = pathPrefix + key;
					} else {
						key = originalName;
					}
					map.put(key, classInfo.getBytecode());
					updateProperties(key, classInfo);
				}
			});

			// Place versioned files into map
			for (Map.Entry<Integer, VersionedJvmClassBundle> entry : resource.getVersionedJvmClassBundles().entrySet()) {
				String versionPath = JarFileInfo.MULTI_RELEASE_PREFIX + entry.getKey() + "/";
				for (Map.Entry<String, JvmClassInfo> classEntry : entry.getValue().entrySet()) {
					String key = versionPath + classEntry.getKey() + ".class";
					JvmClassInfo value = classEntry.getValue();
					map.put(key, value.getBytecode());
					updateProperties(key, value);
				}
			}

			// Rebuild Android DEX files and place into map
			for (Map.Entry<String, AndroidClassBundle> entry : resource.getAndroidClassBundles().entrySet()) {
				// TODO: Need to write back DEX files
			}

			// Place files into map
			for (FileInfo fileInfo : resource.getFileBundle()) {
				map.put(fileInfo.getName(), fileInfo.getRawContent());
				updateProperties(fileInfo.getName(), fileInfo);
			}

			// Recreate embedded resources as ZIP files with the original file paths
			for (Map.Entry<String, WorkspaceFileResource> entry : resource.getEmbeddedResources().entrySet()) {
				String embeddedFilePath = entry.getKey();
				WorkspaceFileResource embeddedResource = entry.getValue();
				Map<String, byte[]> embeddedMap = new TreeMap<>();
				mapInto(embeddedMap, embeddedResource);
				byte[] embeddedBytes = Unchecked.get(() -> ZipCreationUtils.createZip(embeddedMap));
				map.put(embeddedFilePath, embeddedBytes);
				FileInfo embeddedFile = embeddedResource.getFileInfo();
				updateProperties(embeddedFilePath, embeddedFile);
			}
		}
Takes the contents of the given resource and puts them into the map.

@param map
		Map to collect values into.
@param resource
		Resource to pull values from.
recaf-core/src/main/java/software/coley/recaf/services/workspace/io/WorkspaceExportOptions.java