Let's say you have a causal tree representing an output sequence, and you are interested in running an arbitrary set of finite state machines over this sequence. What is an efficient approach to rewinding and replaying those state machines in the face of updates coming into the sequence? What if those state machines themselves emit (and might want to retract) operations on the underlying sequence? Does anyone know what I should be googling here?