anchor.diff:              then vertex.PassingReductions.Add (prod, remainLength, path, nonTerm, pos, startV)
               vertex.OutEdges |> ResizeArray.iter
                   (fun e ->
  -                    let newPath = path.AddEdge(if e.Ast < 0 then new Epsilon(e.Ast) :> AstNode else nodes.[e.Ast])
  +                    let newPath = path.AddEdge(nodes.[e.Ast])
                       walk (remainLength - 1) e.Dest newPath startV nonTerm pos prod shouldEnqueueVertex)
   
       let makeSingleReduction currentGraphV (reduction : Reduction) =
  
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(if e.Ast < 0 then new Epsilon(e.Ast) :> AstNode else nodes.[e.Ast])
                  walk (remainLength - 1) e.Dest newPath startV nonTerm pos prod true
              graphV.passingReductions.Remove((v, e)) |> ignore
  
  
negative.code: 
                  let edge = new Edge(gssVertex, edgesToTerms.[e])
  
                  if targetGssV.FindIndex gssVertex.State gssVertex.Level = -1
                  then addEdge e.Target isNew targetGssV edge true
  
          if not <| currentGraphV.processedGssVertices.Contains(gssVertex)
          then 
  