anchor.diff:      /// 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 which is produced by a concatenation of other `LALRSymbol`s, as the LALR parser dictates.
  -type NonTerminal = internal NonTerminal of name: string
  +/// A symbol that is part of `NonTerminal`s, and can be produced by the LALR parser.
  +type LALRSymbol = Choice<Terminal, NonTerminal>
   
   /// An array of `LALRSymbol`s that can produce a specific `NonTerminal`.
   type Production = {
  
positive.code: and LALRState = {
      /// The index of the state.
      Index: uint32
      /// The available `LALRAction`s of the state.
      /// Depending on the symbol, the next action to be taken is determined.
      /// In case of an end-of-input, the corresponding action - if it exists - will have a key of `None`.
      Actions: Map<LALRSymbol option, LALRAction>
  }
  
  /// A context-free grammar according to which, Farkle can parse text.
  
negative.code:     Children: LALRSymbol ImmutableArray
  }
  
  /// An action to be taken by the LALR parser according to the given `Terminal`.
  [<RequireQualifiedAccess>]
  type LALRAction =
      /// This action indicates the parser to shift to the specified `LALRState`.
      | Shift of Indexed<LALRState>
      /// This action indicates the parser to reduce a `Production`.
      | Reduce of Production
      /// When the parser encounters this action for a given symbol, the input text is accepted as correct and parsing ends.
      | Accept
  
  