class ByteWrapper {
  private byte[] marr;
  private int moff;
  private int mlen;

  ByteWrapper(byte[] arr, int off, int len) {
    marr = arr;
    moff = off;
    mlen = len;
  }

  @Override
  public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}

  @Override
  public int hashCode() {
    if (this.marr == null) {
      return 0;
    }

    int res = 1;
    for (int i = 0; i < mlen; i++) {
      res = 31 * res + marr[moff + i];
    }
    return res;
  }
}

    if (this == obj) {
      return true;
    }
    if (!(obj instanceof ByteWrapper)) {
      return false;
    }
    ByteWrapper that = (ByteWrapper) obj;
    if (this.mlen != that.mlen) {
      return false;
    }
    for (int i = 0; i < this.mlen; i++) {
      if (this.marr[this.moff + i] != that.marr[that.moff + i]) {
        return false;
      }
    }
    return true;
  
<no_super_class>