docs: public static GZIPInputStream gzipInputStream(final InputStream in) throws IOException
    {
      return new GZIPInputStream(
          new FilterInputStream(in)
          {
            @Override
            public int available() throws IOException
            {
              final int otherAvailable = super.available();
              // Hack. Docs say available() should return an estimate,
              // so we estimate about 1KB to work around available == 0 bug in GZIPInputStream
              return otherAvailable == 0 ? 1 << 10 : otherAvailable;
            }
          }
      );
    }