code: def sort_by(self, fieldName, reverse=False):
          '''
              sort_by - Return a copy of this collection, sorted by the given fieldName.
                The fieldName is accessed the same way as other filtering, so it supports custom properties, etc.
                @param fieldName <str> - The name of the field on which to sort by
                @param reverse <bool> Default False - If True, list will be in reverse order.
                @return <QueryableList> - A QueryableList of the same type with the elements sorted based on arguments.
          '''
          return self.__class__(
              sorted(self, key = lambda item : self._get_item_value(item, fieldName), reverse=reverse)
          )