def call( dataset )
      # mainly for Sequel::Model
      dataset = dataset.dataset if dataset.respond_to? :dataset

      # clone here so later order! calls don't mess with a Model's default dataset
      dataset = expressions.inject(dataset.clone) do |dataset, filter_expr|
        dataset.filter( filter_expr )
      end

      # preserve existing order if we don't have one.
      if order_clause.empty?
        dataset
      else
        # There might be multiple orderings in the order_clause
        dataset.order *order_clause
      end
    end
def call( dataset )
      # mainly for Sequel::Model
      dataset = dataset.dataset if dataset.respond_to? :dataset

      # clone here so later order! calls don't mess with a Model's default dataset
      dataset = expressions.inject(dataset.clone) do |dataset, filter_expr|
        dataset.filter( filter_expr )
      end

      # preserve existing order if we don't have one.
      if order_clause.empty?
        dataset
      else
        # There might be multiple orderings in the order_clause
        dataset.order *order_clause
      end
    end
return a modified dataset containing all the predicates