anchor.diff:                  incr cur
                   !cur
   
  -        use out = new System.IO.StreamWriter (path : string)
  +        use out = new StreamWriter (path : string)
           out.WriteLine("digraph AST {")
           
           let createNode num isAmbiguous isTerminal nodeType (str : string) =
  
positive.code:             | :? Epsilon -> Unchecked.defaultof<_>
              | _ -> failwith "Strange tree - singleNode with non-negative value"
  
          let dict = new System.Collections.Generic.Dictionary<AST, OtherAST>()
          
          // to avoid problems with cycles
          let knownNodes = new ResizeArray<_>()
          
          let nodesDict = System.Collections.Generic.Dictionary<Nodes, OtherNodes>()
          // reverse edges that will be added after all
          let postActions = new System.Collections.Generic.Dictionary<OtherFamily, Nodes>() 
          let rec processFamily (family : Family) = 
              let processAST (ast : AST) = 
                  if dict.ContainsKey ast 
                  then dict.[ast]
                  else
                      let fstChild = processFamily ast.first
                      let otherChildren = 
  
negative.code:                 newFamily
              else
                  let newNodes = ref []
                  family.nodes.doForAll 
                      (
                          fun node -> 
                              knownNodes.Add node
                              processNode node newNodes
                      )
                  let newNodes = new OtherNodes(!newNodes |> List.rev |> Array.ofList)
                  nodesDict.Add (family.nodes, newNodes)
                  let newFamily = new OtherFamily (family.prod, newNodes)
  