functor (Types : sig type s_t type c_t end->
  sig
    type group_dsc = group
    type seq_dsc = t
    type s_t = Types.s_t
    type d_t
    type c_t = Types.c_t
    val init : s_t Lazy.t Lazy.t -> c_t Lazy.t Lazy.t -> d_t Lazy.t
    type dsc = s_t * d_t * c_t
    type msg = (seq_dsc, group_dsc) Request_types.Group_to_sequencer.message
    type req =
        (seq_dsc, group_dsc) Request_types.Group_to_sequencer.receive_request
    module Make :
      functor
        (FromChannel : sig
                         type from_chan = dsc
                         type receive_req = req
                         val receive_request :
                           from_chan -> receive_req -> unit
                       end->
        sig
          type dest = dsc
          type req = FromChannel.receive_req
          type m = msg
          val start : dest -> unit
          val process_message : dest -> req -> m -> unit
        end
  end