anchor.diff:                                      let newVertex = addVertex [|state, !curLvl,  Some (vertex, newAstNode)|]
                                       addSimpleEdge vertex newAstNode simpleEdges.[state]
                               pushesMap.Remove(!curLvl) |> ignore
  -                            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_3.dot" !curLvl
                           else
                               for vertex in usedStates do
                                   stateToVertex.[vertex] <- null
  
positive.code:                     then
                          if pushesMap.ContainsKey !curLvl
                          then
                              drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString parserSource.ErrorIndex
                                  <| sprintf "dot/stack_%d_2.dot" !curLvl    
                              for vertex in usedStates do
                                  stateToVertex.[vertex] <- null
                              usedStates.Clear()
  
negative.code:                         pushesMap.Remove(!curLvl) |> ignore
                          makeReductions ()
                          attachEdges()
                      with _ -> () 
                      isEnd := true
                  (*elif pushes.Count = 0 then 
  