anchor.diff:              >> failIfNone UnknownEGTFile
           either {
               do! EGTReader.readEGT fHeaderCheck fRecord r
  -            do! fixGroupStartSymbols symbols groups
               let! (initialDFA, initialLALR) = !initialStates |> failIfNone UnknownEGTFile
               let dfaStates = SafeArray.ofArrayUnsafe dfaStates
               let lalrStates = SafeArray.ofArrayUnsafe lalrStates
  
positive.code:             | RMCons(String _, RMCons(UInt16 7us, RMNil)) -> Unrecognized |> Some
              | _ -> None
  
          let readGroup fSymbol fGroup index =
              let readNestedGroups =
                  (function | RMCons (UInt16 x, RMNil) -> fGroup x | _ -> None)
                  |> readInChunks true 1
  
negative.code:                 readTableCounts xs |> Option.map initTables
              | RMCons(Byte 'c'B, xs) when isTableCountsInitialized ->
                  readAndAssignIndexed readCharSet charSets xs
              | RMCons(Byte 'S'B, xs) when isTableCountsInitialized && not hasReadAnyGroup ->
                  readAndAssignIndexed readSymbol symbols xs
              | RMCons(Byte 'g'B, xs) when isTableCountsInitialized ->
                  hasReadAnyGroup <- true
                  readAndAssignIndexed (readGroup symbols (itemTry symbols) (Indexed.createWithKnownLength groups)) groups xs
              | RMCons(Byte 'R'B, xs) when isTableCountsInitialized ->
                  readAndAssignIndexed (readProduction (itemTry symbols)) productions xs
              | RMCons(Byte 'I'B, xs) when isTableCountsInitialized ->
  