sig
  type 'a seq = 'a Lazy_sequence.t
  type 'a t
  val create : 'a Lazy_sequence.Iterator.seq -> 'a Lazy_sequence.Iterator.t
  val close : 'a Lazy_sequence.Iterator.t -> unit
  val with_sequence :
    'a Lazy_sequence.Iterator.seq ->
    f:('a Lazy_sequence.Iterator.t -> 'b) -> 'b
  val has_next : 'a Lazy_sequence.Iterator.t -> bool
  val peek : 'a Lazy_sequence.Iterator.t -> 'a option
  val get : 'a Lazy_sequence.Iterator.t -> 'a option
  val get_exn : 'a Lazy_sequence.Iterator.t -> 'a
  val iter : 'a Lazy_sequence.Iterator.t -> f:('a -> unit) -> unit
  val fold :
    'a Lazy_sequence.Iterator.t ->
    init:'accum -> f:('accum -> 'a -> 'accum) -> 'accum
  val copy : 'a Lazy_sequence.Iterator.t -> 'a Lazy_sequence.Iterator.t
end