'apply one or more ORDER BY criterion to the query and return
the newly resulting ``Query``
All existing ORDER BY settings can be suppressed by
passing ``None`` - this will suppress any ORDER BY configured
on mappers as well.
Alternatively, an existing ORDER BY setting on the Query
object can be entirely cancelled by passing ``False``
as the value - use this before calling methods where
an ORDER BY is invalid.'

@_generative(_no_statement_condition, _no_limit_offset)
def order_by(self, *criterion):

    if (len(criterion) == 1):
        if (criterion[0] is False):
            if ('_order_by' in self.__dict__):
                del self._order_by
            return
        if (criterion[0] is None):
            self._order_by = None
            return
    criterion = self._adapt_col_list(criterion)
    if ((self._order_by is False) or (self._order_by is None)):
        self._order_by = criterion
    else:
        self._order_by = (self._order_by + criterion)
