anchor.diff:          else 
               let edge = new Edge(final, nodes.Count)
               nodes.Add <| new AST (Unchecked.defaultof<_>, null)
  -            if not isNew
  +            if not isNew && newVertex.PassingReductions.Count > 0
               then startV.passingReductions.Add((newVertex, edge))
               newVertex.addEdge edge
               if (pos > 0)
               then
  -                for e in innerGraph.OutEdges startV do
  +                for e in outEdgesInnerGraph.[startV.vNum] do
                       let arr = parserSource.Reduces.[state].[parserSource.TokenToNumber e.Tag]
                       if arr <> null then
                           for (prod, pos) in arr do
  
positive.code:                         | Some v -> v, false
                          | None -> 
                              let v = new Vertex(push, target.vNum)
                              if currentGraphV = target
                              then newUnprocessedGssVs.Add v
                              else target.unprocessedGssVertices.Add v
                              v, true
  
negative.code:             | -1 -> 
                  let edge = new Edge(final, nodes.Count)
                  nodes.Add <| new AST (Unchecked.defaultof<_>, null)
                  if not isNew && newVertex.PassingReductions.Count > 0
                  then startV.passingReductions.Add((newVertex, edge))
                  newVertex.addEdge edge
                  if (pos > 0)
                  then
                      for e in outEdgesInnerGraph.[startV.vNum] do
                          let arr = parserSource.Reduces.[state].[parserSource.TokenToNumber e.Tag]
                          if arr <> null then
                              for (prod, pos) in arr do
  