Initialise a loop by setting up the looping construct.
The step label is important to create a stack of loop counters when within a nested context.
If the provided label is not the same as the current label on the stack, add a new loop counter.
The loopName can be used to refer to the loops counter via the LoopsStep
Set the number of times the traverser has gone through a loop back to 0.
When a traverser exits a looping construct, this method should be called.
In a nested loop context, the highest stack loop counter should be removed.
Generate a child traverser of the current traverser for current as step and new object location.
The child has the path history, future, and loop information of the parent.
The child extends that path history with the current as and provided R-object.
When two traversers are have equality with each other, then they can be merged.
This method is used to merge the traversers into a single traverser.
This is used for optimization where instead of enumerating all traversers, they can be counted.