def matches?(collection_or_owner)
collection = determine_collection(collection_or_owner)
case collection
when enumerator_class
for query_method in QUERY_METHODS
next unless collection.respond_to?(query_method)
@actual = collection.__send__(query_method)
break unless @actual.nil?
end
raise not_a_collection if @actual.nil?
else
query_method = determine_query_method(collection)
raise not_a_collection unless query_method
@actual = collection.__send__(query_method)
end
case @relativity
when :at_least then @actual >= @expected
when :at_most then @actual <= @expected
else @actual == @expected
end
end