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; } if (declarationStatement.getParent() instanceof PsiForStatement) { return false; } PsiStatement nextStatement = PsiTreeUtil.getNextSiblingOfType(declarationStatement, PsiStatement.class); if (!(nextStatement instanceof PsiExpressionStatement expressionStatement)) { return false; } final PsiExpression expression = expressionStatement.getExpression(); if (!(expression instanceof PsiAssignmentExpression assignmentExpression)) { return false; } final IElementType tokenType = assignmentExpression.getOperationTokenType(); if (tokenType != JavaTokenType.EQ) { return false; } final PsiExpression rhs = PsiUtil.skipParenthesizedExprDown(assignmentExpression.getRExpression()); if (!(rhs instanceof PsiReferenceExpression reference)) { return false; } if (!reference.isReferenceTo(variable)) { return false; } final PsiExpression lhs = assignmentExpression.getLExpression(); if (lhs instanceof PsiArrayAccessExpression) { return false; } if (isVariableUsedInFollowingDeclarations(variable, declarationStatement)) { return false; } nextStatement = PsiTreeUtil.getNextSiblingOfType(nextStatement, PsiStatement.class); while (nextStatement != null) { if (VariableAccessUtils.variableIsUsed(variable, nextStatement)) { return false; } nextStatement = PsiTreeUtil.getNextSiblingOfType(nextStatement, PsiStatement.class); } return true; }