private ManifestParser createSourceManifestParser() {
		ResourceFile manifestFile = getSourceManifestFile();
		if (!manifestFile.exists()) {
			return null;
		}

		try (InputStream is = manifestFile.getInputStream()) {
			Manifest manifest = new Manifest(is);
			Attributes mainAttributes = manifest.getMainAttributes();
			Map<String, Object> headerMap = mainAttributes.entrySet()
					.stream()
					.collect(Collectors.toMap(e -> e.getKey().toString(),
						e -> e.getValue().toString()));
			return new ManifestParser(null, null, null, headerMap);
		}
		catch (IOException | BundleException e) {
			throw new RuntimeException(e);
		}
	}
Assumes that {@link #updateRequirementsFromMetadata()} has been called recently

@return deduped requirements
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/GhidraSourceBundle.java