code: public function sort($order = SORT_ASC, $flags = SORT_REGULAR, $preserveKeys = false)
      {
          $this->validateSortArgs($order, $flags);
  
          $items = $this->items;
  
          if (!$preserveKeys) {
              if ($order === SORT_ASC) {
                  sort($items, $flags);
              } elseif ($order === SORT_DESC) {
                  rsort($items, $flags);
              }
          } else {
              if ($order === SORT_ASC) {
                  asort($items, $flags);
              } elseif ($order === SORT_DESC) {
                  arsort($items, $flags);
              }
          }
  
          return $this->createFrom($items);
      }
docs: Returns a bag with the values sorted.
  
  Sorting flags:
  Constant                        | Description
  ------------------------------- | ------------------------
  `SORT_REGULAR`                  | compare values without changing types
  `SORT_NUMERIC`                  | compare values numerically
  `SORT_STRING`                   | compare values as strings
  `SORT_STRING | SORT_FLAG_CASE`  | compare values as strings ignoring case
  `SORT_LOCALE_STRING`            | compare values as strings based on the current locale
  `SORT_NATURAL`                  | compare values as strings using "natural ordering"
  `SORT_NATURAL | SORT_FLAG_CASE` | compare values as strings using "natural ordering" ignoring case
  
  @param int  $order        `SORT_ASC` or `SORT_DESC`
  @param int  $flags        Sorting flags to modify the behavior
  @param bool $preserveKeys Whether to preserve keys for maps or to re-index for lists
  
  @return static