sig
  type 'a message = 'a
  type cont = (unit -> unit) option
  type 'a t
  val create : unit -> 'Channel_message_store.t
  val empty : 'Channel_message_store.t
  val set :
    'Channel_message_store.t ->
    'Channel_message_store.message ->
    Channel_message_store.cont -> 'Channel_message_store.t
  val get :
    'Channel_message_store.t ->
    ('Channel_message_store.t -> unit) -> 'Channel_message_store.message
  val exec : Channel_message_store.cont -> unit
  val append :
    Channel_message_store.cont ->
    Channel_message_store.cont -> Channel_message_store.cont
end