anchor.diff:          removeNodesThatCantReachEnd cg
           removeEdgesForDominatedNodes cg
           removeNodesNotReachableOnSimplePath cg
  +        removeDeadEdgesHeuristic cg
   
       let minimizeO3 (cg: T) =
           let count cg = cg.Graph.VertexCount + cg.Graph.EdgeCount
  
positive.code:             sum <- count cg
              prune ()
          removeNodesNotOnAnySimplePathToEnd cg
          logInfo1(String.Format("Node count - after O3: {0}", cg.Graph.VertexCount))
  
  
  
negative.code:         let restrict_j = copyGraph (Map.find j restrict)
          restrict_i.Graph.RemoveVertexIf (fun v -> v.Node.Loc = x.Node.Loc && v <> x) |> ignore
          restrict_j.Graph.RemoveVertexIf (fun v -> v.Node.Loc = y.Node.Loc && v <> y) |> ignore
          
          (* Minimize.removeNodesThatCantReachEnd restrict_i
          Minimize.removeNodesThatCantReachEnd restrict_j *)
          
          (* if restrict_i.Graph.ContainsVertex x then
              let canReach = Reachable.alongSimplePathSrcDst restrict_i x restrict_i.End Reachable.Down
              restrict_i.Graph.RemoveVertexIf (fun v -> v <> x && not (canReach.Contains v) ) |> ignore 
  