PsiElement (@NotNull final PsiElement element) { final IElementType elementType = element.getNode().getElementType(); PsiElement prevSibling = element.getPrevSibling(); PsiElement result = element; while (prevSibling != null && (prevSibling.getNode().getElementType().equals(elementType) || (atWhitespaceToken(prevSibling) && StringUtil.countChars(prevSibling.getText(), '\n') <= 1))) { String text = prevSibling.getText(); final String prefix = getPrefix(element); final String postfix = getPostfix(element); text = StringUtil.trimStart(text.trim(), prefix.trim()); text = StringUtil.trimEnd(text, postfix); if (prevSibling.getNode().getElementType().equals(elementType) && StringUtil.isEmptyOrSpaces(text)) { break; } if (prevSibling.getNode().getElementType().equals(elementType)) { result = prevSibling; } prevSibling = prevSibling.getPrevSibling(); } return result; }