void (PsiElement body, ProblemsHolder holder) { DfaValueFactory factory = new DfaValueFactory(holder.getProject()); var flow = ControlFlowAnalyzer.buildFlow(body, factory, true); if (flow != null) { Set<AssignInstruction> variables = new OverwrittenFieldAnalyzer(flow).getOverwrittenFields(); for (AssignInstruction instruction : variables) { DfaValue value = instruction.getAssignedValue(); if (!(value instanceof DfaVariableValue)) continue; PsiField field = ObjectUtils.tryCast(((DfaVariableValue)value).getPsiVariable(), PsiField.class); if (field == null) continue; PsiExpression lExpression = instruction.getLExpression(); PsiExpression expression = instruction.getRExpression(); if (lExpression == null) continue; PsiElement parent = PsiUtil.skipParenthesizedExprUp(lExpression.getParent()); if (parent instanceof PsiPrefixExpression && REPORT_PREFIX_EXPRESSIONS || parent instanceof PsiPostfixExpression && REPORT_POSTFIX_EXPRESSIONS) { holder.registerProblem(parent, JavaBundle.message("inspection.unused.assignment.problem.descriptor4")); } else if (parent instanceof PsiAssignmentExpression) { if (expression instanceof PsiArrayInitializerExpression || expression instanceof PsiNewExpression && ((PsiNewExpression)expression).getArrayInitializer() != null) { // Due to implementation quirk, array initializers are reassigned in CFG, so false warnings appear there continue; } reportAssignmentProblem((PsiAssignmentExpression)parent, holder); } } } }