code: public int available() throws IOException {
          if (this.entrySize - this.entryOffset > Integer.MAX_VALUE) {
              return Integer.MAX_VALUE;
          }
          return (int) (this.entrySize - this.entryOffset);
      }
docs: Get the available data that can be read from the current
  entry in the archive. This does not indicate how much data
  is left in the entire archive, only in the current entry.
  This value is determined from the entry's size header field
  and the amount of data already read from the current entry.
  Integer.MAX_VALUE is returned in case more than Integer.MAX_VALUE
  bytes are left in the current entry in the archive.
  
  @return The number of available bytes for the current entry.
  @throws IOException for signature