@Override
  public void dispose() {
    if (myDisposed) return;
    UIUtil.invokeLaterIfNeeded(() -> {
      if (myDisposed) return;
      myDisposed = true;

      onDispose();

      destroyViewer();
      applyRequestResult(MergeResult.CANCEL);

      if (myRequest != null) {
        onAssigned(myRequest, false);
      }
    });
  }
@Override
  public void dispose()