public static PackageDescription fromString(String contents) throws IOException {

		PackageDescription d = new PackageDescription();
		d.properties = ArrayListMultimap.create();

		List<String> lines = CharStreams.readLines(new StringReader(contents));
		String key = null;
		StringBuilder value = new StringBuilder();
		for(String line : lines) {
			if(line.length() > 0) {
				if(Character.isWhitespace(line.codePointAt(0))) {
					if(key == null) {
						throw new IllegalArgumentException("Expected key at line '" + line + "'");
					}
					value.append(" ").append(line.trim());
				} else {
					if(key != null) {
						d.properties.put(key, value.toString());
						value.setLength(0);
					}
					int colon = line.indexOf(':');
					if(colon == -1) {
						throw new IllegalArgumentException("Expected line in format key: value, found '" + line + "'");
					}
					key = line.substring(0, colon);
					value.append(line.substring(colon+1).trim());
				}
			}
		}
		if(key != null) {
			d.properties.put(key, value.toString());
		}
		return d;
	}