- Split ops into X_graph variants as discussed;
- Remove tokens from non-Graph region variants and rely on side-effect modelling there while removing side-effect modelling from Graph variants and relying on explicit ordering there;
- Make tokens required to be produced by Graph variants - but kept explicit token type specification given previous discussion on this potentially being configurable in future;
This results in duplicating some code. I considered adding helper
functions but decided against adding an abstraction there early given
size of duplication and creating accidental coupling.