public boolean remove(@NotNull HashTableData table,
                          int key,
                          int value) {
      checkNotNoValue("key", key);
      checkNotNoValue("value", value);

      int capacity = capacity(table);
      int startIndex = Math.abs(hash(key) % capacity);
      for (int probe = 0; probe < capacity; probe++) {
        int slotIndex = (startIndex + probe) % capacity;
        int slotKey = table.entryKey(slotIndex);
        int slotValue = table.entryValue(slotIndex);
        if (slotKey == key && slotValue == value) {
          //reset key, but leave value as-is: this is the marker of 'removed' slot
          markEntryAsDeleted(table, slotIndex);
          //No need to look farther, since only one (key,value) record could be in the map
          return true;
        }
        if (slotKey == NO_VALUE && slotValue == NO_VALUE) {
          //free slot -> end of probing sequence, no (key, value) found -> nothing to remove:
          return false;
        }
      }
      return false;
    }
public boolean remove(@NotNull HashTableData table,
                          int key,
                          int value)