sig
  val in_marks_to_caller :
    PdgTypes.Pdg.t ->
    Cil_types.stmt ->
    'mark PdgMarks.m2m ->
    ?rqs:'mark PdgMarks.select ->
    'mark PdgMarks.info_caller_inputs -> 'mark PdgMarks.select
  val translate_in_marks :
    PdgTypes.Pdg.t ->
    'mark PdgMarks.info_caller_inputs ->
    ?m2m:'mark PdgMarks.call_m2m ->
    'mark PdgMarks.pdg_select -> 'mark PdgMarks.pdg_select
  val call_out_marks_to_called :
    PdgTypes.Pdg.t ->
    'mark PdgMarks.m2m ->
    ?rqs:'mark PdgMarks.select ->
    (PdgIndex.Signature.out_key * 'mark) list -> 'mark PdgMarks.select
  val translate_marks_to_prop :
    PdgTypes.Pdg.t ->
    'mark PdgMarks.info_inter ->
    ?in_m2m:'mark PdgMarks.call_m2m ->
    ?out_m2m:'mark PdgMarks.call_m2m ->
    'mark PdgMarks.pdg_select -> 'mark PdgMarks.pdg_select
  module F_Proj :
    functor (C : PdgMarks.Config->
      sig
        type t
        type mark = C.M.t
        type call_info = C.M.call_info
        type fct = (mark, call_info) PdgIndex.FctIndex.t
        val empty : unit -> t
        val find_marks : t -> Cil_types.varinfo -> fct option
        val mark_and_propagate :
          t -> PdgTypes.Pdg.t -> mark PdgMarks.select -> unit
      end
end