anchor.diff:                              nfaEdge.label = term
                           | _ -> false
   
  +                    let reductionStep (leftNfaVertex : VertexWithBackTrack<int, int>) leftGssVertex rightVertex sppfLabel =
  +                        let prevVertex =
  +                            match reductionTemp.TryGetAlreadyVisited leftNfaVertex leftGssVertex with
  +                            | Some pv -> pv
  +                            | None -> 
  +                                let pv = new Vertex<VertexWithBackTrack<int, int> * GssVertex, SppfLabel>((leftNfaVertex, leftGssVertex))
  +                                reductionTemp.AddVisited pv                              
  +                        //TODO: maybe we should check and return, if we have reached left end of a handle, and add edge only in positive case
  +                        //this automaticaly would save us from useless hanging edges and subsequent search...
  +                        //But we can entrust this to GC
  +                                dfsStack.Push(pv)
  +                                pv
  +                        let edge = new Edge<_,_>(rightVertex, sppfLabel)
  +                        match sppfLabel with
  +                        | SppfLabel.TemporaryReduction _ -> temporarySppfEdges.Push(edge)
  +                        | _ -> ()
  +                        prevVertex.addEdge edge
  +
                       //vertex is already in reductionTemp, put there it's predecessors
                       //NOT SAFE: does not check, if vertex has already been processed
                       let rec reductionDfs (vertex : Vertex<VertexWithBackTrack<int, int> * GssVertex, SppfLabel>) =
  
positive.code:                         for edge in nfaVertex.inEdges do
                              if matchNfaAndGssEdgeLabels edge sppfLabel then
                                  reductionStep (edge.dest :?> VertexWithBackTrack<_,_>) prevGssVertex vertex sppfLabel
                      
                      //handle
                      for leftEnd in reductionTemp.NotHandledLeftEnds do
  
negative.code:                                 else
                                      notAttachedEdges.[gssVertex.State] |> ResizeArray.iter f
  
                      let rightEnd =
                          match reductionTemp.TryGetAlreadyVisited nfa.[pos] gssVertex with
                          | Some x -> x
  