anchor.diff:      {   Graph: AdjacencyGraph<int, Edge<int>>
           NodeIdInfoDict: Dictionary<int, DDNode>
           ConnectionNode: int
  -        FinalNode: int }
  +        FinalNodeId: int
  +        PrerootNodes: list<int> }
   
   module ImmutableDDGFuncs =
       // exception messages
  
positive.code:     let graph = ImmutableDDGFuncs.create(finalNodeId, InnerNode(finalNodeInfo))
      let cfgNode = astCfgMap.[varRef]
      let initState = { Graph = graph; Provider = provider; AstCfgMap = astCfgMap }
      let res = build cfgNode varName initState
      res.Graph
negative.code:             Graph = new AdjacencyGraph<int, Edge<int>>()
              NodeIdInfoDict = new Dictionary<int, DDNode>()
              ConnectionNode = finalNodeId
              FinalNodeId = finalNodeId
              PrerootNodes = [] }
          addNode ddGraph finalNodeId finalNodeInfo
  
      let addNodeAndEdge (ddGraph: ImmutableDDG) srcNodeId srcNodeInfo =
          let ddg = addNode ddGraph srcNodeId srcNodeInfo
          addEdge ddg srcNodeId ddg.ConnectionNode
  
      let addPrerootAndEdge (ddg: ImmutableDDG) srcNodeId srcNodeInfo =
          let ddg' = addNodeAndEdge ddg srcNodeId srcNodeInfo
          { ddg' with PrerootNodes = srcNodeId :: ddg'.PrerootNodes }
  
      let foldPreroots (ddg: ImmutableDDG) rootId rootInfo =
          let ddg' = addNode ddg rootId rootInfo
          ddg'.PrerootNodes
          |> List.fold (fun accDdg id -> addEdge accDdg rootId id) ddg'
          |> fun ddg -> { ddg with PrerootNodes = [] }
  
      let toDot (ddGraph: ImmutableDDG) name path =
          use file = FileInfo(path).CreateText()
  