boolean (PsiVariable variable) { final PsiCodeBlock containingScope = PsiTreeUtil.getParentOfType(variable, PsiCodeBlock.class, true, PsiClass.class); if (containingScope == null) { return false; } final PsiElement parent = variable.getParent(); if (!(parent instanceof PsiDeclarationStatement declarationStatement)) { return false; } final PsiStatement nextStatement = PsiTreeUtil.getNextSiblingOfType(declarationStatement, PsiStatement.class); if (!(nextStatement instanceof PsiThrowStatement throwStatement)) { return false; } final PsiExpression returnValue = PsiUtil.skipParenthesizedExprDown(throwStatement.getException()); if (!(returnValue instanceof PsiReferenceExpression)) { return false; } final PsiElement referent = ((PsiReference)returnValue).resolve(); if (referent == null || !referent.equals(variable)) { return false; } return !isVariableUsedInFollowingDeclarations(variable, declarationStatement); }