anchor.diff:                  errorList <- errInfo :: errorList
                   wasError <- ref true
               else
  -                
  -                //makeReductions ()
  -                //attachEdges()
                   let vertices = usedStates.ToArray() |> Array.map (fun i -> stateToVertex.[i])                    
                   drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString parserSource.ErrorIndex
                               <| sprintf "dot/stack_%d_0.dot" !curLvl
  -                if !isEOF //&& !NeadSh
  +                if !isEOF
                   then
                       try 
                           
  
positive.code:                         let vertices = usedStates.ToArray() |> Array.map (fun i -> stateToVertex.[i])                    
                          drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString parserSource.ErrorIndex
                                      <| sprintf "dot/stack_%d_4.dot" !curLvl
  //                        shift()
  //                        makeReductions ()
  //                        attachEdges()
                          let vertices = usedStates.ToArray() |> Array.map (fun i -> stateToVertex.[i])                    
                          drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString parserSource.ErrorIndex
                                      <| sprintf "dot/stack_%d_5.dot" !curLvl
      //                  for vertex in usedStates do
  //                            stateToVertex.[vertex] <- null
  //                        usedStates.Clear()
                          (*while not (usedStates.Count = 0 && reductions.Count = 0) do
                              makeReductions ()
                              attachEdges()                            *)
                      with _ -> () 
                          //makeReductions ()
                          //attachEdges()
  //                    makeReductions ()
  //                    attachEdges()
  //                    if usedStates.Count = 0 && reductions.Count = 0
  //                    then 
                      isEnd := true
                  (*elif pushes.Count = 0 then 
                      if !curLvl - !lastErr > 1 
  
negative.code:         /// Stores states, used on current level. Instead statesCount must be number of non-terminals, but doesn't matter
          let usedStates = new Stack<_>(statesCount)
          let stateToVertex : Vertex[] = Array.zeroCreate statesCount
  
          let addVertex vertData =
              [|
  