anchor.diff:  //let inline private setPos p (x : AST) = match x with NonTerm n -> n.pos <- p | SingleNode _ -> failwith "Attempt to get num of single node"
   
   let private emptyArr = [||]
  +type private DotNodeType = Prod | AstNode
   
   [<AllowNullLiteral>]
   type Tree<'TokenType> (tokens : array<'TokenType>, root : obj, rules : int[][]) =
  
positive.code:                                                                     override this.GetHashCode x = x.GetHashCode()})
          use out = new System.IO.StreamWriter (path : string)
          out.WriteLine("digraph AST {")
          let createNode num isAmbiguous (str : string) =
              let label =
                  let cur = str.Replace("\n", "\\n").Replace ("\r", "")
                  if not isAmbiguous then cur
                  else cur + " !"
              let color =
                  if not isAmbiguous then ""
                  else ",style=\"filled\",fillcolor=red"
              out.WriteLine ("    " + num.ToString() + " [label=\"" + label + "\"" + color + "]")
          let createEdge (b : int) (e : int) isBold (str : string) =
              let label = str.Replace("\n", "\\n").Replace ("\r", "")
              let bold = 
  
negative.code:             out.WriteLine ("    " + b.ToString() + " -> " + e.ToString() + " [" + bold + "label=\"" + label + "\"" + "]")
          let createEpsilon ind = 
              let res = next()
              createNode res false AstNode ("n " + indToString (-1-ind))
              let u = next()
              createNode u false AstNode "eps"
              createEdge res u true ""
              res
          let createTerm t =
              let res = next()
              createNode res false AstNode ("t " + indToString (tokenToNumber tokens.[t]))
              res
          if not isEpsilon then
              //for i in order do
              for i = order.Length-1 downto 0 do
                  let x = order.[i]
                  if x.pos <> -1 then
                      let children = x
                      createNode i (children.other <> null) AstNode ("n " + indToString leftSide.[children.first.prod])
                      let inline handle (family : Family) =
                          let u = next()
                          createNode u false Prod ("prod " + family.prod.ToString())
                          createEdge i u true ""
                          family.nodes.doForAll <| fun child ->
                              let v = 
  