code: @VisibleForTesting
    static int chooseTableSize(int setSize) {
      setSize = Math.max(setSize, 2);
      // Correct the size for open addressing to match desired load factor.
      if (setSize < CUTOFF) {
        // Round up to the next highest power of 2.
        int tableSize = Integer.highestOneBit(setSize - 1) << 1;
        while (tableSize * DESIRED_LOAD_FACTOR < setSize) {
          tableSize <<= 1;
        }
        return tableSize;
      }
  
      // The table can't be completely full or we'll get infinite reprobes
      checkArgument(setSize < MAX_TABLE_SIZE, "collection too large");
      return MAX_TABLE_SIZE;
    }
docs: Returns an array size suitable for the backing array of a hash table that uses open addressing
  with linear probing in its implementation. The returned size is the smallest power of two that
  can hold setSize elements with the desired load factor. Always returns at least setSize + 2.