@Override
  public void dispose() {
    try {
      ThreadingAssertions.assertEventDispatchThread();
      disposeUsageContextPanels();
      isDisposed = true;
      updateAlarm.cancelAllRequests();
      fusRunnable = null; // Release reference to this

      cancelCurrentSearch();
      myRerunAction = null;
      if (myTree != null) {
        ToolTipManager.sharedInstance().unregisterComponent(myTree);
      }
      disposeSmartPointers();
    }
    finally {
      JobKt.getJob(coroutineScope.getCoroutineContext()).cancel(null);
    }
  }
@Override
  public void dispose()