public void disposeUIResources() {
    if (myUiDisposed) return;

    super.disposeUIResources();

    myUiDisposed = true;

    myAutoScrollHandler.cancelAllRequests();

    myContext.getDaemonAnalyzer().clear();

    Disposer.dispose(this);
  }
  public void init(StructureConfigurableContext context) {
    myContext = context;
    myContext
        .getDaemonAnalyzer()
        .addListener(
            new ProjectStructureDaemonAnalyzerListener() {
              public void problemsChanged(@NotNull ProjectStructureElement element) {
                if (!myTree.isShowing()) return;

                myTree.revalidate();
                myTree.repaint();
              }
            });
  }
  public void reset() {
    myUiDisposed = false;

    if (!myWasTreeInitialized) {
      initTree();
      myTree.setShowsRootHandles(false);
      loadTree();
    } else {
      super.disposeUIResources();
      myTree.setShowsRootHandles(false);
      loadTree();
    }
    for (ProjectStructureElement element : getProjectStructureElements()) {
      myContext.getDaemonAnalyzer().queueUpdate(element);
    }

    super.reset();
  }