anchor.diff:          if parserSource.AcceptEmptyInput then
               Success <| new Tree<_>(null, getEpsilon startNonTerm, null)
           else
  -            Error (0, Unchecked.defaultof<'TokenType>, "This grammar cannot accept empty string", {drawGSSDot = fun _ -> ()})
  +            Error (0, Unchecked.defaultof<'TokenType>, "This grammar cannot accept empty string",
  +                    {
  +                        drawGSSDot = fun _ -> ()
  +                        lastTokens = fun _ -> [||]
  +                    })
       else
           // Currently processed token
           let curToken = ref enum.Current
  
positive.code:         new (d,a) = {Dest = d; Ast = a}
      end
  
  type ParserDebugFuns = {
      drawGSSDot : string -> unit
  }
  
  type ParseResult<'TokenType> =
      | Success of Tree<'TokenType>
      | Error of int * 'TokenType * string * ParserDebugFuns
  
  
  /// Compare vertex like a pair: (level, state)
  
negative.code:                 else
                      incr curInd
                      shift !curInd
          let lastTokens count =
              [| for i = max 0 (tokens.Count-count) to tokens.Count-1 do
                  yield tokens.[i]|]
          let debugFuns () =
              let vertices = usedStates.ToArray() |> Array.map (fun i -> stateToVertex.[i])
              {
                  drawGSSDot = drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString
                  lastTokens = lastTokens
              }
          if errorIndex <> -1 then
              Error (errorIndex, !curToken, "Parse error", debugFuns ())
          else
  