anchor.diff:              let ddg' = addNodeAndEdge ddGraph srcNodeId srcNodeInfo
               { ddg' with ConnectionNode = srcNodeId }
   
  -        let addMarkedNodeAndEdge (ddg: DDGraphBuildInfo) srcNodeId srcNodeInfo =
  -            let ddg' = addNodeAndEdge ddg srcNodeId srcNodeInfo
  -            { ddg' with MarkedNodes = srcNodeId :: ddg'.MarkedNodes }
  -
  -        let addEdgeFromExistingNode (ddg: DDGraphBuildInfo) existingNodeId =
  -            addEdge ddg existingNodeId ddg.ConnectionNode
  -
  -        let markConnectionNode (ddg: DDGraphBuildInfo) =
  -            { ddg with MarkedNodes = ddg.ConnectionNode :: ddg.MarkedNodes }
  -
  -        let foldMarkedOnExisting (ddg: DDGraphBuildInfo) existingId =
  -            failIfNoSuchKey ddg.NodeIdInfoDict existingId
  -            ddg.MarkedNodes
  -            |> List.fold (fun accDdg id -> addEdge accDdg existingId id) ddg
  -            |> fun ddg -> { ddg with MarkedNodes = [] }
  -
  -        let foldMarkedOnNew (ddg: DDGraphBuildInfo) newNodeId newNodeInfo =
  -            let ddg' = addNode ddg newNodeId newNodeInfo
  -            foldMarkedOnExisting ddg' newNodeId
  -
  -        let merge (dstGraph: DDGraphBuildInfo) (srcGraph: DDGraphBuildInfo) =
  -            srcGraph.NodeIdInfoDict 
  -            |> List.ofSeq
  -            |> List.iter (fun entry -> dstGraph.NodeIdInfoDict.Add (entry.Key, entry.Value))
  -            dstGraph.Graph.AddEdgeRange srcGraph.Graph.Edges |> ignore
  -            addEdge dstGraph srcGraph.FinalNodeId dstGraph.ConnectionNode
  -
       type private NodeIdProvider = {   
           NextId: int
           GeneratedIds: Dictionary<ITreeNode, int> } 
  
positive.code: 
      let private badIRefExprCastMsg = 
          "unable to perform cast to IReferenceExpression"
  
  
      let private emptyListPopMsg = "pop on empty list"
      let private emptyListVisitMsg = "visit on empty list"
  
negative.code:         NodesToVisit: Set<int> }
  
      let rec buildForVar (varRef: IReferenceExpression) (cfgInfo: CSharpCFGInfo) = 
          let addNodeAsConnectionNode treeNode label (state: BuildState) =
              let nodeId, provider' = NodeIdProviderFuncs.getId state.Provider treeNode
              let nodeInfo = { Label = label; AstElem = treeNode }
              let graph' = DDGBuildFuncs.addConnectionNodeAndEdge state.GraphInfo nodeId (InnerNode(nodeInfo))
              { state with GraphInfo = graph'; Provider = provider' }
  
          let setGraphConnectionNode nodeId (state: BuildState) =
              let graph' = { state.GraphInfo with ConnectionNode = nodeId }
  