sig
  module type Basic =
    sig
      type _ t
      type _ f
      val traverse :
        ('-> 'Traversable.Basic.f) ->
        'Traversable.Basic.t -> 'Traversable.Basic.t Traversable.Basic.f
      val traverse_ :
        ('-> 'Traversable.Basic.f) ->
        'Traversable.Basic.t -> unit Traversable.Basic.f
    end
  module type Basic2 =
    sig
      type _ t
      type (_, _) f
      val traverse :
        ('-> ('u, 'b) Traversable.Basic2.f) ->
        'Traversable.Basic2.t ->
        ('u, 'Traversable.Basic2.t) Traversable.Basic2.f
      val traverse_ :
        ('-> ('u, 'b) Traversable.Basic2.f) ->
        'Traversable.Basic2.t -> ('u, unit) Traversable.Basic2.f
    end
  module type Basic3 =
    sig
      type _ t
      type (_, _, _) f
      val traverse :
        ('-> ('u, 'v, 'b) Traversable.Basic3.f) ->
        'Traversable.Basic3.t ->
        ('u, 'v, 'Traversable.Basic3.t) Traversable.Basic3.f
      val traverse_ :
        ('-> ('u, 'v, 'b) Traversable.Basic3.f) ->
        'Traversable.Basic3.t -> ('u, 'v, unit) Traversable.Basic3.f
    end
  module type S =
    sig
      type _ t
      type _ f
      val traverse : ('-> 'b f) -> 'a t -> 'b t f
      val traverse_ : ('-> 'b f) -> 'a t -> unit f
      val sequence : 'a f t -> 'a t f
      val sequence_ : 'a f t -> unit f
    end
  module type S2 =
    sig
      type _ t
      type (_, _) f
      val traverse : ('-> ('u, 'b) f) -> 'a t -> ('u, 'b t) f
      val traverse_ : ('-> ('u, 'b) f) -> 'a t -> ('u, unit) f
      val sequence : ('u, 'a) f t -> ('u, 'a t) f
      val sequence_ : ('u, 'a) f t -> ('u, unit) f
    end
  module type S3 =
    sig
      type _ t
      type (_, _, _) f
      val traverse : ('-> ('u, 'v, 'b) f) -> 'a t -> ('u, 'v, 'b t) f
      val traverse_ : ('-> ('u, 'v, 'b) f) -> 'a t -> ('u, 'v, unit) f
      val sequence : ('a, 'b, 'c) f t -> ('a, 'b, 'c t) f
      val sequence_ : ('a, 'b, 'c) f t -> ('a, 'b, unit) f
    end
  module Make :
    functor (T : Basic->
      sig
        val traverse : ('-> 'T.f) -> 'T.t -> 'T.t T.f
        val traverse_ : ('-> 'T.f) -> 'T.t -> unit T.f
        val sequence : 'T.f T.t -> 'T.t T.f
        val sequence_ : 'T.f T.t -> unit T.f
      end
  module Make2 :
    functor (T : Basic2->
      sig
        val traverse : ('-> ('u, 'b) T.f) -> 'T.t -> ('u, 'T.t) T.f
        val traverse_ : ('-> ('u, 'b) T.f) -> 'T.t -> ('u, unit) T.f
        val sequence : ('u, 'a) T.f T.t -> ('u, 'T.t) T.f
        val sequence_ : ('u, 'a) T.f T.t -> ('u, unit) T.f
      end
  module Make3 :
    functor (T : Basic3->
      sig
        val traverse :
          ('-> ('u, 'v, 'b) T.f) -> 'T.t -> ('u, 'v, 'T.t) T.f
        val traverse_ :
          ('-> ('u, 'v, 'b) T.f) -> 'T.t -> ('u, 'v, unit) T.f
        val sequence : ('a, 'b, 'c) T.f T.t -> ('a, 'b, 'T.t) T.f
        val sequence_ : ('a, 'b, 'c) T.f T.t -> ('a, 'b, unit) T.f
      end
end