<?php

namespace Proxies\__CG__\Akeneo\Pim\Structure\Component\Model;

/**
 * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
 */
class Attribute extends \Akeneo\Pim\Structure\Component\Model\Attribute implements \Doctrine\ORM\Proxy\Proxy
{
    /**
     * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
     *      three parameters, being respectively the proxy object to be initialized, the method that triggered the
     *      initialization process and an array of ordered parameters that were passed to that method.
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setInitializer
     */
    public $__initializer__;

    /**
     * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setCloner
     */
    public $__cloner__;

    /**
     * @var boolean flag indicating if this object was already initialized
     *
     * @see \Doctrine\Common\Persistence\Proxy::__isInitialized
     */
    public $__isInitialized__ = false;

    /**
     * @var array properties to be lazy loaded, with keys being the property
     *            names and values being their default values
     *
     * @see \Doctrine\Common\Proxy\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = [];



    /**
     * @param \Closure $initializer
     * @param \Closure $cloner
     */
    public function __construct($initializer = null, $cloner = null)
    {

        $this->__initializer__ = $initializer;
        $this->__cloner__      = $cloner;
    }







    /**
     * 
     * @return array
     */
    public function __sleep()
    {
        if ($this->__isInitialized__) {
            return ['__isInitialized__', 'id', 'code', 'label', 'entityType', 'type', 'backendType', 'created', 'updated', 'required', 'unique', 'localizable', 'scopable', 'properties', 'options', 'sortOrder', 'group', 'useableAsGridFilter', 'availableLocales', 'families', 'maxCharacters', 'validationRule', 'validationRegexp', 'wysiwygEnabled', 'numberMin', 'numberMax', 'decimalsAllowed', 'negativeAllowed', 'dateMin', 'dateMax', 'metricFamily', 'defaultMetricUnit', 'maxFileSize', 'allowedExtensions', 'minimumInputLength', 'locale', 'translations'];
        }

        return ['__isInitialized__', 'id', 'code', 'label', 'entityType', 'type', 'backendType', 'created', 'updated', 'required', 'unique', 'localizable', 'scopable', 'properties', 'options', 'sortOrder', 'group', 'useableAsGridFilter', 'availableLocales', 'families', 'maxCharacters', 'validationRule', 'validationRegexp', 'wysiwygEnabled', 'numberMin', 'numberMax', 'decimalsAllowed', 'negativeAllowed', 'dateMin', 'dateMax', 'metricFamily', 'defaultMetricUnit', 'maxFileSize', 'allowedExtensions', 'minimumInputLength', 'locale', 'translations'];
    }

