def define_static_record_finder_method(method_id, finder, bang, attributes)#:nodoc:
      method_to_call = static_record_finder_method_name(finder, attributes)
      method_with_static_record = "#{method_id}_with_static_rc"

      #override the method to search memory if there are no args
      class_eval %{
        def self.#{method_with_static_record}(*args)
          if (args.dup.extract_options!).any?
             #{method_id}_without_static_rc(*args)
          else
            result = #{method_to_call}
            #{'result || raise(RecordNotFound, "Couldn\'t find #{name} with #{attributes.to_a.collect {|pair| "#{pair.first} = #{pair.second}"}.join(\', \')}")' if bang}
          end
        end
      }, __FILE__, __LINE__

      method_with_static_record
    end
def define_static_record_finder_method(method_id, finder, bang, attributes)#:nodoc:
      method_to_call = static_record_finder_method_name(finder, attributes)
      method_with_static_record = "#{method_id}_with_static_rc"

      #override the method to search memory if there are no args
      class_eval %{
        def self.#{method_with_static_record}(*args)
          if (args.dup.extract_options!).any?
             #{method_id}_without_static_rc(*args)
          else
            result = #{method_to_call}
            #{'result || raise(RecordNotFound, "Couldn\'t find #{name} with #{attributes.to_a.collect {|pair| "#{pair.first} = #{pair.second}"}.join(\', \')}")' if bang}
          end
        end
      }, __FILE__, __LINE__

      method_with_static_record
    end
Define the finder method on the class, and return the name of the method
 Ex. find_by_id will define find_by_id_with_static_rc

 The cache is searched if no additional arguments (:conditions, :joins, etc) are specified
 If additional arguments do exist find_by_id_without_static_rc is invoked