void pushDelta(@Nullable IntervalNode<T> root) {
    if (root == null || !root.isValid()) return;
    IntervalNode<T> parent = root.getParent();
    assertAllDeltasAreNull(parent);
    int delta = root.delta;
    root.setCachedValues(0, true, 0);
    if (delta == 0) {
      root.setCachedValues(0, true, getModCount());
    }
    else {
      root.setRange(TextRangeScalarUtil.shift(root.toScalarRange(), delta, delta));
      root.maxEnd += delta;
      root.delta = 0;
      //noinspection NonShortCircuitBooleanExpression
      incDelta(root.getLeft(), delta);
      incDelta(root.getRight(), delta);
    }
  }
void pushDelta(@Nullable IntervalNode<T> root)