anchor.diff:                                      let newVertex = addVertex [|state, !curLvl,  Some (vertex, newAstNode)|]
                                       addSimpleEdge vertex newAstNode simpleEdges.[state]
                               pushesMap.Remove(!curLvl) |> ignore
  -                            printfn "_____%A_1________" !curLvl
  -//                            Array.iter (printfn "%A") vertices
  -//                            drawDot parserSource.TokenToNumber tokens parserSource.LeftSide vertices parserSource.NumToString parserSource.ErrorIndex
  -//                                <| sprintf "stack_%d_1.dot" !curLvl
                               makeReductions ()
                               attachEdges()
                               let vertices = usedStates.ToArray() |> Array.map (fun i -> stateToVertex.[i])                    
  
positive.code:                     let family = new Family(prod, new Nodes(Array.copy path))
                      if not <| containsEdge final family edges.[state] then
                          let isCreated, edgeLabel = addEdge final family edges.[state]
                          if (pos > 0 && isCreated) then
                              if curTokens.Value.Tokens.Length = 0
                                  then
                                      let arr = parserSource.Reduces.[state].[parserSource.EofIndex]
                                      if arr <> null then
                                          for (prod, pos) in arr do
                                              reductions.Push (newVertex, prod, pos, Some (final, box edgeLabel))
                                  else
                                      for tok in curTokens.Value.Tokens do 
                                          let arr = parserSource.Reduces.[state].[tok.CurNum]
                                          if arr <> null then
                                              for (prod, pos) in arr do
                                                  reductions.Push (newVertex, prod, pos, Some (final, box edgeLabel))
  
                  let rec walk remainLength (vertex : Vertex) path =
                      if remainLength = 0 then handlePath path vertex
  
negative.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
                      with _ -> () 
                      isEnd := true
                  (*elif pushes.Count = 0 then 
                      if !curLvl - !lastErr > 1 
  