anchor.diff:      /// Stack of contexts
       let setR = new System.Collections.Generic.Stack<ContextFSA<_>>(startContexts)  
                    
  -//    /// Checks for existing of context in SetU. If not adds it to SetU.
  -//    let containsContext (inputIndex: int<positionInInput>) (state : int<positionInGrammar>) (gssVertex : YC.GLL.GSS.GSSVertex) =        
  -//        let cond, current = gssVertex.U.TryGetValue state
  -//        if cond
  -//        then
  -//            true            
  -//        else
  -//            gssVertex.U.Add(state, inputIndex)
  -//            false
  -
       /// Adds new context to stack (setR)
       let pushContext (inputVertex : int<positionInInput>) (state : int<positionInGrammar>) vertex len =
           setR.Push(new ContextFSA<_>(inputVertex, state, vertex, len))
  
positive.code:         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>) =
  
negative.code:         if outEdges <> null && outEdges.Length <> 0
          then
              let vertexKey = packVertexFSA curVertex.PositionInInput curVertex.PositionInGrammar
              let value = curVertex.P.Add (curIndex, curLen)
              for e in outEdges do
                  addContext curIndex e.Tag.StateToContinue e.Target (curLen + e.Tag.LengthOfProcessedString)
  
  