- repeated subexpressions
- FindAll
- optional terminal matches (look at top node in AST)
- remove OpCaptures from terminals
- recognize some special restructure.Submatch struct and populate the begin/end position
- some way to get the entire string and begin/end position for a matched struct