sig
  type ('src, 'dst) blit = ('src, 'dst) Blit_intf.blit
  type ('src, 'dst) blito = ('src, 'dst) Blit_intf.blito
  type ('src, 'dst) sub = ('src, 'dst) Blit_intf.sub
  type ('src, 'dst) subo = ('src, 'dst) Blit_intf.subo
  module type S = Blit_intf.S
  module type S1 = Blit_intf.S1
  module type S_distinct = Blit_intf.S_distinct
  module Make :
    functor (Elt : Blit_intf.Elt->
      functor
        (Sequence : sig
                      type t
                      val create : len:int -> t
                      val length : t -> int
                      val get : t -> int -> Elt.t
                      val set : t -> int -> Elt.t -> unit
                      val sexp_of_t : t -> Sexplib.Sexp.t
                      val unsafe_blit : (t, t) blit
                    end->
        sig
          val blit : (Sequence.t, Sequence.t) blit
          val blito : (Sequence.t, Sequence.t) blito
          val unsafe_blit : (Sequence.t, Sequence.t) blit
          val sub : (Sequence.t, Sequence.t) sub
          val subo : (Sequence.t, Sequence.t) subo
        end
  module Make_distinct :
    functor (Elt : Blit_intf.Elt->
      functor
        (Src : sig
                 type t
                 val create : len:int -> t
                 val length : t -> int
                 val get : t -> int -> Elt.t
                 val set : t -> int -> Elt.t -> unit
                 val sexp_of_t : t -> Sexplib.Sexp.t
               end->
        functor
          (Dst : sig
                   type t
                   val create : len:int -> t
                   val length : t -> int
                   val get : t -> int -> Elt.t
                   val set : t -> int -> Elt.t -> unit
                   val sexp_of_t : t -> Sexplib.Sexp.t
                   val unsafe_blit : (Src.t, t) blit
                 end->
          sig
            val blit : (Src.t, Dst.t) blit
            val blito : (Src.t, Dst.t) blito
            val unsafe_blit : (Src.t, Dst.t) blit
            val sub : (Src.t, Dst.t) sub
            val subo : (Src.t, Dst.t) subo
          end
  module Make1 :
    functor
      (Sequence : sig
                    type 'a t
                    val create_like : len:int -> 'a t -> 'a t
                    val length : 'a t -> int
                    val unsafe_blit : ('a t, 'a t) blit
                    type 'a z
                    val create_bool : len:int -> bool z t
                    val get : 'a z t -> int -> 'a
                    val set : 'a z t -> int -> '-> unit
                    val sexp_of_t :
                      ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
                  end->
      sig
        val blit : ('Sequence.t, 'Sequence.t) blit
        val blito : ('Sequence.t, 'Sequence.t) blito
        val unsafe_blit : ('Sequence.t, 'Sequence.t) blit
        val sub : ('Sequence.t, 'Sequence.t) sub
        val subo : ('Sequence.t, 'Sequence.t) subo
      end
end