anchor.diff:                          | :? TerminalNode as t ->
                               currentN := getNodeP !currentLabel !currentR !currentN
                               let r = (sppfNodes.Item <| int !currentN) :?> NonTerminalNode 
  -                            pop !currentGSSNode !currentIndex !currentN r.Extension
  +                            pop !currentGSSNode !currentIndex !currentN
                           | :? NonTerminalNode as r ->
                               if (r.Name = parser.LeftSide.[parser.StartRule]) && r.Extension = finalExtension
                               then 
                                   resultAST := Some r 
  -                            pop !currentGSSNode !currentIndex !currentN r.Extension
  +                            pop !currentGSSNode !currentIndex !currentN
   
           let control () =
                while not !stop do
  
positive.code:     let tokens = Seq.toArray tokens
      let inputLength = Seq.length tokens
      let nonTermsCountLimit = 1 + (Array.max parser.LeftSide)
      let getEpsilon =
  
           let epsilons = Array.init nonTermsCountLimit (fun i -> box (-i - 1))
           fun i -> epsilons.[i]
      if inputLength = 0 || parser.IndexEOF = parser.TokenToNumber tokens.[0] then
  //        if parser.AcceptEmptyInput then
  //            Success (new Tree<_>(null, getEpsilon startNonTerm, null))
  //        else
          Error ("This grammar does not accept empty input.")     
      else
          let slots = parser.Slots
          let setR = new Queue<Context>()   
  
negative.code:                         addContext index label vertex y 
              v
  
          let pop (u : Vertex) (i : int) (z : int<nodeMeasure>) =
              if u <> dummyGSSNode
              then
                  let vertexKey = (u.Level, u.Label)
  