docs: protected void rehash(int newCapacity) {
  
          int     limitLookup     = hashIndex.newNodePointer;
          boolean oldZeroKey      = hasZeroKey;
          int     oldZeroKeyIndex = zeroKeyIndex;
  
          if (newCapacity < hashIndex.elementCount) {
              return;
          }
  
          hashIndex.reset((int) (newCapacity * loadFactor), newCapacity);
  
          if (multiValueTable != null) {
              int counter = multiValueTable.length;
  
              while (--counter >= 0) {
                  multiValueTable[counter] = false;
              }
          }
  
          hasZeroKey   = false;
          zeroKeyIndex = -1;
          threshold    = newCapacity;
  
          for (int lookup = -1;
                  (lookup = nextLookup(lookup, limitLookup, oldZeroKey, oldZeroKeyIndex))
                  < limitLookup; ) {
              long   longKey     = 0;
              long   longValue   = 0;
              Object objectKey   = null;
              Object objectValue = null;
  
              if (isObjectKey) {
                  objectKey = objectKeyTable[lookup];
              } else if (isIntKey) {
                  longKey = intKeyTable[lookup];
              } else {
                  longKey = longKeyTable[lookup];
              }
  
              if (isObjectValue) {
                  objectValue = objectValueTable[lookup];
              } else if (isIntValue) {
                  longValue = intValueTable[lookup];
              } else if (isLongValue) {
                  longValue = longValueTable[lookup];
              }
  
              if (multiValueTable == null) {
                  addOrRemove(longKey, longValue, objectKey, objectValue, false);
              } else {
                  addOrRemoveMultiVal(longKey, longValue, objectKey,
                                      objectValue, false, false);
              }
  
              if (accessTable != null) {
                  accessTable[hashIndex.elementCount - 1] = accessTable[lookup];
              }
          }
  
          resizeElementArrays(hashIndex.newNodePointer, newCapacity);
      }