code: @Override
  
      public int read(byte[] bytes, int off, int len) throws IOException {
          int numOfBytesRead = in.read(bytes, off, len);
          if (numOfBytesRead != -1) {
              hasher.put(bytes, off, numOfBytesRead);
          }
          return numOfBytesRead;
      }
docs: Reads the specified bytes of data from the underlying input stream and updates the hasher with
  the bytes read.