protected ManifestParser createManifestParser() throws GhidraBundleException {
		try (Jar jar = new Jar(bundleFile.getFile(true))) {
			Manifest manifest = jar.getManifest();
			if (manifest == null) {
				throw new GhidraBundleException(bundleLocation, "jar bundle with no manifest");
			}
			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 (BundleException e) {
			throw new GhidraBundleException(bundleLocation, "parsing manifest", e);
		}
		catch (GhidraBundleException e) {
			throw e;
		}
		catch (Exception e) {
			throw new AssertException("Unexpected exception while parsing manifest", e);
		}
	}
{@link GhidraJarBundle} wraps an ordinary OSGi bundle .jar.

@param bundleHost the {@link BundleHost} instance this bundle will belong to
@param file the jar file
@param enabled true to start enabled
@param systemBundle true if this is a Ghidra system bundle
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/GhidraJarBundle.java