headers.set(header, null);  headers.set(header, value.toString().trim());
headers.set(header, value.toString().trim(), true);
	public static Headers parseManifest(InputStream in) throws BundleException {		try {			Headers headers = new Headers(10);			BufferedReader br;			try {				br = new BufferedReader(new InputStreamReader(in, "UTF8")); //$NON-NLS-1$			} catch (UnsupportedEncodingException e) {				br = new BufferedReader(new InputStreamReader(in));			}			String header = null;			StringBuffer value = new StringBuffer(256);			boolean firstLine = true;			while (true) {				String line = br.readLine();				/* The java.util.jar classes in JDK 1.3 use the value of the last				 * encountered manifest header. So we do the same to emulate				 * this behavior. We no longer throw a BundleException				 * for duplicate manifest headers.				 */				if ((line == null) || (line.length() == 0)) /* EOF or empty line */				{					if (!firstLine) /* flush last line */					{						headers.set(header, null); /* remove old attribute,if present */						headers.set(header, value.toString().trim());					}					break; /* done processing main attributes */				}				if (line.charAt(0) == ' ') /* continuation */				{					if (firstLine) /* if no previous line */					{						throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_SPACE, line));					}					value.append(line.substring(1));					continue;				}				if (!firstLine) {					headers.set(header, null); /* remove old attribute,if present */					headers.set(header, value.toString().trim());					value.setLength(0); /* clear StringBuffer */				}				int colon = line.indexOf(':');				if (colon == -1) /* no colon */				{					throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_LINE_NOCOLON, line));				}				header = line.substring(0, colon).trim();				value.append(line.substring(colon + 1));				firstLine = false;			}			return headers;		} catch (IOException e) {			throw new BundleException(Msg.MANIFEST_IOEXCEPTION, e);		} finally {			try {				in.close();			} catch (IOException ee) {			}		}	}