anchor.diff:                  currentIndex := currentContext.Value.Index
                   currentGSSNode := currentContext.Value.Vertex
                   currentLabel := currentContext.Value.Label
  +                let tempRule = getRule !currentLabel
  +                let tempPos = getPosition !currentLabel
                   currentN := currentContext.Value.Ast 
                   currentR := dummy
                   condition := false
  
positive.code:         let currentR = ref <| dummy
  
          let resultAST = ref None
          let packedNodes = Array3D.zeroCreate<Dictionary<int<labelMeasure>, int<nodeMeasure>>> (inputLength + 1) (inputLength + 1) (inputLength + 1)
          let nonTerminalNodes = Array3D.zeroCreate<int<nodeMeasure>> parser.NonTermCount (inputLength + 1) (inputLength + 1)
          let intermidiateNodes = Array2D.zeroCreate<Dictionary<int<labelMeasure>, int<nodeMeasure>>> (inputLength + 1) (inputLength + 1) 
          let edges = Array2D.zeroCreate<Dictionary<int<nodeMeasure>, Dictionary<int<labelMeasure>, ResizeArray<int>>>> slots.Count (inputLength + 1)
          let terminalNodes = new BlockResizeArray<int<nodeMeasure>>()
          let epsilonNode = new TerminalNode(-1, packExtension 0 0)
          let epsilon = 1<nodeMeasure>
          let sppfNodes = new BlockResizeArray<INode>()
          sppfNodes.Add(dummyAST)
          sppfNodes.Add(epsilonNode)
  
negative.code:     | Error of string
  
  
  let buildAst<'TokenType> (parser : ParserSourceGLL<'TokenType>) (tokens : seq<'TokenType>) : ParseResult<_>  = 
      let tokens = seq {yield! tokens; yield parser.EOF}
      let tokens = Seq.toArray tokens
      let inputLength = Seq.length tokens
      let nonTermsCountLimit = 1 + (Array.max parser.LeftSide)
  