sig   type 'a poly = 'a array   val instantiate : 'Type.t -> 'a poly Type.t * bool   val is_instance_of : 'Type.t -> bool   val get_instance : 'a poly Type.t -> 'Type.t   module Make :     functor (T : S->       sig         type t = T.t poly         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       end end