let find_in_nodes_to_select_for_this_call
      pdg_caller caller_selected_nodes call_stmt pdg_called =
  M.debug 2  "[pdg:find_in_nodes_to_select_for_this_call] for call sid:%d@."
      call_stmt.sid;
  let sgn = FI.sgn (PI.get_index pdg_called) in
  let caller_selected_nodes_set =
    PdgTypes.NodeSet.add_list caller_selected_nodes in
  let test_in acc (in_key, in_node) =
    let caller_nodes, _undef =
      find_call_input_nodes pdg_caller call_stmt in_key in
      (* undef can be ignored in this case because it is taken into account in
       * the call part. *)

    let intersect =
      List.exists
        (fun (n,_z) -> PdgTypes.NodeSet.mem n caller_selected_nodes_set)
        caller_nodes
    in
      if intersect then
        begin
          M.debug 2  "\t+ n_%a@." Macros.pretty_node in_node;
          in_node::acc
        end
      else acc
    in PdgIndex.Signature.fold_all_inputs test_in [] sgn