code: int probe(Object element)
      {
          int index = this.spread(element);
  
          int removedIndex = -1;
          if (ObjectBooleanHashMap.isRemovedKey(this.keys[index]))
          {
              removedIndex = index;
          }
  
          else if (this.keys[index] == null || ObjectBooleanHashMap.nullSafeEquals(this.toNonSentinel(this.keys[index]), element))
          {
              return index;
          }
  
          int nextIndex = index;
          int probe = 17;
  
          // loop until an empty slot is reached
          while (true)
          {
              // Probe algorithm: 17*n*(n+1)/2 where n = no. of collisions
              nextIndex += probe;
              probe += 17;
              nextIndex &= this.keys.length - 1;
  
              if (ObjectBooleanHashMap.isRemovedKey(this.keys[nextIndex]))
              {
                  if (removedIndex == -1)
                  {
                      removedIndex = nextIndex;
                  }
              }
              else if (ObjectBooleanHashMap.nullSafeEquals(this.toNonSentinel(this.keys[nextIndex]), element))
              {
                  return nextIndex;
              }
              else if (this.keys[nextIndex] == null)
              {
                  return removedIndex == -1 ? nextIndex : removedIndex;
              }
          }
      }
docs: exposed for testing