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 S_permissions = Blit_intf.S_permissions
  module type S1 = Blit_intf.S1
  module type S1_permissions = Blit_intf.S1_permissions
  module type S_distinct = Blit_intf.S_distinct
  module Make :
    functor
      (Elt : Blit_intf.Elt) (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_intf.blit
        val blito : (Sequence.t, Sequence.t) Blit_intf.blito
        val unsafe_blit : (Sequence.t, Sequence.t) Blit_intf.blit
        val sub : (Sequence.t, Sequence.t) Blit_intf.sub
        val subo : (Sequence.t, Sequence.t) Blit_intf.subo
      end
  module Make_distinct :
    functor
      (Elt : Blit_intf.Elt) (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) (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_intf.blit
        val blito : (Src.t, Dst.t) Blit_intf.blito
        val unsafe_blit : (Src.t, Dst.t) Blit_intf.blit
        val sub : (Src.t, Dst.t) Blit_intf.sub
        val subo : (Src.t, Dst.t) Blit_intf.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_intf.blit
        val blito : ('Sequence.t, 'Sequence.t) Blit_intf.blito
        val unsafe_blit : ('Sequence.t, 'Sequence.t) Blit_intf.blit
        val sub : ('Sequence.t, 'Sequence.t) Blit_intf.sub
        val subo : ('Sequence.t, 'Sequence.t) Blit_intf.subo
      end
end