anchor.diff:                              nfaEdge.label = parserSource.TokenToNumber tokens.[token]
                           | _ -> false
   
  -                    let reductionStep (leftNfaVertex : VertexWithBackTrack<int, int>) leftGssVertex rightVertex sppfLabel =
  +                    let reductionStep (leftNfaVertex : VertexWithBackTrack<int, int>) (leftGssVertex : GssVertex) rightVertex sppfLabel =
                           let prevVertex =
                               match reductionTemp.TryGetAlreadyVisited leftNfaVertex leftGssVertex with
                               | Some pv -> pv
  
positive.code:                         let newVertex = addVertex state num None
                          let sppfLabel = SppfLabel.TemporaryReduction reductionTemp
                          
                          addEdge gssVertex sppfLabel notAttachedEdges.[state]
                          let arr = parserSource.Reduces.[state].[!curNum]
                          let edgeOpt = Some (gssVertex, sppfLabel)
  
negative.code:                             SppfLabel.Reduction (rt.Production, (rt.getLeftEnd gssVertex.Level gssVertex.State, rt.EndLevel, rt.AcceptingNfaStates))
                          | _ -> sppfLabel
                      new GssEdge(gssVertex, sppfLabel)
                  let gssEdges = edges |> ResizeArray.map toEdge
                  if count > 0 then
                      stateToVertex.[state].Value.firstOutEdge <- Some gssEdges.[0]
                      if count > 1 then
                          stateToVertex.[state].Value.otherOutEdges <- ResizeArray.sub gssEdges 1 (count - 1) |> ResizeArray.toArray
                  edges.Clear()
              while temporarySppfEdges.Count > 0 do
                  let source, edge = temporarySppfEdges.Pop()
  