public static String decompress(List<Integer> compressed) {
		// Build the dictionary.
		int dictSize = 256;
		Map<Integer,byte[]> dictionary = new HashMap<Integer,byte[]>();
		byte[] a = new byte[1];
		for (int i = 0; i < 256; i++){
			a[0]=(byte)i;
			dictionary.put(i, a);
		}
		byte[] w = new byte[1];
		w[0] = compressed.remove(0).byteValue();
		
		
		
		byte[] result =new byte[1024*10];
		result[0]=(byte) w[0];
		byte[] kk = new byte[1];
		byte[] temp = new byte[1];
//		String w = "" + (char)(int)compressed.remove(0);
//		StringBuffer result = new StringBuffer(w);
		for (int k : compressed) {
			byte[] entry;
//			String entry;
			if (dictionary.containsKey(k))
				entry = dictionary.get(k);
			else if (k == dictSize){
				
				temp[0] = w[0];
				entry = concatenateByteArrays(w,temp);
			}
//				entry = w + w.charAt(0);
			else{
				throw new IllegalArgumentException("Bad compressed k: " + k);
			}
			result = concatenateByteArrays(result,entry);
			// Add w+entry[0] to the dictionary.
			temp[0] =entry[0];
			dictionary.put(dictSize++,concatenateByteArrays(w,temp));
			w = entry;
		}
		return result.toString();
	}