@Override
  protected @NotNull RMNode<T> createNewNode(@NotNull T key, int start, int end,
                                             boolean greedyToLeft, boolean greedyToRight, boolean stickingToRight, int layer) {
    return new RMNode<>(this, key, start, end, greedyToLeft, greedyToRight, stickingToRight);
  }
@Override
  protected @NotNull RMNode<T> createNewNode(@NotNull T key, int start, int end,
                                             boolean greedyToLeft, boolean greedyToRight, boolean stickingToRight, int layer)