public byte[] unZeroCompressDataUsingTable(byte[] compactedByteArray, byte[] zeroCompressionTableByteArray) throws IOException
     {
     	byte uncompactedByteArray[] = new byte[(getByteWidth() * getByteHeight())];

     	ZeroCompressionTableEntry zeroCompressionTable[] = getZeroCompressionTable(zeroCompressionTableByteArray);

     	int uncompactedByteArrayIndex = 0;
     	for (int index = 0; index < getByteHeight(); ++index)
     	{
     		short lineDataStart = zeroCompressionTable[index].lineDataStart;
     		short lineDataEnd = zeroCompressionTable[index].lineDataEnd;
     		int lineDataOffset = zeroCompressionTable[index].lineDataOffset;
     		
     		if ( (-1 != lineDataStart) && (-1 != lineDataEnd) )
     		{
     			for (int zeroIndex = 0; zeroIndex < lineDataStart; ++zeroIndex)
     				uncompactedByteArray[uncompactedByteArrayIndex++] = 0;
     		
     			int compactedIndex = lineDataOffset;
     			for (int lineDataIndex = lineDataStart; lineDataIndex <= lineDataEnd; ++lineDataIndex)
     				uncompactedByteArray[uncompactedByteArrayIndex++] = compactedByteArray[compactedIndex++];
     		}
     		
     		for (int zeroIndex = (lineDataEnd + 1); zeroIndex < getByteWidth(); ++zeroIndex)
     			uncompactedByteArray[uncompactedByteArrayIndex++] = 0;
     	}

     	return uncompactedByteArray;
     }