def process(*args)
user_metadata = args.last.is_a?(Hash) ? args.pop : {}
ensure_valid_keys(user_metadata)
self[:example_group][:describes] = described_class_from(*args)
self[:example_group][:description] = description_from(*args)
self[:example_group][:full_description] = full_description_from(*args)
self[:example_group][:block] = user_metadata.delete(:example_group_block)
self[:example_group][:file_path], self[:example_group][:line_number] = file_and_line_number_from(user_metadata.delete(:caller) || caller)
self[:example_group][:location] = location_from(self[:example_group])
update(user_metadata)
end