functor (M : Mark->
  sig
    type mark = M.t
    type call_info = M.call_info
    type fi = (mark, call_info) PdgIndex.FctIndex.t
    type t = PdgTypes.Pdg.t * fi
    val create : PdgTypes.Pdg.t -> t
    val get_idx : t -> fi
    type mark_info_inter = mark info_inter
    val empty_to_prop : mark_info_inter
    val mark_and_propagate :
      t -> ?to_prop:mark_info_inter -> mark select -> mark_info_inter
  end