class ManifestMiniDumper {
    /**
     * <code>Name</code> object for <code>Extension-List</code> manifest
     * attribute used for declaring dependencies on installed extensions.
     *
     * @see <a href=
     *      "../../../../technotes/guides/extensions/spec.html#dependency">
     *      Installed extension dependency</a>
     */
    public static final Name EXTENSION_LIST = new Name("Extension-List");

    /**
     * <code>Name</code> object for <code>Extension-Name</code> manifest
     * attribute used for declaring dependencies on installed extensions.
     *
     * @see <a href=
     *      "../../../../technotes/guides/extensions/spec.html#dependency">
     *      Installed extension dependency</a>
     */
    public static final Name EXTENSION_NAME = new Name("Extension-Name");

    /**
     * <code>Name</code> object for <code>Implementation-Title</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name IMPLEMENTATION_TITLE = new Name("Implementation-Title");

    /**
     * <code>Name</code> object for <code>Implementation-Version</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name IMPLEMENTATION_VERSION = new Name("Implementation-Version");

    /**
     * <code>Name</code> object for <code>Implementation-Vendor</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name IMPLEMENTATION_VENDOR = new Name("Implementation-Vendor");

    /**
     * <code>Name</code> object for <code>Implementation-Vendor-Id</code>
     * manifest attribute used for package versioning. Extension mechanism will
     * be removed in a future release. Use class path instead.
     *
     * @see <a href=
     *      "../../../../technotes/guides/extensions/versioning.html#applet">
     *      Optional Package Versioning</a>
     */
    public static final Name IMPLEMENTATION_VENDOR_ID = new Name("Implementation-Vendor-Id");

    /**
     * <code>Name</code> object for <code>Specification-Version</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name SPECIFICATION_VERSION = new Name("Specification-Version");

    /**
     * <code>Name</code> object for <code>Specification-Vendor</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name SPECIFICATION_VENDOR = new Name("Specification-Vendor");

    /**
     * <code>Name</code> object for <code>Specification-Title</code> manifest
     * attribute used for package versioning.
     *
     * @see <a href=
     *      "../../../../technotes/guides/versioning/spec/versioning2.html#wp90779">
     *      Java Product Versioning Specification</a>
     */
    public static final Name SPECIFICATION_TITLE = new Name("Specification-Title");

    /** The Constant BUNDLE_SYMBOLIC_NAME. */
    // Bundle-SymbolicName: javax.servlet-api
    public static final Name BUNDLE_SYMBOLIC_NAME = new Name("Bundle-SymbolicName");

    /** The Constant BUNDLE_NAME. */
    // Bundle-Name: Java Servlet API
    public static final Name BUNDLE_NAME = new Name("Bundle-Name");

    /** The Constant BUNDLE_VERSION. */
    // Bundle-Version: 2.2.9
    public static final Name BUNDLE_VERSION = new Name("Bundle-Version");

    /** The Constant VERSIONS. */
    public static final Name[] VERSIONS = new Name[] { BUNDLE_VERSION, IMPLEMENTATION_VERSION, SPECIFICATION_VENDOR };

    /** The Constant PACKAGE. */
    public static final Name[] PACKAGE = new Name[] { BUNDLE_SYMBOLIC_NAME, IMPLEMENTATION_VENDOR_ID, SPECIFICATION_VENDOR };

    /** The Constant TITLE. */
    public static final Name[] TITLE = new Name[] { BUNDLE_NAME, IMPLEMENTATION_TITLE, SPECIFICATION_VENDOR };

    /**
     * Dump.
     *
     * @param attr the attr
     * @return the string
     */
    public static String dump(Attributes attr) {
        String version = getAttribute(attr, null, VERSIONS);
        String pack = getAttribute(attr, null, PACKAGE);
        String title = getAttribute(attr, null, TITLE);

        return "version=" + version + ", package=" + pack + ", title=" + title;
    }

    /**
     * Gets the attribute.
     *
     * @param main the main
     * @param attr the attr
     * @param names the names
     * @return the attribute
     */
    private static String getAttribute(Attributes main, Attributes attr, Name... names) {<FILL_FUNCTION_BODY>}
}

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

        if (main != null) {
            String value;
            for (Name name : names) {
                value = main.getValue(name);
                if (value != null && !value.isEmpty()) {
                    return value;
                }
            }
        }
        if (attr != null) {
            String value;
            for (Name name : names) {
                value = attr.getValue(name);
                if (value != null && !value.isEmpty()) {
                    return value;
                }
            }
        }

        return null;
    
<no_super_class>