This change leaves the AST created by parsing the artificial rule in a strange state.

1. Some nodes in the AST contain start/stop indexes into the token stream for the artificial rule, and some contain start/stop indexes into the original AST. There is no obvious way to distinguish between the two.
2. The stop index is only valid for the case where the original node in the grammar did not include any element options. Rather than set start/stop value directly, you should locate the original AST rooted at a token with index `newTok.getTokenIndex()`, and copy the start/stop values from that tree over to `elWithOpt`.