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