public void testRemoveListener() {
    EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>();
    IntListener intListener = new IntListener();
    multicaster.addListener(intListener);
    assertEquals(0, intListener.value);
    assertEquals(0, intListener.notifications);

    multicaster = new CachingEventMulticasterImpl<Integer>();
    intListener = new IntListener();
    multicaster.broadcast(5);
    multicaster.addListener(intListener);
    assertEquals(5, intListener.value);
    assertEquals(1, intListener.notifications);

    multicaster.removeListener(intListener);
    multicaster.broadcast(10);
    assertEquals(5, intListener.value);
    assertEquals(1, intListener.notifications);
  }