@Override
  public void dispose() {
    // project must be disposed in EDT in write action
    Runnable doDispose = () -> {
      if (isCached()) {
        WriteAction.run(() -> super.dispose());
      }
    };
    ModalityUiUtil.invokeLaterIfNeeded(ModalityState.nonModal(), myParentDisposable.getDisposed(), doDispose);
  }
@Override
  public void dispose()