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