code: private Tree<K, V> del(Tree<K, V> tree, K k) {
          if (tree == null)
              return null;
  
          int cmp = ordering.compare(k, tree.getKey(kf));
          if (cmp < 0) return delLeft(tree, k);
          else if (cmp > 0) return delRight(tree, k);
          else return append(tree.getLeft(), tree.getRight());
      }
docs: /* Based on Stefan Kahrs' Haskell version of Okasaki's Red&Black Trees
  http://www.cse.unsw.edu.au/~dons/data/RedBlackTree.html