In a bunch of places, we need to get a recurrence object R and, given a start date start (to start the recurrence) and a "split date" split, generate two other recurrences R1 (ending one day before split) and and R2 (starting at split and going as far as the original). In some cases, the split should not even occur and only one recurrence R1, identical to the original, should be available.
The logic for this operation is quite complicated. It is also duplicated in two or more places. So, we want to have a class to make this operation, with a bunch of unit tests and clear interface.