anchor.diff:      for v in innerGraph.Vertices do
           outEdgesInnerGraph.[v.vNum] <- innerGraph.OutEdges v |> Array.ofSeq
       let gssVertexesToPrefixes = new Dictionary<_,_>()
  -    let vertexesToPrefixes = new Dictionary<_,_>()
  -    for v in innerGraph.Vertices do
  -        vertexesToPrefixes.Add(v, new ResizeArray<Prefix<'TokenType>>())
  -    let edgesToPrefixes = new Dictionary<_,ResizeArray<Prefix<'TokenType>>>()
  +    let passedPrefixes = new Dictionary<_,ResizeArray<Prefix<'TokenType>>>()
  +    let notPassedPrefixes = new Dictionary<_,ResizeArray<Prefix<'TokenType>>>()
       for v in innerGraph.Vertices do
           for e in outEdgesInnerGraph.[v.vNum] do
  -            edgesToPrefixes.Add(e, new ResizeArray<Prefix<'TokenType>>())
  +            passedPrefixes.Add(e, new ResizeArray<Prefix<'TokenType>>())
  +            notPassedPrefixes.Add(e, new ResizeArray<Prefix<'TokenType>>())
       let errorEdges = new Dictionary<QuickGraph.TaggedEdge<_,_>,_>()
       
       let drawDot (tokenToNumber : _ -> int) (tokens : BlockResizeArray<_>) (leftSide : int[])
  
positive.code:         let prefixes = gssVertexesToPrefixes.[newVertex]
          for prefixToAdd in prefixesToAdd do
              addPrefix prefixes prefixToAdd //add new prefix to gss vertex
              addPrefix vertexesToPrefixes.[startV] prefixToAdd //add new prefix to inner graph vertex
  
          if isNotEps
          then
  
negative.code: 
                      prefixesToAdd.Add(extPrefix gssVertexesToPrefixes.[gssVertex] e)
                      addEdge e.Target isNew tailGssV edge true prefixesToAdd    //push case
              else
                  for gssPrefix in gssVertexesToPrefixes.[gssVertex] do
                      addPrefix notPassedPrefixes.[e] gssPrefix
  
          if not <| currentGraphV.processedGssVertices.Contains(gssVertex)
          then 
  