private static boolean checkRecursivelyAssignmentsToDelete(@NotNull Statement statement,
                                                             @NotNull Map<VarExprent, List<VarExprent>> collected) {
    List<Exprent> exprents = statement.getExprents();
    if (exprents != null) {
      for (Exprent exprent : exprents) {
        if (!(exprent instanceof AssignmentExprent assignmentExprent)) {
          continue;
        }
        Exprent right = assignmentExprent.getRight();
        Exprent left = assignmentExprent.getLeft();
        boolean containsLeft = containVar(collected, left);
        if (right instanceof VarExprent varExprent) {
          boolean containsRight = containVar(collected, varExprent);
          if (containsLeft || !containsRight) {
            continue;
          }
          return false;
        }

        if (right instanceof FunctionExprent functionExprent &&
            functionExprent.getFuncType() == FUNCTION_CAST &&
            functionExprent.getLstOperands().size() == 2 &&
            functionExprent.getLstOperands().get(1) instanceof ConstExprent) {
          Exprent operand = functionExprent.getLstOperands().get(0);
          if (operand instanceof VarExprent varExprent) {
            boolean containsRight = containVar(collected, varExprent);
            if (containsLeft || !containsRight) {
              continue;
            }
            return false;
          }
        }
      }
    }
    for (Statement child : statement.getStats()) {
      if (!checkRecursivelyAssignmentsToDelete(child, collected)) {
        return false;
      }
    }
    return true;
  }
private static boolean checkRecursivelyAssignmentsToDelete(@NotNull Statement statement,
                                                             @NotNull Map<VarExprent, List<VarExprent>> collected)