docs: private void cutAndMakeRoot(Entry entry) {
          Entry oParent = entry.oParent;
          if (oParent == null) return;  // already a root
  
          oParent.degree--;
          entry.isMarked = false;
  
          // update parent's `oFirstChild` pointer
          Entry oFirstChild = oParent.oFirstChild;
          assert oFirstChild != null;
  
          if (oFirstChild.equals(entry)) {
              if (oParent.degree == 0) {
                  oParent.oFirstChild = null;
              }
              else {
                  oParent.oFirstChild = entry.next;
              }
          }
  
          entry.oParent = null;
          unlinkFromNeighbors(entry);
  
          // add to root list
          mergeLists(entry, oMinEntry);
          if (oParent.oParent != null) {
              if (oParent.isMarked) {
                  cutAndMakeRoot(oParent);
              }
              else {
                  oParent.isMarked = true;
              }
          }
      }