anchor.diff:      /// an accepting state has not been found, tokenizing fails.
       | Continue of index: uint32 * DFAEdge
       /// This state accepts a symbol. If the state graph cannot be further walked, the included `Symbol` is returned.
  -    | Accept of index: uint32 * Choice<Terminal,Noise> * DFAEdge
  -
  -/// A symbol that is part of `NonTerminal`s, and can be produced by the LALR parser.
  -type LALRSymbol = Choice<Terminal, NonTerminal>
  +    | Accept of index: uint32 * DFASymbol * DFAEdge
  +    member x.Index = match x with DFAState.Continue (idx, _) | DFAState.Accept (idx, _, _) -> idx
  +    override x.ToString() = string x.Index
   
   /// An array of `LALRSymbol`s that can produce a specific `NonTerminal`.
   type Production = {
  
positive.code:     /// The `Nonterminal` the production is referring to.
      // Storing the map's key (the nonterminal) inside its value (this production)
      // is acceptable, because the production's head is an integral part of its definition.
      HeadSymbol: NonTerminal
      /// The `LALRSymbol`s the production is made of.
      Children: LALRSymbol ImmutableArray
  }
  
  /// An action to be taken by the LALR parser according to the given `Terminal`.
  [<RequireQualifiedAccess>]
  
negative.code:     | Reduce of Production
      /// When the parser encounters this action for a given symbol, the input text is accepted as correct and parsing ends.
      | Accept
      override x.ToString() =
          match x with
          | Shift x -> sprintf "Shift to state %d" x.Value
          | Reduce x -> sprintf "Reduce production %O" x
          | Accept -> "Accept"
  
  /// A LALR state. Many of them define the parsing logic of a `Grammar`.
  and LALRState = {
  