anchor.diff:  
                   let edge = new Edge(gssVertex, edgesToTerms.[e])
   
  +
                   if targetGssV.FindIndex gssVertex.State gssVertex.Level = -1
                   then
                       if not isNew && targetGssV.PassingReductions.Count > 0
                       then e.Target.passingReductions.Add((targetGssV, edge))
  +
                       targetGssV.addEdge edge
   
  -                for e2 in outEdgesInnerGraph.[e.Target.vNum] do
  -                    addZeroReduction targetGssV push e2.Tag e.Target false
  -                    addNonZeroReduction gssVertex push e2.Tag edge e.Target
  -
  -            addZeroReduction gssVertex state e.Tag currentGraphV true
  -        
  +                    for e2 in outEdgesInnerGraph.[e.Target.vNum] do
  +                        addNonZeroReduction gssVertex push e2.Tag edge e.Target
  +
           if not <| currentGraphV.processedGssVertices.Contains(gssVertex)
           then 
               currentGraphV.processedGssVertices.Add(gssVertex)
  
positive.code:         if verticesToProcess.Count = 0 || ((verticesToProcess.ElementAt (verticesToProcess.Count - 1)).vNum = elem.vNum |> not)
          then
              verticesToProcess.Enqueue(elem)
      
      let (*inline*) addVertex (currentGraphV:VInfo<_>) state (listToAddUnprocessedGssV : ResizeArray<_>) =
          let mutable v = null
  
negative.code:                 v <- new Vertex(state, currentGraphV.vNum)
                  isNew <- true
                  listToAddUnprocessedGssV.Add v
                  for e in outEdgesInnerGraph.[currentGraphV.vNum] do
                      addZeroReduction v state e.Tag currentGraphV false
          v, isNew
  
      let edgesToTerms = new Dictionary<_,_>()
      let push (currentGraphV:VInfo<_>) gssVertex state =
  