anchor.diff:  type Noise = Noise of name: string
   
   /// A symbol signifying the end of a group.
  -type GroupEnd = GroupEnd of index: uint32 * name: string
  +type GroupEnd = GroupEnd of name: string
   
   /// A symbol signifying the start of a group.
  -type GroupStart = GroupStart of index: uint32 * name: string * groupIndex: Indexed<Group>
  +type GroupStart = GroupStart of name: string * groupIndex: Indexed<Group>
   
   /// A lexical group.
   /// In GOLD, lexical groups are used for situations where a number
  
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
  }
  