private static boolean writtenInside(PsiVariable variable, PsiElement element) {
   if (element instanceof PsiAssignmentExpression) {
     PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression) element;
     PsiExpression lExpression = assignmentExpression.getLExpression();
     if (lExpression instanceof PsiReferenceExpression
         && ((PsiReferenceExpression) lExpression).resolve() == variable) return true;
   } else if (PsiUtil.isIncrementDecrementOperation(element)) {
     PsiElement operand =
         element instanceof PsiPostfixExpression
             ? ((PsiPostfixExpression) element).getOperand()
             : ((PsiPrefixExpression) element).getOperand();
     if (operand instanceof PsiReferenceExpression
         && ((PsiReferenceExpression) operand).resolve() == variable) return true;
   }
   PsiElement[] children = element.getChildren();
   for (PsiElement child : children) {
     if (writtenInside(variable, child)) return true;
   }
   return false;
 }