anchor.diff:          if not <| vertex.ContainsContext inputVertex state
           then pushContext inputVertex state vertex len
   
  -//    /// Checks for existing of edge in edges set. If not adds it to edges set.
  -//    let containsEdge (startVertex : GSSVertexNFA) (endVertex : GSSVertexNFA) (state : int<positionInGrammar>) (len : uint16) =
  -//        let outEdges = edges.[int(startVertex.NontermState)].[startVertex.PositionInInput]
  -//        (* debug
  -//        edgesOfGSS.Add(
  -//            {
  -//                startVertex = startVertex
  -//                endVertex = endVertex
  -//                state = state
  -//                len  = len
  -//            }) |> ignore 
  -//        *)
  -//        let cond, dict = 
  -//            if outEdges <> null
  -//            then
  -//                let cond, dictStateKey = outEdges.TryGetValue state
  -//                if cond
  -//                then
  -//                    let cond, posLen = dictStateKey.TryGetValue endVertex.NontermState
  -//                    if cond
  -//                    then
  -//                        if posLen |> Array.contains (endVertex.PositionInInput,len) 
  -//                        then
  -//                            true, None
  -//                        else
  -//                            let newPosLen = Array.append posLen [|endVertex.PositionInInput,len|]
  -//                            dictStateKey.[endVertex.NontermState] <- newPosLen
  -//                                                        
  -//                            false, None
  -//                    else
  -//                        let arr = [|endVertex.PositionInInput,len|]
  -//                        dictStateKey.Add(endVertex.NontermState, arr)
  -//                        false, None 
  -//                else
  -//                    let d1 = new SysDict<int<state>, _>()
  -//                    let arr = [|endVertex.PositionInInput,len|]
  -//                    d1.Add(endVertex.NontermState, arr)
  -//                    outEdges.Add(state, d1)
  -//                    false, None
  -//            else 
  -//                let d1 = new SysDict<int<_>, SysDict<int<state>, _>>()
  -//                let d2 = new SysDict<int<state>, _>()
  -//                let arr = [|endVertex.PositionInInput,len|]
  -//                d2.Add(endVertex.NontermState, arr)
  -//                d1.Add(state, d2)
  -//                false, Some d1
  -//        if dict.IsSome then edges.[int startVertex.NontermState].[startVertex.PositionInInput] <- dict.Value
  -//        cond
           
       ///Creates new descriptors.(Calls when found nonterninal in rule(on current input edge, or on some of next)))
       let create (stateToContinue : int<positionInGrammar>) (posInGrammar : int<positionInGrammar>) =
  
positive.code:         if outEdges <> null && outEdges.Length <> 0
          then
              let vertexKey = packVertexFSA curVertex.PositionInInput curVertex.PositionInGrammar
  
              //let cond, value = setP.TryGetValue vertexKey
              let value = curVertex.P.Add (curIndex, curLen)
  //            if cond
  //            then
  //                value.Add (curIndex, curLen)
  //            else
  //                let newList = new ResizableUsualOne<_>((curIndex, curLen))
  //                setP.Add(vertexKey, newList)
  
              for e in outEdges do
                  addContext curIndex e.Tag.StateToContinue e.Target (curLen + e.Tag.LengthOfProcessedString)
  
  
negative.code:              r.[input.Edges.[i].Start].Add i
          r
  
      let gss = new GSS()
  
      /// State of FSA.
  