docs: @Override
    int findKey(final byte[] key) {
      final long[] hash = MurmurHash3.hash(key, SEED);
      int entryIndex = getIndex(hash[0], tableEntries_);
      final int stride = getStride(hash[1], tableEntries_);
      final int loopIndex = entryIndex;
  
      do {
        if (couponsArr_[entryIndex] == 0) {
          return ~entryIndex; //empty
        }
        if (Map.arraysEqual(key, 0, keysArr_, entryIndex * keySizeBytes_, keySizeBytes_)) {
          return entryIndex;
        }
        entryIndex = (entryIndex + stride) % tableEntries_;
      } while (entryIndex != loopIndex);
      throw new SketchesArgumentException("Key not found and no empty slots!");
    }