void releaseEditorLater() {
    // releasing an editor implies removing it from a component hierarchy invokeLater is required because releaseEditor() may be called from
    // removeNotify(), so we need to let swing complete its removeNotify() chain and only then execute another removal from the hierarchy.
    // Otherwise, swing goes nuts because of nested removals and indices get corrupted
    if (scheduleEditorRelease()) {
      ApplicationManager.getApplication().invokeLater(this::releaseScheduledEditors, ModalityState.stateForComponent(this));
    }
  }
void releaseEditorLater()