@Test
  public void removeMessageListener_whenAlreadyRemoved() {
    final ReliableMessageListenerMock listener = new ReliableMessageListenerMock();
    String id = topic.addMessageListener(listener);
    topic.removeMessageListener(id);

    boolean result = topic.removeMessageListener(id);
    assertFalse(result);

    topic.publish("1");

    // it should not receive any events
    assertTrueDelayed5sec(
        new AssertTask() {
          @Override
          public void run() throws Exception {
            assertEquals(0, listener.objects.size());
          }
        });
  }
  @Test
  public void removeMessageListener_whenNonExisting() {
    boolean result = topic.removeMessageListener(UUID.randomUUID().toString());

    assertFalse(result);
  }
 @Test(expected = NullPointerException.class)
 public void removeMessageListener_whenNull() {
   topic.removeMessageListener(null);
 }