anchor.diff:              |> fun n  ->                    
                       let tree = new Tree<_>(terminals.ToArray(), n, parserSource.Rules, Some parserSource.LeftSide, Some parserSource.NumToString)
                       
  -                    sprintf "../../../Tests/AbstractRNGLR/DOT/sppf.dot" 
  -                    |> tree.AstToDot parserSource.NumToString parserSource.TokenToNumber parserSource.TokenData parserSource.LeftSide 
  +                    //sprintf "../../../Tests/AbstractRNGLR/DOT/sppf.dot" 
  +                    //|> tree.AstToDot parserSource.NumToString parserSource.TokenToNumber parserSource.TokenData parserSource.LeftSide 
                       let ts = tree.GetTokens(!ch)
  -                    printfn "%A" ts
  +                    //printfn "%A" ts
                       tree                   
               |> Success 
                   (*with
  
positive.code:             vertex.OutEdges |> ResizeArray.iter
                  (fun e ->
                      let newPath = path.AddEdge(if e.Ast < 0 then new Epsilon(e.Ast) :> AstNode else nodes.[e.Ast])
                      walk (remainLength - 1) e.Dest newPath startV nonTerm pos prod shouldEnqueueVertex)
  
      let makeSingleReduction currentGraphV (reduction : Reduction) =
          let nonTerm = parserSource.LeftSide.[reduction.prod]
  
          if reduction.pos = 0 then
  
negative.code:                 else ast.other <- Array.append ast.other [|newFamily|]
          | Some _ -> ()
  
      let handlePath customEnqueue (path : Path) (final : Vertex) startV nonTerm pos prod shouldEnqueueVertex =
          let state = parserSource.Gotos.[final.State].[nonTerm]
          let newVertex, isNew = addVertex startV state startV.unprocessedGssVertices
          if shouldEnqueueVertex && isNew 
  