parameters:
    oro_serialized_fields.migration.searilized_data.post_up.listener.class: Oro\Bundle\EntitySerializedFieldsBundle\EventListener\SerializedDataPostUpMigrationListener

    oro_serialized_fields.entity_generator.extension.class:     Oro\Bundle\EntitySerializedFieldsBundle\Tools\GeneratorExtensions\SerializedDataGeneratorExtension
    oro_serialized_fields.entity_config_dumper.extension.class: Oro\Bundle\EntitySerializedFieldsBundle\Tools\DumperExtensions\SerializedEntityConfigDumperExtension

    oro_serialized_fields.datagrid.column_options_guesser.class:      Oro\Bundle\EntitySerializedFieldsBundle\Grid\SerializedColumnOptionsGuesser
    oro_serialized_fields.datagrid.serialized_fields_extension.class: Oro\Bundle\EntitySerializedFieldsBundle\Grid\SerializedFieldsExtension

    oro_serialized_fields.form.extension.field_extension.class:  Oro\Bundle\EntitySerializedFieldsBundle\Form\Extension\FieldTypeExtension
    oro_serialized_fields.form.extension.config_extension.class: Oro\Bundle\EntitySerializedFieldsBundle\Form\Extension\ConfigTypeExtension
    oro_serialized_fields.form.type.is_serialized_field.class:   Oro\Bundle\EntitySerializedFieldsBundle\Form\Type\IsSerializedFieldType

    oro_serialized_fields.exclusion_provider.serialized_field.class: Oro\Bundle\EntitySerializedFieldsBundle\Provider\ConfigSerializedFieldExclusionProvider

    ##
    # we should rewrite validation_loader service to turn off guessers for serialized fields
    ##
    oro_entity_extend.validation_loader.class: Oro\Bundle\EntitySerializedFieldsBundle\Validator\ExtendFieldValidationLoader

services:
    oro_serialized_fields.migration.searilized_data.post_up.listener:
          class: %oro_serialized_fields.migration.searilized_data.post_up.listener.class%
          arguments:
              - "@oro_entity_extend.migration.entity_metadata_helper"
          tags:
              - { name: kernel.event_listener, event: oro_migration.post_up, method: onPostUp, priority: -95 }

    oro_serialized_fields.entity_generator.extension:
        class: %oro_serialized_fields.entity_generator.extension.class%
        tags:
            - { name: oro_entity_extend.entity_generator_extension }

    oro_serialized_fields.entity_config_dumper.extension:
        class: %oro_serialized_fields.entity_config_dumper.extension.class%
        arguments:
            - "@oro_entity_config.config_manager"
            - "@oro_entity_extend.extend.field_type_helper"
        tags:
            - { name: oro_entity_extend.entity_config_dumper_extension, priority: -256 }

    oro_serialized_fields.datagrid.column_options_guesser:
        class: %oro_serialized_fields.datagrid.column_options_guesser.class%
        arguments:
            - "@oro_entity_config.config_manager"
        tags:
            - { name: oro_datagrid.column_options_guesser }

    oro_serialized_fields.datagrid.serialized_fields_extension:
        class: %oro_serialized_fields.datagrid.serialized_fields_extension.class%
        parent: oro_entity_extend.datagrid.extension.dynamic_fields
        tags:
            - { name: oro_datagrid.extension }

    oro_serialized_fields.form.extension.field_extension:
        class: %oro_serialized_fields.form.extension.field_extension.class%
        arguments:
            - "@session"
            - ['fieldName', 'is_serialized', 'type']
        tags:
            - { name: form.type_extension, alias: oro_entity_extend_field_type }

    oro_serialized_fields.validator.unique_extend_entity_field_validator:
        class: Oro\Bundle\EntitySerializedFieldsBundle\Validator\Constraints\UniqueExtendEntityFieldValidator
        tags:
            - { name: validator.constraint_validator, alias: oro_serialized_fields.validator.unique_extend_entity_field }

    oro_serialized_fields.form.extension.config_extension:
        class: %oro_serialized_fields.form.extension.config_extension.class%
        arguments:
            - ['fieldName', 'is_serialized', 'type']
        tags:
            - { name: form.type_extension, alias: oro_entity_config_type }

    oro_serialized_fields.form.type.is_serialized_field:
        class: %oro_serialized_fields.form.type.is_serialized_field.class%
        tags:
            - { name: form.type, alias: oro_serialized_fields_is_serialized_type }

    oro_serialized_fields.listener.entity_config:
        class: Oro\Bundle\EntitySerializedFieldsBundle\EventListener\EntityConfigListener
        arguments:
            - "@oro_entity_extend.entity_generator"
            - "@session"
        tags:
            - { name: kernel.event_listener, event: oro.entity_config.field.create, method: createField, priority: -255 }
            - { name: kernel.event_listener, event: oro.entity_config.pre_flush, method: initializeEntity, priority: 255 }
            - { name: kernel.event_listener, event: oro.entity_config.pre_flush, method: preFlush, priority: -255 }
            - { name: kernel.event_listener, event: oro.entity_config.post_flush, method: postFlush }

    oro_serialized_fields.exclusion_provider.serialized_field:
        class: %oro_serialized_fields.exclusion_provider.serialized_field.class%
        arguments:
            - "@oro_entity_config.provider.extend"
        tags:
            - { name: oro_entity.exclusion_provider.default }

    oro_serialized_fields.api.get_config.add_serialized_fields:
        class: Oro\Bundle\EntitySerializedFieldsBundle\Api\Processor\Config\AddSerializedFields
        arguments:
            - "@oro_api.doctrine_helper"
            - "@oro_entity_config.provider.extend"
        tags:
            - { name: oro.api.processor, action: get_config, extra: !identifier_fields_only&definition, priority: -35 }
            - { name: oro.api.processor, action: get_relation_config, extra: !identifier_fields_only&definition, priority: -35 }
