anchor.diff:              v.unprocessedGssVertices.RemoveAll(fun _ -> true) |> ignore
   
       let globalCurV = ref startV
  +
  +    let addReductionsWhenLoop (gssVertices : ResizeArray<Vertex>) (inputEdge : QuickGraph.TaggedEdge<_,_>) = 
  +        for gssV in gssVertices do
  +            let reductions = new ResizeArray<_>(10)
  +            let edge = new Edge(gssV, nodes.Count)
  +            let arr = parserSource.Reduces.[gssV.State].[parserSource.TokenToNumber inputEdge.Tag]
  +            if arr <> null then
  +                for (prod, pos) in arr do
  +                    reductions.Add(gssV, prod, pos, Some edge, inputEdge.Target)
  +                verticesToProcess.Enqueue(inputEdge.Target, true)
  +            
  +            let reductionSet = new ResizeArray<_>(10)
  +            for gssVertex, prod, pos, edge, target in reductions do
  +                let reductionExists = 
  +                    reductionSet
  +                    |> ResizeArray.exists(function v, p, _pos, e, target -> v = gssVertex && p = prod && _pos = pos && edge = e)
  +                if not reductionExists then reductionSet.Add(gssVertex, prod, pos, edge, target)
  +            for gssVertex, prod, pos, e, (target : VInfo<_>) in reductionSet do
  +                let r = gssVertex, prod, pos, e
  +                let reds = target.reductions
  +                target.reductions.Add(r)
   
       if tokens.EdgeCount = 0
       then
  
positive.code:                         path.[i] <- getEpsilon parserSource.Rules.[parserSource.RulesStart.[prod] + i].[0]
                      path.[pos - 1] <- edgeOpt.Value.Ast
                      walk (pos - 1) (edgeOpt.Value : Edge).Dest path
      
      //let processEdge (e:QuickGraph.TaggedEdge<_,_>) =
      ///    shift        
  
negative.code:                     else
                          if e.Target.reductions.Count > 0
                          then
                              addReductionsWhenLoop curV.processedGssVertices e
                              //verticesToProcess.Enqueue (e.Target, true)
  
              //globalCurV := curV
              processVertex curV onlyReduces
  