functor (I : sig type t end->   sig     type ti = I.t     type t     val create : int -> t     val find : t -> edge -> ti     val find_all : t -> edge -> ti list     val add : t -> edge -> ti -> unit     val replace : t -> edge -> ti -> unit     val remove : t -> edge -> unit     val clear : t -> unit   end