sig
  module Register :
    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
end