code: @Override
      public synchronized void reset() throws IOException {
          try {
              this.digest = MessageDigest.getInstance("MD5");
          } catch (NoSuchAlgorithmException e) {
              /*
               * Not much to do here. We know the algorithm existed when we created the initial MessageDigest in the
               * constructor, so we can be reasonably sure that it's still going to exist if the stream gets reset.
               */
          }
  
          this.in.reset();
      }
docs: Resets the wrapped input stream and the in progress message digest.
  
  @see java.io.InputStream#reset()