anchor.diff:          new GraphAction<_>(vertex, targetAct, gr) 
   
       for act in actionVInv do
  -        let visitedInv = ResizeArray.init (!maxV + 1) (fun _ -> false)
  -        bfsInv act FstInverse visitedInv |> tokensInv.Add |> ignore     //if from vertex exist and act-edge and eps-edge, then continue add edges.
  +        //let visitedInv = ResizeArray.init (!maxV + 1) (fun _ -> false)
  +        bfsInv act FstInverse visited |> tokensInv.Add |> ignore     //if from vertex exist and act-edge and eps-edge, then continue add edges.
  +        visited |> ResizeArray.iteri(fun i x -> visited.[i] <- false)
   
       let EqualEdges (edg1:TokenEdge<_>) (edg2:TokenEdge<_>) = 
           (edg1.Source = edg2.Source) && (edg1.Target = edg2.Target) && (edg1.Label = edg2.Label) && (edg1.BackRef = edg2.BackRef) //smth else?
  
positive.code:         new TaggedEdge<_,_>(edge.Target, edge.Source, edge.Tag) |>  FstInverse.AddVerticesAndEdge |> ignore
  
       
      let actionVInv = [|for v in inputFstLexer.FinalState do yield v ; for edge in inputFstLexer.Edges do if edge.Tag.OutSymb <> Eps then yield edge.Source |] |> Set.ofArray
      let tokensInv = new ResizeArray<_>() 
  
      let bfs vertex (graphFst: FST<_,_>) (visited: ResizeArray<_>) =
  
negative.code:         let gr = new GraphTokenValue<_>() 
          gr.AddVerticesAndEdgeRange edgesToks |> ignore
          new GraphAction<_>(vertex, targetAct, gr)      
      let visited = ResizeArray.init (!maxV + 1) (fun _ -> false)        
      for act in actionV do 
          bfs act inputFstLexer visited |> tokens.Add |> ignore
          visited |> ResizeArray.iteri(fun i x -> visited.[i] <- false)
  
      let bfsInv vertex (graphFst: FST<_,_>) (visited: ResizeArray<_>) =
          let targetAct = new HashSet<_>()
  