anchor.diff:              function
               | RMCons(String name, RMCons(UInt16 containerIndex, RMCons(UInt16 startIndex, RMCons(UInt16 endIndex, RMCons(UInt16 advanceMode, RMCons(UInt16 endingMode, RMCons(Empty, RMCons(UInt16 _nestingCount, xs)))))))) -> maybe {
                   let! containerSymbol = fSymbol containerIndex
  -                let! startSymbol = fSymbol startIndex
  +                let! startSymbol = fSymbol startIndex |> Option.map (function | GroupStart (_, name) -> GroupStart (Indexed.create index, name) | x -> x)
  +                startIndex |> int |> Array.set symbols <| startSymbol
                   let! endSymbol = fSymbol endIndex
                   let! advanceMode = match advanceMode with | 0us -> Some Token | 1us -> Some Character | _ -> None
                   let! endingMode = match endingMode with | 0us -> Some Open | 1us -> Some Closed | _ -> None
  
positive.code:             >> 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
  
negative.code:             | RMCons(String _, RMCons(UInt16 7us, RMNil)) -> Unrecognized |> Some
              | _ -> None
  
          let readGroup symbols fSymbol fGroup index =
              let readNestedGroups =
                  (function | RMCons (UInt16 x, RMNil) -> fGroup x | _ -> None)
                  |> readInChunks true 1
  