public void testAddRemoveListener() {
    DisposeListener listener =
        new DisposeListener() {
          public void widgetDisposed(final DisposeEvent event) {
            log += WIDGET_DISPOSED;
          }
        };
    Display display = new Display();
    Composite shell = new Shell(display, SWT.NONE);
    shell.addDisposeListener(listener);

    DisposeEvent event = new DisposeEvent(shell);
    event.processEvent();
    assertEquals(WIDGET_DISPOSED, log);

    log = "";
    shell.removeDisposeListener(listener);
    event = new DisposeEvent(shell);
    event.processEvent();
    assertEquals("", log);
  }