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