sig
  type 'a t
  val empty : 'Util.comparator -> 'PQueue.PQ.t
  val insert : '-> 'PQueue.PQ.t -> 'PQueue.PQ.t
  val remove : 'PQueue.PQ.t -> ('a * 'PQueue.PQ.t) option
  val max : 'PQueue.PQ.t -> 'a option
  val size : 'PQueue.PQ.t -> int
  val is_empty : 'PQueue.PQ.t -> bool
  val comparator : 'PQueue.PQ.t -> 'Util.comparator
end