docs: private static byte[] decode(String s, int options)
  	{
  		byte[] bytes;
  		try
  		{
  			bytes = s.getBytes(PREFERRED_ENCODING);
  		}
  		catch (java.io.UnsupportedEncodingException uee)
  		{
  			bytes = s.getBytes(); // Uses native encoding
  			// CHECKME: Is this correct? I think it should be a warning instead of an error since nothing
  			// is re-thrown. I do think that *some* sort of logging is in order here especially since UTF-8 should
  			// always be available on all platforms. If it's not, then all bets are off on your runtime env. - Kevin Wall
  		}
  
  		// Decode
  		bytes = decode(bytes, 0, bytes.length, options);
  
  		// Check to see if it's gzip-compressed
  		// GZIP Magic Two-Byte Number: 0x8b1f (35615)
  		if (bytes != null && bytes.length >= 4)
  		{
  
  			int head = ((int) bytes[0] & 0xff) | ((bytes[1] << 8) & 0xff00);
  			if (java.util.zip.GZIPInputStream.GZIP_MAGIC == head)
  			{
  				java.io.ByteArrayInputStream bais = null;
  				java.util.zip.GZIPInputStream gzis = null;
  				java.io.ByteArrayOutputStream baos = null;
  				byte[] buffer = new byte[2048];
  				int length = 0;
  
  				try
  				{
  					baos = new java.io.ByteArrayOutputStream();
  					bais = new java.io.ByteArrayInputStream(bytes);
  					gzis = new java.util.zip.GZIPInputStream(bais);
  
  					while ((length = gzis.read(buffer)) >= 0)
  					{
  						baos.write(buffer, 0, length);
  					} // end while: reading input
  
  					// No error? Get new bytes.
  					bytes = baos.toByteArray();
  
  				} // end try
  				catch (java.io.IOException e)
  				{
  					// Just return originally-decoded bytes
  				} // end catch
  				finally
  				{
  					try
  					{
  						baos.close();
  					}
  					catch (Exception e)
  					{
  					}
  					try
  					{
  						gzis.close();
  					}
  					catch (Exception e)
  					{
  					}
  					try
  					{
  						bais.close();
  					}
  					catch (Exception e)
  					{
  					}
  				} // end finally
  
  			} // end if: gzipped
  		} // end if: bytes.length >= 2
  
  		return bytes;
  	}