@RequiresEdt
  public void dispose(@Nullable Runnable callback) {
    disposeUi();
    ApplicationManager.getApplication().executeOnPooledThread(() -> {
      Disposer.dispose(this);
      if (callback != null) {
        callback.run();
      }
    });
  }
@RequiresEdt
  public void dispose(@Nullable Runnable callback)