anchor.diff:              let eatTerm () =
                   let pos = (1 + getPosOnEdge !currentIndex)
                   currentIndex := packEdgePos (getEdge !currentIndex) pos
  +                let ttt = getPosOnEdge (getLeftExtension !currentExtension)
                   let le = (getLeftExtension !currentExtension)
                   let re = packEdgePos (getEdge !currentIndex) ((getPosOnEdge !currentIndex) + shift)
                   currentExtension := packExtension le re
  
positive.code:                 currentGSSNode := currentContext.Value.Vertex
                  currentLabel := currentContext.Value.Label
                  currentExtension := currentContext.Value.Extension
                  condition := false
              else 
                  stop := true  
  
negative.code:         let vertices = new CompressedArray<ResizeArray<_>>(input.ChainLength, (fun _ -> null),shift)
          let currentGSSNode = ref <| dummyGSSNode
       
          for i = input.InitialVertices.Length - 1 downto 0 do
              let e = input.InitialVertices.[i]
              let t = getEdge e
              let tt = getPosOnEdge e + shift
              let ttt = packEdgePos t tt
              let ext = packExtension ttt ttt
              setR.Push(new Context2(e, !currentLabel, !currentGSSNode, ext))
  
          let currentContext = ref <| new Context2(!currentIndex, !currentLabel, !currentGSSNode, !currentExtension)
  