protected @NotNull Node<K> maximumNode(@NotNull Node<K> n) {
    while (n.getRight() != null) {
      n = n.getRight();
    }
    return n;
  }
protected @NotNull Node<K> maximumNode(@NotNull Node<K> n)