public static PsiElement getElementAtLine()

in src/main/java/org/jetbrains/plugins/spotbugs/common/util/IdeaUtilImpl.java [392:424]


	public static PsiElement getElementAtLine(@NotNull final PsiFile file, final int line) {
		//noinspection ConstantConditions
		if (file == null) {
			return null;
		}
		final Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file);
		PsiElement element = null;
		try {
			if (document != null) {
				final int offset = document.getLineStartOffset(line);
				element = file.getViewProvider().findElementAt(offset);
				if (element != null) {
					if (document.getLineNumber(element.getTextOffset()) != line) {
						PsiElement prevSibling = element.getPrevSibling();
						if (prevSibling instanceof PsiComment && element.getParent() instanceof PsiClass || prevSibling instanceof PsiModifierList) {
							element = element.getParent();
						} else if (prevSibling instanceof PsiAnnotation) {
							element = element.getParent().getParent();
						} else {
							element = element.getNextSibling();
						}
					} else if (element.getParent() instanceof PsiModifierList) {
						element = element.getParent().getParent();
					} else if (element.getPrevSibling() instanceof PsiModifierList && element.getParent() instanceof PsiClass) {
						element = element.getParent();
					}
				}
			}
		} catch (@NotNull final IndexOutOfBoundsException ignore) {
		}

		return element instanceof PsiNameIdentifierOwner ? ((PsiNameIdentifierOwner) element).getNameIdentifier() : element;
	}