code: public static Graph decode(String encodedGraph, GraphConfiguration config) 
  	throws GraphEncodingException {
  		// encoded = "800_35_REGIONDATA_REGIONDATA_REGIONDATA_REGIONDATA_..."
  		String parts[] = encodedGraph.split(DELIM);
  		int numRegions = parts.length - 2;
  		if(parts.length < 1) {
  			throw new GraphEncodingException("No regions defined!");
  		}
  		int width;
  		int height;
  		try {
  			width = Integer.parseInt(parts[0]);
  		} catch(NumberFormatException e) {
  			throw new GraphEncodingException("Bad integer width:" + parts[0]);
  		}
  		try {
  			height = Integer.parseInt(parts[1]);
  		} catch(NumberFormatException e) {
  			throw new GraphEncodingException("Bad integer width:" + parts[0]);
  		}
  		RegionData data[] = new RegionData[numRegions];
  		for(int i = 0; i < numRegions; i++) {
  			// REGIONDATA = "2001:-1:0ab3f70023f902f"
  			//               LABEL:ACTIVE_IDX:HEXDATA
  			String regionParts[] = parts[i + 2].split(REGION_DELIM);
  			if(regionParts.length != 3) {
  				throw new GraphEncodingException("Wrong number of parts in " + 
  						parts[i+2]);
  			}
  			int highlightedValue = Integer.parseInt(regionParts[1]);
  			int values[] = decodeHex(regionParts[2]);
  			data[i] = new RegionData(regionParts[0], highlightedValue, values);
  		}
  		return new Graph(width, height, data, config);
  	}
docs: convert a String-encoded graph into a usable Graph object, using
  the provided GraphConfiguration.
  @param encodedGraph String encoded graph, as returned by getEncoded()
  @param config the GraphConfiguration to use
  @return a Graph, ready to use
  @throws GraphEncodingException if there were problems with the encoded
  data