sig
  type 'a t
  val create : int -> 'a Weak.t
  val length : 'a Weak.t -> int
  val set : 'a Weak.t -> int -> 'a option -> unit
  val get : 'a Weak.t -> int -> 'a option
  val get_copy : 'a Weak.t -> int -> 'a option
  val check : 'a Weak.t -> int -> bool
  val fill : 'a Weak.t -> pos:int -> len:int -> 'a option -> unit
  val blit :
    src:'a Weak.t ->
    src_pos:int -> dst:'a Weak.t -> dst_pos:int -> len:int -> unit
end