sig
  type ('a, 'b, 'c) poly
  val instantiate :
    'a Type.t ->
    'b Type.t ->
    'c Type.t -> ('a, 'b, 'c) Type.Polymorphic3.poly Type.t * bool
  val is_instance_of : 'a Type.t -> bool
  val get_instance :
    ('a, 'b, 'c) Type.Polymorphic3.poly Type.t ->
    'a Type.t * 'b Type.t * 'c Type.t
end