void (@NotNull AnActionEvent e) { Presentation presentation = e.getPresentation(); presentation.setEnabledAndVisible(true); DataContext dataContext = e.getDataContext(); Project project = e.getData(CommonDataKeys.PROJECT); if (project == null || isHidden()) { hideAction(e); return; } Editor editor = e.getData(CommonDataKeys.EDITOR); PsiFile file = e.getData(CommonDataKeys.PSI_FILE); if (file != null) { if (file instanceof PsiCompiledElement && disableOnCompiledElement() || !isAvailableForFile(file)) { hideAction(e); return; } } if (editor == null) { if (isAvailableInEditorOnly()) { hideAction(e); return; } final PsiElement[] elements = getPsiElementArray(dataContext); boolean availableForLanguage = ContainerUtil.exists(elements, element -> isAvailableForLanguage(element.getLanguage())); if (!availableForLanguage) { hideAction(e); return; } final boolean isEnabled = isEnabledOnDataContext(dataContext) || isEnabledOnElements(elements); if (!isEnabled) { disableAction(e); } else { updateActionText(e); } } else { PsiElement element = findRefactoringTargetInEditor(dataContext, this::isAvailableForLanguage); if (element != null) { boolean isEnabled = file != null && isAvailableOnElementInEditorAndFile(element, editor, file, dataContext, e.getPlace()); if (!isEnabled) { disableAction(e); } else { updateActionText(e); } } else { hideAction(e); } } }