anchor.diff:      Actions: Map<LALRSymbol option, LALRAction>
   }
   
  -/// A context-free grammar under which, Farkle can parse text.
  +/// A context-free grammar according to which, Farkle can parse text.
   type Grammar = internal {
       _Properties: Map<string,string>
   
       _StartSymbol: NonTerminal
  -    _NonTerminals: NonTerminal SafeArray
  +    _NonTerminalInfoMap: Map<NonTerminal, Production ImmutableArray>
   
       _Groups: Group SafeArray
       _LALRStates: LALRState StateTable
  
positive.code: and Group = {
      /// The name of the group.
      Name: string
      /// The index of the group as it appears on the grammar file.
      Index: uint32
      /// The symbol that represents the group's content.
      ContainerSymbol: Choice<Terminal, Noise>
      /// The symbol that represents the group's start.
  
negative.code:     | 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
  
  /// An array of `LALRSymbol`s that can produce a specific `NonTerminal`.
  type Production = {
      /// The index of the production.
      Index: uint32
      /// 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
  }
  