anchor.diff:          use objBuffer = new ObjectBuffer()
           let oops = OptimizedOperations.Create grammar
           let lalrStates = grammar.LALRStates
  +
           let rec impl (token: Token) currentState stack =
               let (|LALRState|) x = lalrStates.[int x]
               let nextAction =
  
positive.code:                         with
                          | :? ParserApplicationException -> reraise()
                          | e -> PostProcessorException(productionToReduce, e) |> raise
                      impl token nextState ((nextState, resultObj) :: stack')
                  | None -> failwithf "Error in state %d: GOTO was not found for production %O." nextState.Index productionToReduce
              | None ->
                  let expectedSymbols =
                      currentState.Actions.Keys
  
negative.code:             match nextAction with
              | Some LALRAction.Accept -> stack |> List.head |> snd
              | Some(LALRAction.Shift (LALRState nextState)) ->
                  if token.IsEOF then
                      failwithf "Error in state %d: the parser cannot emit shift when EOF is encountered." currentState.Index
                  let nextToken = tokenizer.GetNextToken(pp, input)
                  impl nextToken nextState ((nextState, token.Data) :: stack)
              | Some(LALRAction.Reduce productionToReduce) ->
                  let handleLength = productionToReduce.Handle.Length
                  let newStack = List.skip handleLength stack
                  // The stack cannot be empty; we gave it one element in the beginning.
                  let gofromState, _ = newStack.Head
                  match oops.LALRGoto productionToReduce.Head gofromState with
                  | Some gotoState ->
                      let resultObj =
                          let tokens = objBuffer.GetBufferFromStack(handleLength, stack)
                          try
  