functor   (Data : sig             type t             val ty : t Type.t             val name : string             val descr : t Descr.t             val packed_descr : Structural_descr.pack             val reprs : t list             val equal : t -> t -> bool             val compare : t -> t -> int             val hash : t -> int             val pretty_code : Format.formatter -> t -> unit             val internal_pretty_code :               Type.precedence -> Format.formatter -> t -> unit             val pretty : Format.formatter -> t -> unit             val varname : t -> string             val mem_project : (Project_skeleton.t -> bool) -> t -> bool             val copy : t -> t             val equal_internal : t -> t -> bool             val hash_internal : t -> int             val initial_values : t list           end) (Info : Info_with_size->   sig     val self : State.t     val name : string     val mark_as_computed : ?project:Project.t -> unit -> unit     val is_computed : ?project:Project.t -> unit -> bool     module Datatype : Datatype.S     val add_hook_on_update : (Datatype.t -> unit) -> unit     val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit     type data = Data.t     val merge : data -> data     val add : data -> unit     val clear : unit -> unit     val count : unit -> int     val iter : (data -> unit) -> unit     val fold : (data -> '-> 'a) -> '-> 'a     val find : data -> data     val find_all : data -> data list     val mem : data -> bool     val remove : data -> unit   end