(E : OrderedType->
  sig
    type t
    val create : unit -> t
    val length : t -> int
    val is_empty : t -> bool
    val add : t -> E.t -> unit
    val add_iter : t -> ((E.t -> unit) -> '-> unit) -> '-> unit
    val max_elt : t -> E.t option
    val get_max_elt : t -> E.t
    val pop_max : t -> E.t option
    val remove_max : t -> unit
    val clear : t -> unit
    val copy : t -> t
    val of_array : E.t array -> t
    val of_list : E.t list -> t
    val of_iter : ((E.t -> unit) -> '-> unit) -> '-> t
    val iter_unordered : (E.t -> unit) -> t -> unit
    val fold_unordered : ('acc -> E.t -> 'acc) -> 'acc -> t -> 'acc
  end