    /**
     * 
     */
    public function __wakeup()
    {
        if ( ! $this->__isInitialized__) {
            $this->__initializer__ = function (Attribute $proxy) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                $existingProperties = get_object_vars($proxy);

                foreach ($proxy->__getLazyProperties() as $property => $defaultValue) {
                    if ( ! array_key_exists($property, $existingProperties)) {
                        $proxy->$property = $defaultValue;
                    }
                }
            };

        }
    }

    /**
     * 
     */
    public function __clone()
    {
        $this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []);
    }

    /**
     * Forces initialization of the proxy
     */
    public function __load()
    {
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __isInitialized()
    {
        return $this->__isInitialized__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitialized($initialized)
    {
        $this->__isInitialized__ = $initialized;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitializer(\Closure $initializer = null)
    {
        $this->__initializer__ = $initializer;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __getInitializer()
    {
        return $this->__initializer__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setCloner(\Closure $cloner = null)
    {
        $this->__cloner__ = $cloner;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific cloning logic
     */
    public function __getCloner()
    {
        return $this->__cloner__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     * @static
     */
    public function __getLazyProperties()
    {
        return self::$lazyPropertiesDefaults;
    }

    
    /**
     * {@inheritDoc}
     */
    public function getId()
    {
        if ($this->__isInitialized__ === false) {
            return (int)  parent::getId();
        }


        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []);

        return parent::getId();
    }

    /**
     * {@inheritDoc}
     */
    public function setId($id)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setId', [$id]);

        return parent::setId($id);
    }

    /**
     * {@inheritDoc}
     */
    public function setCode($code)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCode', [$code]);

        return parent::setCode($code);
    }

    /**
     * {@inheritDoc}
     */
    public function getCode()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCode', []);

        return parent::getCode();
    }

    /**
     * {@inheritDoc}
     */
    public function setEntityType($entityType)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setEntityType', [$entityType]);

        return parent::setEntityType($entityType);
    }

    /**
     * {@inheritDoc}
     */
    public function getEntityType()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEntityType', []);

        return parent::getEntityType();
    }

    /**
     * {@inheritDoc}
     */
    public function getCreated()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCreated', []);

        return parent::getCreated();
    }

    /**
     * {@inheritDoc}
     */
    public function setCreated($created)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCreated', [$created]);

        return parent::setCreated($created);
    }

    /**
     * {@inheritDoc}
     */
    public function getUpdated()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUpdated', []);

        return parent::getUpdated();
    }

    /**
     * {@inheritDoc}
     */
    public function setUpdated($updated)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUpdated', [$updated]);

        return parent::setUpdated($updated);
    }

    /**
     * {@inheritDoc}
     */
    public function setBackendType($type)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setBackendType', [$type]);

        return parent::setBackendType($type);
    }

    /**
     * {@inheritDoc}
     */
    public function getBackendType()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getBackendType', []);

        return parent::getBackendType();
    }

    /**
     * {@inheritDoc}
     */
    public function getAttributeType()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAttributeType', []);

        return parent::getAttributeType();
    }

    /**
     * {@inheritDoc}
     */
    public function getType()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getType', []);

        return parent::getType();
    }

    /**
     * {@inheritDoc}
     */
    public function setRequired($required)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setRequired', [$required]);

        return parent::setRequired($required);
    }

    /**
     * {@inheritDoc}
     */
    public function isRequired()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isRequired', []);

        return parent::isRequired();
    }

    /**
     * {@inheritDoc}
     */
    public function setUnique($unique)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUnique', [$unique]);

        return parent::setUnique($unique);
    }

    /**
     * {@inheritDoc}
     */
    public function isUnique()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUnique', []);

        return parent::isUnique();
    }

    /**
     * {@inheritDoc}
     */
    public function setLocalizable($localizable)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setLocalizable', [$localizable]);

        return parent::setLocalizable($localizable);
    }

    /**
     * {@inheritDoc}
     */
    public function isLocalizable()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isLocalizable', []);

        return parent::isLocalizable();
    }

    /**
     * {@inheritDoc}
     */
    public function setScopable($scopable)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setScopable', [$scopable]);

        return parent::setScopable($scopable);
    }

    /**
     * {@inheritDoc}
     */
    public function isScopable()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isScopable', []);

        return parent::isScopable();
    }

    /**
     * {@inheritDoc}
     */
    public function addOption(\Akeneo\Pim\Structure\Component\Model\AttributeOptionInterface $option)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addOption', [$option]);

        return parent::addOption($option);
    }

    /**
     * {@inheritDoc}
     */
    public function removeOption(\Akeneo\Pim\Structure\Component\Model\AttributeOptionInterface $option)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeOption', [$option]);

        return parent::removeOption($option);
    }

    /**
     * {@inheritDoc}
     */
    public function getOptions()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getOptions', []);

        return parent::getOptions();
    }

    /**
     * {@inheritDoc}
     */
    public function getProperties()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProperties', []);

        return parent::getProperties();
    }

    /**
     * {@inheritDoc}
     */
    public function setProperties(array $properties)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProperties', [$properties]);

        return parent::setProperties($properties);
    }

    /**
     * {@inheritDoc}
     */
    public function getProperty($property)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProperty', [$property]);

        return parent::getProperty($property);
    }

    /**
     * {@inheritDoc}
     */
    public function setProperty($property, $value)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProperty', [$property, $value]);

        return parent::setProperty($property, $value);
    }

    /**
     * {@inheritDoc}
     */
    public function getGroupSequence()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getGroupSequence', []);

        return parent::getGroupSequence();
    }

    /**
     * {@inheritDoc}
     */
    public function __toString()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, '__toString', []);

        return parent::__toString();
    }

    /**
     * {@inheritDoc}
     */
    public function getGroup()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getGroup', []);

        return parent::getGroup();
    }

    /**
     * {@inheritDoc}
     */
    public function setGroup(\Akeneo\Pim\Structure\Component\Model\AttributeGroupInterface $group = NULL)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setGroup', [$group]);

        return parent::setGroup($group);
    }

    /**
     * {@inheritDoc}
     */
    public function isUseableAsGridFilter()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUseableAsGridFilter', []);

        return parent::isUseableAsGridFilter();
    }

    /**
     * {@inheritDoc}
     */
    public function setUseableAsGridFilter($useableAsGridFilter)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUseableAsGridFilter', [$useableAsGridFilter]);

        return parent::setUseableAsGridFilter($useableAsGridFilter);
    }

    /**
     * {@inheritDoc}
     */
    public function addAvailableLocale(\Akeneo\Channel\Component\Model\LocaleInterface $availableLocale)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addAvailableLocale', [$availableLocale]);

        return parent::addAvailableLocale($availableLocale);
    }

    /**
     * {@inheritDoc}
     */
    public function removeAvailableLocale(\Akeneo\Channel\Component\Model\LocaleInterface $availableLocale)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeAvailableLocale', [$availableLocale]);

        return parent::removeAvailableLocale($availableLocale);
    }

    /**
     * {@inheritDoc}
     */
    public function getLocaleSpecificCodes()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getLocaleSpecificCodes', []);

        return parent::getLocaleSpecificCodes();
    }

    /**
     * {@inheritDoc}
     */
    public function getAvailableLocales()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAvailableLocales', []);

        return parent::getAvailableLocales();
    }

    /**
     * {@inheritDoc}
     */
    public function getAvailableLocaleCodes()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAvailableLocaleCodes', []);

        return parent::getAvailableLocaleCodes();
    }

    /**
     * {@inheritDoc}
     */
    public function hasLocaleSpecific(\Akeneo\Channel\Component\Model\LocaleInterface $locale)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'hasLocaleSpecific', [$locale]);

        return parent::hasLocaleSpecific($locale);
    }

    /**
     * {@inheritDoc}
     */
    public function addFamily(\Akeneo\Pim\Structure\Component\Model\FamilyInterface $family)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addFamily', [$family]);

        return parent::addFamily($family);
    }

    /**
     * {@inheritDoc}
     */
    public function removeFamily(\Akeneo\Pim\Structure\Component\Model\FamilyInterface $family)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeFamily', [$family]);

        return parent::removeFamily($family);
    }

    /**
     * {@inheritDoc}
     */
    public function getFamilies()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getFamilies', []);

        return parent::getFamilies();
    }

    /**
     * {@inheritDoc}
     */
    public function setFamilies(\Doctrine\Common\Collections\ArrayCollection $families)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setFamilies', [$families]);

        return parent::setFamilies($families);
    }

    /**
     * {@inheritDoc}
     */
    public function getMaxCharacters()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getMaxCharacters', []);

        return parent::getMaxCharacters();
    }

    /**
     * {@inheritDoc}
     */
    public function setMaxCharacters($maxCharacters)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMaxCharacters', [$maxCharacters]);

        return parent::setMaxCharacters($maxCharacters);
    }

    /**
     * {@inheritDoc}
     */
    public function getValidationRule()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getValidationRule', []);

        return parent::getValidationRule();
    }

    /**
     * {@inheritDoc}
     */
    public function setValidationRule($validationRule)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setValidationRule', [$validationRule]);

        return parent::setValidationRule($validationRule);
    }

    /**
     * {@inheritDoc}
     */
    public function getValidationRegexp()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getValidationRegexp', []);

        return parent::getValidationRegexp();
    }

    /**
     * {@inheritDoc}
     */
    public function setValidationRegexp($validationRegexp)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setValidationRegexp', [$validationRegexp]);

        return parent::setValidationRegexp($validationRegexp);
    }

    /**
     * {@inheritDoc}
     */
    public function isWysiwygEnabled()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isWysiwygEnabled', []);

        return parent::isWysiwygEnabled();
    }

    /**
     * {@inheritDoc}
     */
    public function setWysiwygEnabled($wysiwygEnabled)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setWysiwygEnabled', [$wysiwygEnabled]);

        return parent::setWysiwygEnabled($wysiwygEnabled);
    }

    /**
     * {@inheritDoc}
     */
    public function getNumberMin()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNumberMin', []);

        return parent::getNumberMin();
    }

    /**
     * {@inheritDoc}
     */
    public function setNumberMin($numberMin)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNumberMin', [$numberMin]);

        return parent::setNumberMin($numberMin);
    }

    /**
     * {@inheritDoc}
     */
    public function getNumberMax()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNumberMax', []);

        return parent::getNumberMax();
    }

    /**
     * {@inheritDoc}
     */
    public function setNumberMax($numberMax)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNumberMax', [$numberMax]);

        return parent::setNumberMax($numberMax);
    }

    /**
     * {@inheritDoc}
     */
    public function isDecimalsAllowed()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isDecimalsAllowed', []);

        return parent::isDecimalsAllowed();
    }

    /**
     * {@inheritDoc}
     */
    public function setDecimalsAllowed($decimalsAllowed)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDecimalsAllowed', [$decimalsAllowed]);

        return parent::setDecimalsAllowed($decimalsAllowed);
    }

    /**
     * {@inheritDoc}
     */
    public function isNegativeAllowed()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isNegativeAllowed', []);

        return parent::isNegativeAllowed();
    }

    /**
     * {@inheritDoc}
     */
    public function setNegativeAllowed($negativeAllowed)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNegativeAllowed', [$negativeAllowed]);

        return parent::setNegativeAllowed($negativeAllowed);
    }

    /**
     * {@inheritDoc}
     */
    public function getDateMin()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDateMin', []);

        return parent::getDateMin();
    }

    /**
     * {@inheritDoc}
     */
    public function setDateMin($dateMin)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDateMin', [$dateMin]);

        return parent::setDateMin($dateMin);
    }

    /**
     * {@inheritDoc}
     */
    public function getDateMax()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDateMax', []);

        return parent::getDateMax();
    }

    /**
     * {@inheritDoc}
     */
    public function setDateMax($dateMax)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDateMax', [$dateMax]);

        return parent::setDateMax($dateMax);
    }

    /**
     * {@inheritDoc}
     */
    public function getMetricFamily()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getMetricFamily', []);

        return parent::getMetricFamily();
    }

    /**
     * {@inheritDoc}
     */
    public function setMetricFamily($metricFamily)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMetricFamily', [$metricFamily]);

        return parent::setMetricFamily($metricFamily);
    }

    /**
     * {@inheritDoc}
     */
    public function getDefaultMetricUnit()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDefaultMetricUnit', []);

        return parent::getDefaultMetricUnit();
    }

    /**
     * {@inheritDoc}
     */
    public function setDefaultMetricUnit($defaultMetricUnit)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDefaultMetricUnit', [$defaultMetricUnit]);

        return parent::setDefaultMetricUnit($defaultMetricUnit);
    }

    /**
     * {@inheritDoc}
     */
    public function getMaxFileSize()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getMaxFileSize', []);

        return parent::getMaxFileSize();
    }

    /**
     * {@inheritDoc}
     */
    public function setMaxFileSize($maxFileSize)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMaxFileSize', [$maxFileSize]);

        return parent::setMaxFileSize($maxFileSize);
    }

    /**
     * {@inheritDoc}
     */
    public function getAllowedExtensions()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAllowedExtensions', []);

        return parent::getAllowedExtensions();
    }

    /**
     * {@inheritDoc}
     */
    public function setAllowedExtensions($allowedExtensions)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAllowedExtensions', [$allowedExtensions]);

        return parent::setAllowedExtensions($allowedExtensions);
    }

    /**
     * {@inheritDoc}
     */
    public function getMinimumInputLength()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getMinimumInputLength', []);

        return parent::getMinimumInputLength();
    }

    /**
     * {@inheritDoc}
     */
    public function setMinimumInputLength($minimumInputLength)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMinimumInputLength', [$minimumInputLength]);

        return parent::setMinimumInputLength($minimumInputLength);
    }

    /**
     * {@inheritDoc}
     */
    public function getSortOrder()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSortOrder', []);

        return parent::getSortOrder();
    }

    /**
     * {@inheritDoc}
     */
    public function setSortOrder($sortOrder)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setSortOrder', [$sortOrder]);

        return parent::setSortOrder($sortOrder);
    }

    /**
     * {@inheritDoc}
     */
    public function setParameters($parameters)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setParameters', [$parameters]);

        return parent::setParameters($parameters);
    }

    /**
     * {@inheritDoc}
     */
    public function setLocale($locale)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setLocale', [$locale]);

        return parent::setLocale($locale);
    }

    /**
     * {@inheritDoc}
     */
    public function getTranslation(string $locale = NULL)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getTranslation', [$locale]);

        return parent::getTranslation($locale);
    }

    /**
     * {@inheritDoc}
     */
    public function getTranslations()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getTranslations', []);

        return parent::getTranslations();
    }

    /**
     * {@inheritDoc}
     */
    public function addTranslation(\Akeneo\Tool\Component\Localization\Model\TranslationInterface $translation)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'addTranslation', [$translation]);

        return parent::addTranslation($translation);
    }

    /**
     * {@inheritDoc}
     */
    public function removeTranslation(\Akeneo\Tool\Component\Localization\Model\TranslationInterface $translation)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeTranslation', [$translation]);

        return parent::removeTranslation($translation);
    }

    /**
     * {@inheritDoc}
     */
    public function getTranslationFQCN()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getTranslationFQCN', []);

        return parent::getTranslationFQCN();
    }

    /**
     * {@inheritDoc}
     */
    public function getLabel()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getLabel', []);

        return parent::getLabel();
    }

    /**
     * {@inheritDoc}
     */
    public function setLabel($label)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setLabel', [$label]);

        return parent::setLabel($label);
    }

    /**
     * {@inheritDoc}
     */
    public function getReference()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getReference', []);

        return parent::getReference();
    }

    /**
     * {@inheritDoc}
     */
    public function setAttributeType($type)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAttributeType', [$type]);

        return parent::setAttributeType($type);
    }

    /**
     * {@inheritDoc}
     */
    public function setType($type)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setType', [$type]);

        return parent::setType($type);
    }

    /**
     * {@inheritDoc}
     */
    public function isLocaleSpecific()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isLocaleSpecific', []);

        return parent::isLocaleSpecific();
    }

    /**
     * {@inheritDoc}
     */
    public function getReferenceDataName()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getReferenceDataName', []);

        return parent::getReferenceDataName();
    }

    /**
     * {@inheritDoc}
     */
    public function setReferenceDataName($name)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setReferenceDataName', [$name]);

        return parent::setReferenceDataName($name);
    }

    /**
     * {@inheritDoc}
     */
    public function isBackendTypeReferenceData()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isBackendTypeReferenceData', []);

        return parent::isBackendTypeReferenceData();
    }

}
