sig
  type t
  type elt
  type enum
  val start : JoinPool.Shared.Enumerable.t -> JoinPool.Shared.Enumerable.enum
  val step :
    JoinPool.Shared.Enumerable.enum ->
    (JoinPool.Shared.Enumerable.elt * JoinPool.Shared.Enumerable.enum) option
end