anchor.diff:          else 
               let edge = new Edge(final, nodes.Length)
               nodes.Add <| new AST (Unchecked.defaultof<_>, null)
  -            addEdge  startV isNew newVertex edge (pos > 0) startGssV.prefixes
  +            addEdge  startV isNew newVertex edge (pos > 0) gssVertexesToPrefixes.[startGssV]
               addChildren nodes.[nodes.Length - 1] path prod
   
       let rec walk remainLength (vertex : Vertex) path startV nonTerm pos prod shouldEnqueueVertex (startGssV : Vertex) = 
  
positive.code:                 let ind = tailGssV.FindIndex gssVertex.State gssVertex.Level 
                  if ind = -1 || (tailGssV.Edge ind).Ast <> edgesToTerms.[e]
                  then
                      let prefixesToAdd = new ResizeArray<Prefix>()
                      prefixesToAdd.Add(newPrefix gssVertex.prefixes edge)           //or edge?
                      addEdge e.Target isNew tailGssV edge true prefixesToAdd    //push case
  
          if not <| currentGraphV.processedGssVertices.Contains(gssVertex)
  
negative.code:     member this.OutEdges = out
      member this.State = state
      member this.PassingReductions = passingReductions
  
      member this.addEdge (edge : Edge) =
          let mutable i = out.Count - 1
  