parameters:
    knp.doctrine_behaviors.reflection.class_analyzer.class: Knp\DoctrineBehaviors\Reflection\ClassAnalyzer
    knp.doctrine_behaviors.reflection.is_recursive: true
    knp.doctrine_behaviors.translatable_listener.class: Knp\DoctrineBehaviors\ORM\Translatable\TranslatableListener
    knp.doctrine_behaviors.translatable_listener.current_locale_callable.class: Knp\DoctrineBehaviors\ORM\Translatable\CurrentLocaleCallable
    knp.doctrine_behaviours.translatable_listener.translatable_trait: Knp\DoctrineBehaviors\Model\Translatable\Translatable
    knp.doctrine_behaviours.translatable_listener.translation_trait: Knp\DoctrineBehaviors\Model\Translatable\Translation
    knp.doctrine_behaviors.softdeletable_listener.class: Knp\DoctrineBehaviors\ORM\SoftDeletable\SoftDeletableListener
    knp.doctrine_behaviors.timestampable_listener.class: Knp\DoctrineBehaviors\ORM\Timestampable\TimestampableListener
    knp.doctrine_behaviors.blameable_listener.class: Knp\DoctrineBehaviors\ORM\Blameable\BlameableListener
    knp.doctrine_behaviors.blameable_listener.user_callable.class: Knp\DoctrineBehaviors\ORM\Blameable\UserCallable
    knp.doctrine_behaviors.blameable_listener.user_entity: ~
    knp.doctrine_behaviors.loggable_listener.class: Knp\DoctrineBehaviors\ORM\Loggable\LoggableListener
    knp.doctrine_behaviors.loggable_listener.logger_callable.class: Knp\DoctrineBehaviors\ORM\Loggable\LoggerCallable
    knp.doctrine_behaviors.geocodable_listener.class: Knp\DoctrineBehaviors\ORM\Geocodable\GeocodableListener
    knp.doctrine_behaviors.sluggable_listener.class: Knp\DoctrineBehaviors\ORM\Sluggable\SluggableListener

services:
    knp.doctrine_behaviors.reflection.class_analyzer:
        class:   "%knp.doctrine_behaviors.reflection.class_analyzer.class%"
        public:  false

    knp.doctrine_behaviors.translatable_listener:
        class:   "%knp.doctrine_behaviors.translatable_listener.class%"
        public:  false
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
            - "@knp.doctrine_behaviors.translatable_listener.current_locale_callable"
            - "%knp.doctrine_behaviours.translatable_listener.translatable_trait%"
            - "%knp.doctrine_behaviours.translatable_listener.translation_trait%"
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.translatable_listener.current_locale_callable:
        class:           "%knp.doctrine_behaviors.translatable_listener.current_locale_callable.class%"
        arguments:
            - "@service_container" # lazy request resolution
        public:  false

    knp.doctrine_behaviors.softdeletable_listener:
        class:   "%knp.doctrine_behaviors.softdeletable_listener.class%"
        public:  false
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.timestampable_listener:
        class:   "%knp.doctrine_behaviors.timestampable_listener.class%"
        public:  false
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.blameable_listener:
        class:   "%knp.doctrine_behaviors.blameable_listener.class%"
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
            - "@knp.doctrine_behaviors.blameable_listener.user_callable"
            - "%knp.doctrine_behaviors.blameable_listener.user_entity%"
        public:  false
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.blameable_listener.user_callable:
        class:           "%knp.doctrine_behaviors.blameable_listener.user_callable.class%"
        arguments:
            - "@service_container" # because of circular dep
        public:  false

    knp.doctrine_behaviors.loggable_listener:
        class:   "%knp.doctrine_behaviors.loggable_listener.class%"
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
            - "@knp.doctrine_behaviors.loggable_listener.logger_callable"
        public:  false
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.loggable_listener.logger_callable:
        class:           "%knp.doctrine_behaviors.loggable_listener.logger_callable.class%"
        arguments:
            - "@logger"
        public:  false

    knp.doctrine_behaviors.geocodable_listener:
        class:   "%knp.doctrine_behaviors.geocodable_listener.class%"
        public:  false
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
            - "@?knp.doctrine_behaviors.geocodable_callable"
        tags:
            - { name: doctrine.event_subscriber }

    knp.doctrine_behaviors.sluggable_listener:
        class: "%knp.doctrine_behaviors.sluggable_listener.class%"
        public: false
        arguments:
            - "@knp.doctrine_behaviors.reflection.class_analyzer"
            - "%knp.doctrine_behaviors.reflection.is_recursive%"
        tags:
            - { name: doctrine.event_subscriber }

