sig
  module Debug :
    functor
      (Bus : sig
               type 'a t
               val invariant :
                 'Core_kernel.Invariant_intf.inv ->
                 'a t Core_kernel.Invariant_intf.inv
               val create : can_subscribe_after_start:bool -> 'a t
               val start : 'a t -> unit
               val flushed : 'a t -> unit Import.Deferred.t
               val write : 'a t -> '-> unit
               module Subscriber :
                 sig
                   type 'a t
                   val sexp_of_t :
                     ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
                 end
               val subscribe_exn : 'a t -> f:('-> unit) -> 'Subscriber.t
               val unsubscribe : 'a t -> 'Subscriber.t -> unit
               val reader_exn : 'a t -> 'Import.Pipe.Reader.t
               val sexp_of_t :
                 ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
             end->
      sig
        type 'a t = 'Bus.t
        val invariant :
          'Core_kernel.Invariant_intf.inv ->
          'a t Core_kernel.Invariant_intf.inv
        val create : can_subscribe_after_start:bool -> 'a t
        val start : 'a t -> unit
        val flushed : 'a t -> unit Import.Deferred.t
        val write : 'a t -> '-> unit
        module Subscriber :
          sig
            type 'a t = 'Bus.Subscriber.t
            val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
          end
        val subscribe_exn : 'a t -> f:('-> unit) -> 'Subscriber.t
        val unsubscribe : 'a t -> 'Subscriber.t -> unit
        val reader_exn : 'a t -> 'Import.Pipe.Reader.t
        val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
        val check_invariant : bool Pervasives.ref
        val show_messages : bool Pervasives.ref
      end
end