docs: void adjustOrPutValue(final T key, final long adjustAmount) {
      final int arrayMask = keys.length - 1;
      int probe = (int) hash(key.hashCode()) & arrayMask;
      int drift = 1;
      while (states[probe] != 0 && !keys[probe].equals(key)) {
        probe = (probe + 1) & arrayMask;
        drift++;
        //only used for theoretical analysis
        assert (drift < DRIFT_LIMIT) : "drift: " + drift + " >= DRIFT_LIMIT";
      }
  
      if (states[probe] == 0) {
        // adding the key to the table the value
        assert (numActive <= loadThreshold)
          : "numActive: " + numActive + " > loadThreshold: " + loadThreshold;
        keys[probe] = key;
        values[probe] = adjustAmount;
        states[probe] = (short) drift;
        numActive++;
      } else {
        // adjusting the value of an existing key
        assert (keys[probe].equals(key));
        values[probe] += adjustAmount;
      }
    }