code: public int read(byte[] b, int off, int len) throws IOException {
          int n;
          if (first == null) {
              n = super.read(b, off, len);
          } else {
              n = -1;
          }
          if (jv != null) {
              jv.update(n, b, off, len, mev);
          }
          return n;
      }
docs: Reads from the current JAR file entry into an array of bytes.
  If <code>len</code> is not zero, the method
  blocks until some input is available; otherwise, no
  bytes are read and <code>0</code> is returned.
  If verification has been enabled, any invalid signature
  on the current entry will be reported at some point before the
  end of the entry is reached.
  @param b the buffer into which the data is read
  @param off the start offset in the destination array <code>b</code>
  @param len the maximum number of bytes to read
  @return the actual number of bytes read, or -1 if the end of the
  entry is reached
  @exception  NullPointerException If <code>b</code> is <code>null</code>.
  @exception  IndexOutOfBoundsException If <code>off</code> is negative,
  <code>len</code> is negative, or <code>len</code> is greater than
  <code>b.length - off</code>
  @exception ZipException if a ZIP file error has occurred
  @exception IOException if an I/O error has occurred
  @exception SecurityException if any of the jar file entries
  are incorrectly signed.