let one_step_related_nodes kind pdg node =
(* do not consider address dependencies now (except for impact analysis):
just consider them during the last slicing pass
(for semantic preservation of pointers) *)
let direct node = !Pdg.direct_data_dpds pdg node in
match kind with
| Direct -> direct node
| Indirect_Backward -> direct node @ !Pdg.direct_ctrl_dpds pdg node
| Forward Security ->
!Pdg.direct_data_uses pdg node @ !Pdg.direct_ctrl_uses pdg node
| Forward Impact ->
!Pdg.direct_data_uses pdg node @ !Pdg.direct_ctrl_uses pdg node
@ !Pdg.direct_addr_uses pdg node