boolean (@NotNull PsiReferenceExpression expression, @NotNull PsiElement resolved) { if (!(expression.getParent() instanceof PsiAssignmentExpression) || ((PsiAssignmentExpression)expression.getParent()).getLExpression() != expression) { return false; } PsiExpression qualifier = expression.getQualifierExpression(); if (qualifier != null && !(qualifier instanceof PsiThisExpression)) return false; if (!(resolved instanceof PsiVariable)) return false; PsiVariable variable = (PsiVariable)resolved; final PsiElement codeBlock = PsiUtil.getVariableCodeBlock(variable, expression); if (codeBlock == null) return false; final ControlFlow flow; try { flow = ControlFlowFactory.getInstance(codeBlock.getProject()).getControlFlow(codeBlock, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), true); } catch (AnalysisCanceledException e) { return false; } final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)expression.getParent(); int startOffset = flow.getStartOffset(assignmentExpression); return startOffset != -1 && isInstructionReachable(flow, startOffset, startOffset); }