anchor.diff:              | Some ie ->
                   assert (ie.Source = e.Target)
                   assert (ie.Target = e.Source)
  -                Set.contains e.Target (Map.find e.Source dom) || Set.contains e.Source (Map.find e.Target domRev)
  +                Set.contains e.Target (Map.find e.Source dom) || 
  +                Set.contains e.Source (Map.find e.Target domRev)
  +        ) |> ignore
  +
  +    let removeDeadEdgesHeuristic (cg: T) =
  +        cg.Graph.RemoveEdgeIf (fun (e: TaggedEdge<CgState,unit>) -> 
  +            let x = e.Target
  +            not (Reachable.srcDstWithout cg x cg.End (fun v -> v <> x && v.Node.Loc = e.Source.Node.Loc) Down)
           ) |> ignore
   
       let removeNodesThatCantReachEnd (cg: T) = 
  
positive.code:             sum <- count cg
              prune ()
          removeNodesNotOnAnySimplePathToEnd cg
          logInfo1(String.Format("Node count - after O3: {0}", cg.Graph.VertexCount))
  
  
  
negative.code:         removeNodesThatCantReachEnd cg
          removeEdgesForDominatedNodes cg
          removeNodesNotReachableOnSimplePath cg
          removeDeadEdgesHeuristic cg
  
      let minimizeO3 (cg: T) =
          let count cg = cg.Graph.VertexCount + cg.Graph.EdgeCount
  