anchor.diff:                  | _ -> None
                   |> readToEnd false
               function
  -            | UInt16 index :: Boolean false :: UInt16 _ :: Empty :: xs ->
  +            | Boolean false :: UInt16 _ :: Empty :: xs ->
                   xs
                   |> readDFAEdges
  -                |> Option.map (fun edges -> (uint32 index, edges) |> DFAContinue)
  -            | UInt16 index :: Boolean true :: UInt16 acceptIndex :: Empty :: xs -> maybe {
  +                |> Option.map (fun edges -> (index, edges) |> DFAContinue)
  +            | Boolean true :: UInt16 acceptIndex :: Empty :: xs -> maybe {
                   let! edges = readDFAEdges xs
                   let! acceptSymbol = fSymbol acceptIndex
  -                let index = uint32 index
                   return DFAAccept (index, (acceptSymbol, edges))
                   }
               | _ -> None
   
  -        let readLALRState fSymbol fProduction fLALR =
  +        let readLALRState fSymbol fProduction fLALR index =
               let readLALRAction =
                   function
                   | UInt16 symbolIndex :: xs -> maybe {
  
positive.code:                 |> readToEnd false
                  >> Option.map RangeSet.concat
              function
              | UInt16 index :: UInt16 _unicodePlane :: UInt16 _rangeCount
                  :: Empty :: ranges ->
                  ranges
                  |> readRanges
                  |> Option.map (IndexableWrapper.create16 index)
              | _ -> None
  
          let readSymbol =
              function
              | UInt16 index :: xs ->
                  match xs with
                  | [String name; UInt16 0us] -> Nonterminal (uint32 index, name) |> Some
                  | [String name; UInt16 1us] -> Terminal (uint32 index, name) |> Some
                  | [String name; UInt16 2us] -> Noise name |> Some
                  | [String _ ; UInt16 3us] -> EndOfFile |> Some
                  | [String name; UInt16 4us] -> GroupStart name |> Some
                  | [String name; UInt16 5us] -> GroupEnd name |> Some
                  | [String _; UInt16 7us] -> Error |> Some
                  | _ -> None
                  |> Option.map (IndexableWrapper.create16 index)
              | _ -> None
  
          let readGroup fSymbol fGroup =
              let readNestedGroups =
                  (function | UInt16 x :: xs -> x |> fGroup |> Option.map (fun x -> x, xs) | _ -> None)
                  |> readToEnd true
                  >> Option.map set
              function
              | UInt16 index :: String name :: UInt16 containerIndex :: UInt16 startIndex :: UInt16 endIndex :: UInt16 advanceMode :: UInt16 endingMode :: Empty :: UInt16 _nestingCount :: xs -> maybe {
                  let! containerSymbol = fSymbol containerIndex
                  let! startSymbol = fSymbol startIndex
                  let! endSymbol = fSymbol endIndex
  
negative.code:                     }
              | _ -> None
  
          let readCharSet index =
              let readRanges =
                  function
                  | UInt16 start :: UInt16 theEnd :: xs ->
  