private void rehashIfNeeded() {
    //this condition basically means "probing sequences' length likely start to grow"
    if (filledSlots > capacity() * loadFactor) {
      //find out new capacity:
      int newCapacity = estimateOptimalCapacity(aliveValues);

      //rehash:
      Int2IntMultimap newMap = new Int2IntMultimap(newCapacity, loadFactor);
      forEach((_key, _value) -> {
        newMap.put(_key, _value);
        return true;
      });
      this.table = newMap.table;
      this.aliveValues = newMap.aliveValues;
      this.filledSlots = newMap.filledSlots;//should be == aliveValues since no entries were removed yet
    }
  }
private void rehashIfNeeded()