@Test
  public void testShutdown() throws Exception {
    final MessageDispatchSender messageDispatchSender = new MessageDispatchSender();

    messageDispatchSender.shutdown();

    messageDispatchSender.set(SimpleMessage.class, m_handler);

    messageDispatchSender.shutdown();

    verify(m_handler).shutdown();

    messageDispatchSender.addFallback(m_handler2);
    messageDispatchSender.addFallback(m_handler2);

    messageDispatchSender.set(OtherMessage.class, m_responder);

    final BlockingHandler<Message> blockingHandler2 =
        new AbstractBlockingHandler<Message>() {
          public Message blockingSend(Message message) throws CommunicationException {
            return null;
          }
        };
    messageDispatchSender.set(Message.class, blockingHandler2);

    messageDispatchSender.shutdown();

    verify(m_handler, times(2)).shutdown();

    verify(m_handler2, times(2)).shutdown();

    verify(m_responder).shutdown();

    verifyNoMoreInteractions(m_handler, m_handler2, m_responder);
  }