code: private void link(Node<K, V> y, Node<K, V> x) {
          // remove from root list
          y.prev.next = y.next;
          y.next.prev = y.prev;
  
          // one less root
          roots--;
  
          // clear if marked
          y.mark = false;
  
          // hang as x's child
          x.degree++;
          y.parent = x;
  
          Node<K, V> child = x.child;
          if (child == null) {
              x.child = y;
              y.next = y;
              y.prev = y;
          } else {
              y.prev = child;
              y.next = child.next;
              child.next = y;
              y.next.prev = y;
          }
      }
docs: /*
  Remove node y from the root list and make it a child of x. Degree of x
  increases by 1 and y is unmarked if marked.