sig
  type ('src, 'dst) blit = ('src, 'dst) blit
  type ('src, 'dst) blito = ('src, 'dst) blito
  type ('src, 'dst) sub = ('src, 'dst) sub
  type ('src, 'dst) subo = ('src, 'dst) subo
  module type S = S
  module type S1 = S1
  module type S_distinct = S_distinct
  module Make :
    functor (Elt : 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_intf.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 : 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_intf.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 ->
                      'Blit_intf.Blit.Make1.t -> 'Blit_intf.Blit.Make1.t
                    val length : 'Blit_intf.Blit.Make1.t -> int
                    val unsafe_blit :
                      ('Blit_intf.Blit.Make1.t, 'Blit_intf.Blit.Make1.t)
                      Blit_intf.blit
                    type 'a z
                    val create_bool :
                      len:int ->
                      bool Blit_intf.Blit.Make1.z Blit_intf.Blit.Make1.t
                    val get :
                      'Blit_intf.Blit.Make1.z Blit_intf.Blit.Make1.t ->
                      int -> 'a
                    val set :
                      'Blit_intf.Blit.Make1.z Blit_intf.Blit.Make1.t ->
                      int -> '-> unit
                    val sexp_of_t :
                      ('-> Sexplib.Sexp.t) ->
                      'Blit_intf.Blit.Make1.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