let get_loc_nodes_and_part state loc =
let process z (_default, nodes) acc =
if Locations.Zone.intersects z loc then
let z =
if Locations.Zone.equal loc z
then Some loc
else Some (Locations.Zone.narrow z loc) in
let add n acc =
P.debug ~level:2 "[pdg state] get_loc_nodes -> %a@."
PdgTypes.Node.pretty_with_part (n,z);
(n,z)::acc
in
let nodes = NodeSetLattice.fold add nodes acc in
nodes
else acc
in
let nodes_and_part =
try LocInfo.fold process state.loc_info []
with LocInfo.Cannot_fold -> raise Cannot_fold
in nodes_and_part