docs: private static void buildHashTableStrict(
              Block keyBlock,
              int keyOffset,
              int keyCount,
              MethodHandle keyBlockEquals,
              MethodHandle keyBlockHashCode,
              int[] outputHashTable,
              int hashTableOffset,
              int hashTableSize)
              throws DuplicateMapKeyException
      {
          for (int i = 0; i < keyCount; i++) {
              int hash = getHashPosition(keyBlock, keyOffset + i, keyBlockHashCode, hashTableSize);
              while (true) {
                  if (outputHashTable[hashTableOffset + hash] == -1) {
                      outputHashTable[hashTableOffset + hash] = i;
                      break;
                  }
  
                  Boolean isDuplicateKey;
                  try {
                      // assuming maps with indeterminate keys are not supported
                      isDuplicateKey = (Boolean) keyBlockEquals.invokeExact(keyBlock, keyOffset + i, keyBlock, keyOffset + outputHashTable[hashTableOffset + hash]);
                  }
                  catch (RuntimeException e) {
                      throw e;
                  }
                  catch (Throwable throwable) {
                      throw new RuntimeException(throwable);
                  }
  
                  if (isDuplicateKey == null) {
                      throw new PrestoException(NOT_SUPPORTED, "map key cannot be null or contain nulls");
                  }
  
                  if (isDuplicateKey) {
                      throw new DuplicateMapKeyException(keyBlock, keyOffset + i);
                  }
  
                  hash++;
                  if (hash == hashTableSize) {
                      hash = 0;
                  }
              }
          }
      }