private static boolean whileStatementAssignsVariableOrFails(@NotNull PsiWhileStatement whileStatement, PsiVariable variable,
                                                              @NotNull Set<MethodSignature> checkedMethods, boolean strict) {
    final PsiExpression condition = whileStatement.getCondition();
    if (expressionAssignsVariableOrFails(condition, variable, checkedMethods, strict)) {
      return true;
    }
    if (BoolUtils.isTrue(condition)) {
      final PsiStatement body = whileStatement.getBody();
      return statementAssignsVariableOrFails(body, variable, checkedMethods, strict);
    }
    return false;
  }
private static boolean whileStatementAssignsVariableOrFails(@NotNull PsiWhileStatement whileStatement, PsiVariable variable,
                                                              @NotNull Set<MethodSignature> checkedMethods, boolean strict)