code: @GuardedBy("evictionLock")
    void makeDead(Node<K, V> node) {
      synchronized (node) {
        if (node.isDead()) {
          return;
        }
        if (evicts()) {
          // The node's policy weight may be out of sync due to a pending update waiting to be
          // processed. At this point the node's weight is finalized, so the weight can be safely
          // taken from the node's perspective and the sizes will be adjusted correctly.
          if (node.inWindow()) {
            setWindowWeightedSize(windowWeightedSize() - node.getWeight());
          } else if (node.inMainProtected()) {
            setMainProtectedWeightedSize(mainProtectedWeightedSize() - node.getWeight());
          }
          setWeightedSize(weightedSize() - node.getWeight());
        }
        node.die();
      }
    }
docs: Atomically transitions the node to the <tt>dead</tt> state and decrements the
  <tt>weightedSize</tt>.
  
  @param node the entry in the page replacement policy