+/**
+ * A collection of Elements and Sequences which only reference each other.
+ *
+ * All analyses are done at the Grammar level, since a given
+ * Element/Sequence can appear in multiple Grammars. Some of these
+ * analyses depend on which elements *reference* a given element,
+ * rather than which elements *are referenced by* a given element.
+ *
+ * This class is package-private because it is likely to change often.
+ */
+abstract class Grammar<Token> {