Changing :starts does not affect the value of :between which was used to build r0, hence the internal representation of the object becomes ambiguous.
A solution would be to normalize the representation and not to store convenience parameters such as :between but only the derived parameters (in this case :starts and :until).
The use of convenience parameters such as
:between
leads to ambiguous representations and breaks chaining. Consider the following case:This is apparently because the internal representation (and serialization) of
r1
looks like this:Changing
:starts
does not affect the value of:between
which was used to buildr0
, hence the internal representation of the object becomes ambiguous.A solution would be to normalize the representation and not to store convenience parameters such as
:between
but only the derived parameters (in this case:starts
and:until
).