# File ar-extensions/lib/ar-extensions/extensions.rb, line 258
    def self.process( key, val, caller )
      values = [*val]
      case key.to_s
      when LIKE_RGX
        str = values.collect do |v|
          "#{caller.quoted_table_name}.#{caller.connection.quote_column_name( $1 )} LIKE " +
            "#{caller.connection.quote( '%%' + v + '%%', caller.columns_hash[ $1 ] )} "
        end
      when STARTS_WITH_RGX
        str = values.collect do |v|
           "#{caller.quoted_table_name}.#{caller.connection.quote_column_name( $1 )} LIKE " +
            "#{caller.connection.quote( v + '%%', caller.columns_hash[ $1 ] )} "
        end
      when ENDS_WITH_RGX
        str = values.collect do |v|
           "#{caller.quoted_table_name}.#{caller.connection.quote_column_name( $1 )} LIKE " +
            "#{caller.connection.quote( '%%' + v, caller.columns_hash[ $1 ] )} "
        end
      else
        return nil
      end

      str = str.join(' OR ')
      result_values = []
      str.gsub!(/'((%%)?([^\?]*\?[^%]*|[^%]*%[^%]*)(%%)?)'/) do |match|
        result_values << $2
        '?'
      end
      result_values = nil if result_values.empty?
      return Result.new(str , result_values)
    end