<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <!-- Property name collection -->

        <service id="api_platform.metadata.property.name_collection_factory" alias="api_platform.metadata.property.name_collection_factory.property_info" />
        <service id="ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface" alias="api_platform.metadata.property.name_collection_factory" />

        <service id="api_platform.metadata.property.name_collection_factory.property_info" class="ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyNameCollectionFactory" public="false">
            <argument type="service" id="api_platform.property_info" />
        </service>

        <service id="api_platform.metadata.property.name_collection_factory.cached" class="ApiPlatform\Metadata\Property\Factory\CachedPropertyNameCollectionFactory" decorates="api_platform.metadata.property.name_collection_factory" decoration-priority="-10" public="false">
            <argument type="service" id="api_platform.cache.metadata.property" />
            <argument type="service" id="api_platform.metadata.property.name_collection_factory.cached.inner" />
        </service>

        <service id="api_platform.metadata.property.name_collection_factory.xml" class="ApiPlatform\Metadata\Property\Factory\ExtractorPropertyNameCollectionFactory" decorates="api_platform.metadata.property.name_collection_factory" public="false">
            <argument type="service" id="api_platform.metadata.property_extractor.xml" />
            <argument type="service" id="api_platform.metadata.property.name_collection_factory.xml.inner" />
        </service>

        <service id="api_platform.metadata.property.name_collection_factory.concerns" class="ApiPlatform\Metadata\Property\Factory\ConcernsPropertyNameCollectionMetadataFactory" decorates="api_platform.metadata.property.name_collection_factory" public="false">
            <argument type="service" id="api_platform.metadata.property.name_collection_factory.concerns.inner" />
        </service>
    </services>
</container>
