code: private void climb(long key, @Nullable QueueType queue, boolean isFull) {
      if (queue == null) {
        climber.onMiss(key, isFull);
      } else {
        climber.onHit(key, queue, isFull);
      }
  
      double probationSize = maximumSize - windowSize - protectedSize;
      Adaptation adaptation = climber.adapt(windowSize, probationSize, protectedSize, isFull);
      if (adaptation.type == INCREASE_WINDOW) {
        increaseWindow(adaptation.amount);
      } else if (adaptation.type == DECREASE_WINDOW) {
        decreaseWindow(adaptation.amount);
      }
    }
docs: Performs the hill climbing process.