functor (T : HashableComparableType->
  sig
    type elem = T.t
    type t
    val make : int -> int -> elem -> t
    val from_array : exn -> elem array -> elem -> t
    val to_array : t -> elem array
    val length : t -> int
    val capacity : t -> int
    val get : t -> Utils.u2 -> elem
    val set : t -> Utils.u2 -> elem -> unit
    val find : elem -> t -> Utils.u2
    val add : exn -> t -> elem -> elem -> bool -> Utils.u2
    val add_if_not_found : exn -> t -> elem -> elem -> bool -> Utils.u2
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val hash : t -> int
    val to_string : t -> string
  end