int (@Nullable IntervalNode<T> node, int deltaUpToRootExclusive) { if (node == null) { return 0; } if (node.isValid()) { return node.maxEnd + node.delta + deltaUpToRootExclusive; } // since node is invalid, ignore node.delta return Math.max(maxEndOf(node.getLeft(), deltaUpToRootExclusive), maxEndOf(node.getRight(), deltaUpToRootExclusive)); }