PsiElement (Project project, @NotNull AnActionEvent e) { final Editor editor = e.getData(CommonDataKeys.EDITOR); if (editor != null) { final PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); if (file instanceof PsiJShellFile) { PsiElement element = myIsExecuteContextElement? getContextElement(file, editor.getDocument(), editor.getCaretModel().getOffset()) : null; while (element != null) { final PsiElement parent = element.getParent(); if (parent instanceof PsiJShellHolderMethod && element instanceof PsiEmptyStatement) { element = parent.getPrevSibling(); // skipping empty statements and if (element instanceof PsiJShellSyntheticElement) { element = element.getFirstChild(); break; } } else { if (parent instanceof PsiJShellSyntheticElement || parent instanceof PsiJShellFile) { break; } element = parent; } } return element != null? element : file; } } return null; }