+ /**
+ * A single state in the LR table and the transitions
+ * possible from it
+ *
+ * A state corresponds to a set of Sequence.Pos's. Each
+ * StateNode in the GSS has a State; the StateNode represents a set of
+ * possible parses, one for each Pos in the State.
+ *
+ * Every state is either "doomed" or "normal". If a Pos
+ * is part of a Sequence which is a conjunct (that is, it was
+ * passed to Sequence.{and(),andnot()}), then that Pos
+ * will appear only in doomed States. Furthermore, any set
+ * of Positions reachable from a doomed State also forms a
+ * doomed State. Note that in this latter case, a doomed
+ * state might have exactly the same set of Positions as a
+ * non-doomed state.
+ *
+ * Nodes with non-doomed states represent nodes which
+ * contribute to actual valid parses. Nodes with doomed
+ * States exist for no other purpose than to enable/disable
+ * some future reduction from a non-doomed StateNode. Because of
+ * this, we "garbage-collect" Nodes with doomed states if
+ * there are no more non-doomed Nodes which they could
+ * affect (see ResultNode, Reduction, and StateNode for details).
+ *
+ * Without this optimization, many seemingly-innocuous uses
+ * of positive and negative conjuncts can trigger O(n^2)
+ * space+time complexity in otherwise simple grammars. There
+ * is an example of this in the regression suite.
+ */
+ class State<Token> implements IntegerMappable, Serializable {