sig
  type 'a t
  val create : int -> 'a Union.t
  val add : 'a Union.t -> 'a -> unit
  val find : 'a Union.t -> 'a -> 'a
  val union : 'a Union.t -> 'a -> 'a -> 'a
  val extract : 'a Union.t -> 'a list list
end