void () { JBTerminalWidget termWidget = JBTerminalWidget.asJediTermWidget(myFile.getTerminalWidget()); if (termWidget != null) { termWidget.removeListener(myListener); } if (Boolean.TRUE.equals(myFile.getUserData(FileEditorManagerImpl.CLOSING_TO_REOPEN))) { ApplicationManager.getApplication().invokeLater(() -> { boolean disposedBefore = Disposer.isDisposed(myFile.getTerminalWidget()); Disposer.dispose(myWidgetParentDisposable); boolean disposedAfter = Disposer.isDisposed(myFile.getTerminalWidget()); if (disposedBefore != disposedAfter) { LOG.error(JBTerminalWidget.class.getSimpleName() + " parent disposable hasn't been changed " + "(disposed before: " + disposedBefore + ", disposed after: " + disposedAfter + ")"); } }); } else { Disposer.dispose(myWidgetParentDisposable); } }