code: public boolean remove(Object objectToRemove, int hash) {
          checkNotNull(objectToRemove);
  
          int index = hash & mask;
  
          // using the hashes array for looping and comparison if possible, hence we're cache friendly
          while (hashes[index] != 0 || table[index] != null) {
              if (hash == hashes[index] && objectToRemove.equals(table[index])) {
                  removeFromIndex(index);
  
                  return true;
              }
              index = ++index & mask;
          }
  
          return false;
      }
docs: Removes the specified element from this set if it is present with
  the hash provided in parameter.
  <p>
  This variant of {@link #remove(Object)} acts as an optimisation to
  enable avoiding {@link #hashCode()} calls if the hash is already
  known on the caller side.
  
  @param objectToRemove object to be removed from this set, if present
  @param hash           the hash of the element to be removed
  @return <tt>true</tt> if this set contained the specified element
  @see #remove(Object)