private <W extends Widget & HasDoubleClickHandlers> void verifyEventSinkOnAddHandler(
      W w, Element e, boolean widgetSinksEventsOnAttach) {
    RootPanel.get().add(w);

    if (widgetSinksEventsOnAttach) {
      assertTrue(
          "Event should have been sunk on "
              + w.getClass().getName()
              + " once the widget has been attached",
          isDoubleClickEventSunk(e));
    } else {
      assertFalse(
          "Event should not be sunk on "
              + w.getClass().getName()
              + " until a "
              + DoubleClickEvent.getType().getName()
              + " handler has been added",
          isDoubleClickEventSunk(e));
    }

    w.addDoubleClickHandler(
        new DoubleClickHandler() {
          public void onDoubleClick(DoubleClickEvent event) {}
        });

    assertTrue(
        "Event should have been sunk on "
            + w.getClass().getName()
            + " once the widget has been attached and a "
            + DoubleClickEvent.getType().getName()
            + " handler has been added",
        isDoubleClickEventSunk(e));
  }