RMNode<T> (@NotNull T key, int start, int end, boolean greedyToLeft, boolean greedyToRight, boolean stickingToRight, int layer) { assert start == end; assert !greedyToLeft; assert !greedyToRight; return new Node<>(this, key, start, start, false, false, stickingToRight); }