+ - keywordification (ie globally reject from all productions?
+ - generalized follow-by?)
+
+ - clean up util package
+
+ - currently we GC the doomed stack when the parent dies... but
+ [ideally] we should also GC the parent when the doomed stack dies
+ if it was a positive conjunct.
+
+ - single-tree-return assumption
+ - have a way to let question marks not be tagged?
+ - "flat" sequences (no subtrees contain "::"s?) -- stringifiable
+ - make it so that we can have multi-result nonterminals
+ so long as they always appear under double-colons?
+ auto-insert the unwrap?
+
+ - get rid of Sequence.Singleton if possible
+
+ - use 'a'-'z' or 'a-z' instead of [a-z]?
+ - de-genericize?
+ - foo.add(x)
+ foo.add(y.andnot(x)) ==> this is broken
+ - distinguish Conjunct from Sequence?
+ => !(Conjunct instanceof Reducible)
+ - avoid building the parts of the tree that end up getting dropped
+ - is it worth adding an additional class of states for these?
+ - or perhaps just a runtime node marker (hasNonDroppedParent)
+ - "ambiguity modulo dropped fragments"?
+ - this may conceal highly inefficient grammars...
+ - double-check all the region logic
+ - automatically collect time statistics and display