boolean (PsiElement element1, PsiElement element2, int offset) { if (element1 == element2 && element1 instanceof PsiExpressionStatement) { for (PsiElement child = element1.getLastChild(); child != null; child = child.getPrevSibling()) { if (PsiUtil.isJavaToken(child, JavaTokenType.SEMICOLON) && child.getTextRange().getEndOffset() == offset) { return false; // findExpressionInRange() counts this as an expression - don't interfere with it } } } PsiElement trailing = element2; while (trailing.getTextRange().contains(offset) && trailing.getLastChild() != null) { trailing = trailing.getLastChild(); } while (trailing instanceof PsiComment || trailing instanceof PsiWhiteSpace) { PsiElement previous = trailing.getPrevSibling(); if (trailing.getTextRange().contains(offset)) { return true; } trailing = previous; } return false; }