sig
  type nodes_and_undef =
      (PdgTypes.Node.t * Locations.Zone.t option) list *
      Locations.Zone.t option
  val find_stmt_node : PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t
  val find_simple_stmt_nodes :
    PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t list
  val find_stmt_and_blocks_nodes :
    PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t list
  val find_location_nodes_at_stmt :
    PdgTypes.Pdg.t ->
    Cil_types.stmt -> before:bool -> Locations.Zone.t -> Sets.nodes_and_undef
  val find_location_nodes_at_end :
    PdgTypes.Pdg.t -> Locations.Zone.t -> Sets.nodes_and_undef
  val find_location_nodes_at_begin :
    PdgTypes.Pdg.t -> Locations.Zone.t -> Sets.nodes_and_undef
  val find_label_node :
    PdgTypes.Pdg.t -> Cil_types.stmt -> Cil_types.label -> PdgTypes.Node.t
  val find_decl_var_node :
    PdgTypes.Pdg.t -> Cil_types.varinfo -> PdgTypes.Node.t
  val find_input_node : PdgTypes.Pdg.t -> int -> PdgTypes.Node.t
  val find_output_node : PdgTypes.Pdg.t -> PdgTypes.Node.t
  val find_all_input_nodes : PdgTypes.Pdg.t -> PdgTypes.Node.t list
  val find_entry_point_node : PdgTypes.Pdg.t -> PdgTypes.Node.t
  val find_top_input_node : PdgTypes.Pdg.t -> PdgTypes.Node.t
  val find_output_nodes :
    PdgTypes.Pdg.t -> PdgIndex.Signature.out_key -> Sets.nodes_and_undef
  val find_call_ctrl_node :
    PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t
  val find_call_num_input_node :
    PdgTypes.Pdg.t -> Cil_types.stmt -> int -> PdgTypes.Node.t
  val find_call_input_nodes :
    PdgTypes.Pdg.t ->
    Cil_types.stmt -> PdgIndex.Signature.in_key -> Sets.nodes_and_undef
  val find_call_output_node :
    PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t
  val find_call_stmts :
    Cil_types.kernel_function ->
    caller:Cil_types.kernel_function -> Cil_types.stmt list
  val find_call_out_nodes_to_select :
    PdgTypes.Pdg.t ->
    PdgTypes.NodeSet.t ->
    PdgTypes.Pdg.t -> Cil_types.stmt -> PdgTypes.Node.t list
  val find_in_nodes_to_select_for_this_call :
    PdgTypes.Pdg.t ->
    PdgTypes.NodeSet.t ->
    Cil_types.stmt -> PdgTypes.Pdg.t -> PdgTypes.Node.t list
  val direct_dpds : PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_data_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_ctrl_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_addr_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val find_nodes_all_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t list -> PdgTypes.Node.t list
  val find_nodes_all_data_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t list -> PdgTypes.Node.t list
  val find_nodes_all_ctrl_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t list -> PdgTypes.Node.t list
  val find_nodes_all_addr_dpds :
    PdgTypes.Pdg.t -> PdgTypes.Node.t list -> PdgTypes.Node.t list
  val direct_uses : PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_data_uses :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_ctrl_uses :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val direct_addr_uses :
    PdgTypes.Pdg.t -> PdgTypes.Node.t -> PdgTypes.Node.t list
  val all_uses :
    PdgTypes.Pdg.t -> PdgTypes.Node.t list -> PdgTypes.Node.t list
  val custom_related_nodes :
    (PdgTypes.Node.t -> PdgTypes.Node.t list) ->
    PdgTypes.Node.t list -> PdgTypes.Node.t list
end