let get_x_direct_edges ~co dpd_type_opt pdg node =
    let pdg = get_pdg_body pdg in
    let is_dpd_ok e = match dpd_type_opt with None -> true
      | Some k -> DpdZone.is_dpd k (G.E.label e)
    in
    let filter edge nodes =
      if is_dpd_ok edge then edge :: nodes else nodes
    in
    let fold = if co then G.fold_pred_e else G.fold_succ_e  in
    let nodes = fold filter pdg.graph node [] in
      nodes