class Rspec::Core::Metadata

def process(*args)

def process(*args)
  extra_metadata = args.last.is_a?(Hash) ? args.pop : {}
  extra_metadata.delete(:example_group) # Remove it when present to prevent it clobbering the one we setup
  extra_metadata.delete(:behaviour)     # Remove it when present to prevent it clobbering the one we setup
  self[:example_group][:describes] = args.shift unless args.first.is_a?(String)
  self[:example_group][:describes] ||= self.superclass_metadata && self.superclass_metadata[:example_group][:describes]
  self[:example_group][:description] = args.shift || ''
  self[:example_group][:name] = determine_name
  self[:example_group][:block] = extra_metadata.delete(:example_group_block)
  self[:example_group][:caller] = extra_metadata.delete(:caller)
  self[:example_group][:file_path] = file_path_from(self[:example_group], extra_metadata.delete(:file_path))
  self[:example_group][:line_number] = line_number_from(self[:example_group], extra_metadata.delete(:line_number))
  self[:example_group][:location] = location_from(self[:example_group])
  update(extra_metadata)
end