This is nice and easy.
However, having sequence be a simple (lhs, rhs) model causes us to allocate a `mark` on the stack for every sequence concatenation. If we modeled sequences as a `Seq[OpTree]` we would be able to reuse a single mutable mark for all intermediate markings in between elements. This will reduce the stack size for all rules with sequences that are more than two elements long.
I'm not saying that we need to get this fixed now, but we should probably add a `//TODO` comment so we don't forget.