anchor.diff:              curTokens.Value.Tokens |> Array.iter (fun t -> tokens.Add t.Token)
               if enum.MoveNext() then
                   curTokens := processChunk enum.Current
  -                //if curTokens.Value.Tokens.Length = 0 then curTokens := oldTokens
  -//                curNum := parserSource.TokenToNumber (fst enum.Current)
                   curLvl := (!curTokens).CurLvl
                   isEOF := curTokens.Value.Tokens.Length = 0  
  -//                nxtLvl := snd (snd enum.Current)
               else
  -                //curNum := parserSource.EofIndex
                   isEOF := true
  -//            for vertex in usedStates do
  -//                stateToVertex.[vertex] <- null
  -//            usedStates.Clear()
               let oldPushes = !pushes |> Array.map (fun p -> p.ToArray())
               for i in 0..oldTokens.Tokens.Length-1 do
                   let newAstNode = newAstNodes.[i]
  
positive.code:                     makeReductions ()
                      attachEdges()
  
                      //curLvl := !nxtLvl
                      
                      shift ()// !nxtLvl
  
          let isAcceptState() = 
              let flag = ref false
  
negative.code:         // Currently processed token
          let curTokens = processChunk enum.Current |> ref
          let curLvl = ref (!curTokens).CurLvl
          let isEOF = ref false
          /// Here all tokens from the input will be collected
          let tokens = new BlockResizeArray<_>()
  