anchor.diff:                      addZeroReduction v state e.Tag currentGraphV false
           v, isNew
   
  +    let addEdge (startV:VInfo<_>) isNew (newVertex:Vertex) edge isNotEps =
  +        if not isNew && newVertex.PassingReductions.Count > 0
  +        then startV.passingReductions.Add((newVertex, edge))
  +        newVertex.addEdge edge
  +        if isNotEps
  +        then
  +            for e in outEdgesInnerGraph.[startV.vNum] do
  +                addNonZeroReduction newVertex newVertex.State e.Tag edge startV
  +
       let edgesToTerms = new Dictionary<_,_>()
       let push (currentGraphV:VInfo<_>) gssVertex state =
           let newUnprocessedGssVs = new ResizeArray<_>(2)
  
positive.code: 
      let verticesToRecalc = new ResizeArray<_> (10)
  
      let (*inline*) addChildren node (path : Path) prod =
          let ast = getFamily node
          let familyOpt = 
              ast.findFamily (function family -> family.prod = prod && path.IsEqual(family.nodes))
          match familyOpt with 
  
negative.code:             let newVertex, isNew = addVertex currentGraphV state currentGraphV.unprocessedGssVertices
              if newVertex.FindIndex reduction.gssVertex.State reduction.gssVertex.Level = -1 
              then
                  let eps = new Epsilon(-parserSource.LeftSide.[reduction.prod]-1)
                  nodes.Add(eps)
                  let edge = new Edge(reduction.gssVertex, nodes.Count - 1)
                  addEdge currentGraphV isNew newVertex edge false
          else 
              let path = new Path(nodes.[reduction.edge.Value.Ast])
              walk (reduction.pos - 1) (reduction.edge.Value : Edge).Dest path currentGraphV nonTerm reduction.pos reduction.prod false
  