# File ar-extensions/lib/ar-extensions/extensions.rb, line 311
    def self.process( key, val, caller )
      if val.is_a?( Range )
        match_data = key.to_s.match( NOT_IN_RGX )
        key = match_data.captures[0] if match_data
        fieldname = caller.connection.quote_column_name( key )
        min = caller.connection.quote( val.first, caller.columns_hash[ key ] )
        max = caller.connection.quote( val.last, caller.columns_hash[ key ] )
        str = if val.exclude_end?
          "#{match_data ? 'NOT ' : '' }(#{caller.quoted_table_name}.#{fieldname} >= #{min} AND #{caller.quoted_table_name}.#{fieldname} < #{max})"
        else 
          "#{caller.quoted_table_name}.#{fieldname} #{match_data ? 'NOT ' : '' } BETWEEN #{min} AND #{max}"
        end
        
        return Result.new( str, nil )
      end
      nil      
    end