code: private Node<K, V> joinLR(Node<K, V> a, Node<K, V> b) {
      if (a == null) {
        return b;
      }
      if (b == null) {
        return a;
      }
  
      if (java.lang.Math.random() * (size(a) + size(b)) < size(a)) {
        a.right = joinLR(a.right, b);
        fix(a);
        return a;
      } else {
        b.left = joinLR(a, b.left);
        fix(b);
        return b;
      }
    }
docs: ***********************************************************************
  deletion
  ***********************************************************************