PlaceInDocument (AnActionEvent event) { final Project project = event.getData(CommonDataKeys.PROJECT); if (project == null) { return null; } PsiElement method = null; Document document = null; if (ActionPlaces.PROJECT_VIEW_POPUP.equals(event.getPlace()) || ActionPlaces.STRUCTURE_VIEW_POPUP.equals(event.getPlace()) || ActionPlaces.BOOKMARKS_VIEW_POPUP.equals(event.getPlace()) || ActionPlaces.NAVIGATION_BAR_POPUP.equals(event.getPlace())) { final PsiElement psiElement = event.getData(CommonDataKeys.PSI_ELEMENT); if (psiElement instanceof PsiMethod) { final PsiFile containingFile = psiElement.getContainingFile(); if (containingFile != null) { method = psiElement; document = containingFile.getViewProvider().getDocument(); } } } else { Editor editor = getEditor(event); if (editor != null) { document = editor.getDocument(); PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document); if (file != null) { final VirtualFile virtualFile = file.getVirtualFile(); FileType fileType = virtualFile != null ? virtualFile.getFileType() : null; if (JavaFileType.INSTANCE == fileType || JavaClassFileType.INSTANCE == fileType) { method = findMethod(project, editor); } } } } return method != null ? new PlaceInDocument(document, method.getTextOffset()) : null; }