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:                         ExpectedSymbol.EndOfInput
                  let syntaxError = ParseErrorType.SyntaxError(expectedSymbols, foundToken)
                  ParserError(token.Position, syntaxError) |> ParserException |> raise
          let firstToken = tokenizer.GetNextToken(pp, input)
          impl firstToken lalrStates.[0] [lalrStates.[0], null] :?> 'TResult
  
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
  