anchor.diff:  open Chessie.ErrorHandling
   open Farkle
   
  -/// A record that stores how many of each structures exist in an EGT file.
  +/// A record that stores how many of each tables exist in an EGT file.
   /// It's needed only for verifying that the grammar was successfuly read.
   type TableCounts =
       {
  
positive.code:     | InvalidTableCounts of expected: TableCounts * actual: TableCounts
      /// The item at the given index of a list was not found.
      | IndexNotFound of uint16
  
  type Properties = Properties of Map<string, string>
  
  type CharSet = RangeSet<char>
  
  type SymbolType =
      | Nonterminal
      | Terminal
      | Noise
      | EndOfFile
      | GroupStart
      | GroupEnd
      // 6 is deprecated
      | Error
  
  module SymbolType =
  
      let ofUInt16 =
          function
          | 0us -> ok Nonterminal
  
negative.code:         | 7us -> ok Error
          | x -> x |> InvalidSymbolType |> fail
  
  /// A symbol of a grammar.
  type Symbol =
      {
          /// The symbol's name.
          Name: string
          /// The symbol's type.
          Kind: SymbolType
      }
      with
          /// A special symbol that signifies an error.
          /// It's the same in all grammars, so it's not worth taking it from the symbol table.
          static member Error = {Name = "Error"; Kind = Error}
          /// A special symbol that signifies the end of input.
          /// It's the same in all grammars, so it's not worth taking it from the symbol table.
          static member EOF = {Name = "EOF"; Kind = EndOfFile}
  
  type AdvanceMode =
  