sig
type ('a, 'b) poly
val instantiate :
?label:string * (unit -> 'a) option ->
'a Type.t -> 'b Type.t -> ('a -> 'b) Type.t
val is_instance_of : 'a Type.t -> bool
val get_instance :
('a, 'b) Type.Function.poly Type.t ->
'a Type.t * 'b Type.t * (string * (unit -> 'a) option) option
end