anchor.diff:          then
               verticesToProcess.Enqueue(elem)
   
  -    let addNonZeroReduction gssVertex state token gssEdge (innerGraphV : VInfo<_>)=
  -        let arr = parserSource.Reduces.[state].[parserSource.TokenToNumber token]
  +    let addNonZeroReduction (gssVertex : Vertex) token gssEdge (innerGraphV : VInfo<_>)=
  +        let arr = parserSource.Reduces.[gssVertex.State].[parserSource.TokenToNumber token]
           if arr <> null 
           then
               for (prod, pos) in arr do
                   innerGraphV.AddReduction(new Reduction(gssVertex, prod, pos, Some gssEdge))
   
  -    let addZeroReduction gssVertex state token (innerGraphV : VInfo<_>) shouldEnqueue =
  -        let arr = parserSource.ZeroReduces.[state].[parserSource.TokenToNumber token]
  +    let addZeroReduction (gssVertex : Vertex) token (innerGraphV : VInfo<_>) shouldEnqueue =
  +        let arr = parserSource.ZeroReduces.[gssVertex.State].[parserSource.TokenToNumber token]
           if arr <> null
           then
               for prod in arr do
  
positive.code:         for (v, e) in copyPR do
              let passingReductions = v.PassingReductions
              for prod, remainLength, path, nonTerm, pos, startV in passingReductions do
                  let newPath = path.AddEdge(nodes.[e.Ast])
                  walk (remainLength - 1) e.Dest newPath startV nonTerm pos prod true
              graphV.passingReductions.Remove((v, e)) |> ignore
  
  
negative.code:             let newVertex, isNew = addVertex currentGraphV state currentGraphV.unprocessedGssVertices
              if newVertex.FindIndex reduction.gssVertex.State reduction.gssVertex.Level = -1 
              then
                  let edge = new Edge(reduction.gssVertex, -parserSource.LeftSide.[reduction.prod]-1)
                  addEdge currentGraphV isNew newVertex edge false
          else 
              let path = new Path(nodes.[reduction.edge.Value.Ast])
  