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