code: @GuardedBy("evictionLock")
    void demoteFromMainProtected() {
      long mainProtectedMaximum = mainProtectedMaximum();
      long mainProtectedWeightedSize = mainProtectedWeightedSize();
      if (mainProtectedWeightedSize <= mainProtectedMaximum) {
        return;
      }
  
      for (int i = 0; i < QUEUE_TRANSFER_THRESHOLD; i++) {
        if (mainProtectedWeightedSize <= mainProtectedMaximum) {
          break;
        }
  
        Node<K, V> demoted = accessOrderProtectedDeque().poll();
        if (demoted == null) {
          break;
        }
        demoted.makeMainProbation();
        accessOrderProbationDeque().add(demoted);
        mainProtectedWeightedSize -= demoted.getPolicyWeight();
      }
      setMainProtectedWeightedSize(mainProtectedWeightedSize);
    }
docs: Transfers the nodes from the protected to the probation region if it exceeds the maximum.