template<
typename FilteredEdge,
typename Filter>
std::vector<FilteredEdge>
makeClosure(
std::vector<CFGEdge> const& orig,
std::vector<CFGEdge> const(CFGNode::* closure)(),
CFGNode const(CFGPath::* otherSide)(),
CFGPath(* merge)(CFGPath const&, CFGPath const&),
Filter const& filter);