anchor.diff:                  if startV.reductions.Count > 0 then customEnqueue startV
               addChildren nodes.[nodes.Count - 1] path prod
   
  -    let rec walk remainLength (vertex : Vertex) path currentGraphV startV nonTerm pos prod shouldEnqueueVertex = 
  +    let rec walk remainLength (vertex : Vertex) path startV nonTerm pos prod shouldEnqueueVertex = 
           if remainLength = 0 
  -        then handlePath path vertex currentGraphV startV nonTerm pos prod shouldEnqueueVertex
  +        then handlePath path vertex startV nonTerm pos prod shouldEnqueueVertex
           else
               if not (ResizeArray.exists 
                          (fun (_prod, _remainLength, _path : Path, _nonTerm, _pos, _startV) ->
  
positive.code:         then
              v.unprocessedGssVertices.AddRange(newGssVs)
              customEnqueue v
          if verticesSeenBefore.[v]
          then
              for e in innerGraph.OutEdges(v) do
                  if e.Target.reductions.Count > 0 || e.Target.unprocessedGssVertices.Count > 0
                  then
                      customEnqueue e.Target
              let toRecalc = handlePassingReductions v
              for vToRecalc in toRecalc do customEnqueue vToRecalc
          else
              for e in innerGraph.OutEdges(v) do
                  customEnqueue e.Target
  
      if tokens.EdgeCount = 0
      then
  
negative.code:         else 
              let edge = new Edge(final, nodes.Count)
              nodes.Add <| new AST (Unchecked.defaultof<_>, null)
              if not isNew
              then startV.passingReductions.Add((newVertex, edge))
              newVertex.addEdge edge
              if (pos > 0)
              then
  