def self.represent(objects, options = {})
if objects.respond_to?(:to_ary) && !@present_collection
root_element = root_element(:collection_root)
inner = objects.to_ary.map { |object| new(object, options.reverse_merge(collection: true)).presented }
else
objects = { @collection_name => objects } if @present_collection
root_element = root_element(:root)
inner = new(objects, options).presented
end
root_element = options[:root] if options.key?(:root)
root_element ? { root_element => inner } : inner
end