anchor.diff:  
               let processLocVarDecl (locVarDecl: ILocalVariableDeclaration) =
                   let addedNodeId = updateGraph locVarDecl ("varDecl(" + varName + ")")
  -                graph.SetConnectionNode addedNodeId
  +                graph.CurrentConnectionNode <- addedNodeId
                   processInitializer locVarDecl.Initializer
   
               let astNode = cfgNode.SourceElement
  
positive.code:     AstElem: ITreeNode
  }
  
  type DDGraph(finalNodeId: int, finalNodeInfo: NodeInfo) = 
      let graph = new AdjacencyGraph<int, Edge<int>>()
      let nodeInfoDict = new Dictionary<int, NodeInfo>()
      let mutable curConnectionNodeId = finalNodeId
  
      // exception messages
      let dstNodeIsNotSetMsg = "cannot create edge - dst node is not set"
      let noSuchNodeMsg = "cannot create edge - src or dst node is not added to graph"
  
      let addNode id info = 
          if nodeInfoDict.ContainsKey id
          then 
              nodeInfoDict.[id] <- info
          else
              nodeInfoDict.Add (id, info)
              graph.AddVertex id |> ignore
  
      do
          addNode finalNodeId finalNodeInfo
  
      let failIfNotExists id =
          if (not << nodeInfoDict.ContainsKey) id
          then failwith noSuchNodeMsg
  
      member this.AddNode = addNode
  
      member this.AddEdge src dst =
          failIfNotExists src
          failIfNotExists dst
          if (not << (graph.ContainsEdge : int * int -> bool)) (src, dst)
          then graph.AddEdge (new Edge<int>(src, dst)) |> ignore
  
      member this.SetConnectionNode id = curConnectionNodeId <- id
  
      member this.CurrentConnectionNode = curConnectionNodeId
  
      member this.AddEdgeFrom srcNodeId = 
          failIfNotExists srcNodeId 
          this.AddEdge srcNodeId curConnectionNodeId |> ignore
  
      member this.AddEdgeFrom (srcNodeId, srcNodeInfo) =
          this.AddNode srcNodeId srcNodeInfo
          this.AddEdgeFrom srcNodeId
  
      member this.Edges = graph.Edges
  
      member this.GetNodes() = 
          nodeInfoDict 
          |> List.ofSeq 
          |> List.map (fun kvp -> kvp.Key, kvp.Value)
  
      member this.FinalNodeId = finalNodeId
  
      member this.Merge (other: DDGraph) =
          other.GetNodes() |> List.iter nodeInfoDict.Add
          graph.AddEdgeRange other.Edges |> ignore
          this.AddEdgeFrom other.FinalNodeId
  
      member this.ToDot name path =
          use file = FileInfo(path).CreateText()
          file.WriteLine("digraph " + name + " {")
          do this.GetNodes()
          |> List.ofSeq
          |> List.map 
              (
                  fun (id, node) -> id.ToString() + " [label=\"" + node.Info + "\"]"
              )
          |> List.iter file.WriteLine
          do this.Edges
          |> List.ofSeq
          |> List.map
              (
  
negative.code:                 |> List.iter 
                      (
                          fun src ->
                              graph.CurrentConnectionNode <- curConnectionNode
                              build src varName graph
                      )
  
  