<?php

namespace DoctrineProxies\__CG__\OrangeHRM\Entity;


/**
 * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
 */
class Employee extends \OrangeHRM\Entity\Employee 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\Persistence\Proxy::__isInitialized
     */
    public $__isInitialized__ = false;

    /**
     * @var array<string, null> properties to be lazy loaded, indexed by property name
     */
    public static $lazyPropertiesNames = array (
);

    /**
     * @var array<string, mixed> default values of properties to be lazy loaded, with keys being the property names
     *
     * @see \Doctrine\Common\Proxy\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = array (
);



    public function __construct(?\Closure $initializer = null, ?\Closure $cloner = null)
    {

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







    /**
     * 
     * @return array
     */
    public function __sleep()
    {
        if ($this->__isInitialized__) {
            return ['__isInitialized__', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeId', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'lastName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'firstName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'middleName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'nickName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'smoker', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'ethnicRaceCode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'birthday', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'nationality', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'gender', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'maritalStatus', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'ssnNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'sinNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'otherId', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'drivingLicenseNo', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'drivingLicenseExpiredDate', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'militaryService', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empStatus', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'jobTitle', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'jobCategory', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'subDivision', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'street1', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'street2', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'city', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'country', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'province', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'zipcode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'homeTelephone', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'mobile', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workTelephone', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workEmail', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'salaryGradeCode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'joinedDate', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'otherEmail', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeTerminationRecord', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom1', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom2', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom3', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom4', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom5', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom6', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom7', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom8', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom9', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom10', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'purgedAt', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'locations', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'dependents', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'emergencyContacts', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'immigrationRecords', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workExperience', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'educations', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'skills', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'languages', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'licenses', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'memberships', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'salaries', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employmentContracts', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'attachments', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeTerminationRecords', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'users', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empPicture', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'subordinates', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'supervisors', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empUsTax', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeWorkShift', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'attendanceRecords', 'entityDecorator'];
        }

        return ['__isInitialized__', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeId', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'lastName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'firstName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'middleName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'nickName', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'smoker', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'ethnicRaceCode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'birthday', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'nationality', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'gender', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'maritalStatus', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'ssnNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'sinNumber', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'otherId', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'drivingLicenseNo', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'drivingLicenseExpiredDate', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'militaryService', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empStatus', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'jobTitle', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'jobCategory', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'subDivision', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'street1', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'street2', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'city', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'country', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'province', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'zipcode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'homeTelephone', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'mobile', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workTelephone', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workEmail', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'salaryGradeCode', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'joinedDate', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'otherEmail', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeTerminationRecord', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom1', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom2', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom3', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom4', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom5', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom6', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom7', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom8', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom9', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'custom10', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'purgedAt', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'locations', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'dependents', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'emergencyContacts', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'immigrationRecords', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'workExperience', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'educations', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'skills', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'languages', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'licenses', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'memberships', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'salaries', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employmentContracts', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'attachments', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeTerminationRecords', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'users', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empPicture', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'subordinates', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'supervisors', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'empUsTax', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'employeeWorkShift', '' . "\0" . 'OrangeHRM\\Entity\\Employee' . "\0" . 'attendanceRecords', 'entityDecorator'];
    }

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

                $existingProperties = get_object_vars($proxy);

                foreach ($proxy::$lazyPropertiesDefaults 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(): void
    {
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
    }

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

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

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

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

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

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

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     * @deprecated no longer in use - generated code now relies on internal components rather than generated public API
     * @static
     */
    public function __getLazyProperties(): array
    {
        return self::$lazyPropertiesDefaults;
    }

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


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

        return parent::getEmpNumber();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmpNumber(int $empNumber): void
    {

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

        parent::setEmpNumber($empNumber);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmployeeId(): ?string
    {

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

        return parent::getEmployeeId();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmployeeId(?string $employeeId): void
    {

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

        parent::setEmployeeId($employeeId);
    }

    /**
     * {@inheritDoc}
     */
    public function getLastName(): string
    {

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

        return parent::getLastName();
    }

    /**
     * {@inheritDoc}
     */
    public function setLastName(string $lastName): void
    {

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

        parent::setLastName($lastName);
    }

    /**
     * {@inheritDoc}
     */
    public function getFirstName(): string
    {

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

        return parent::getFirstName();
    }

    /**
     * {@inheritDoc}
     */
    public function setFirstName(string $firstName): void
    {

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

        parent::setFirstName($firstName);
    }

    /**
     * {@inheritDoc}
     */
    public function getMiddleName(): string
    {

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

        return parent::getMiddleName();
    }

    /**
     * {@inheritDoc}
     */
    public function setMiddleName(string $middleName): void
    {

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

        parent::setMiddleName($middleName);
    }

    /**
     * {@inheritDoc}
     */
    public function getNickName(): ?string
    {

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

        return parent::getNickName();
    }

    /**
     * {@inheritDoc}
     */
    public function setNickName(?string $nickName): void
    {

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

        parent::setNickName($nickName);
    }

    /**
     * {@inheritDoc}
     */
    public function getSmoker(): ?int
    {

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

        return parent::getSmoker();
    }

    /**
     * {@inheritDoc}
     */
    public function setSmoker(?int $smoker): void
    {

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

        parent::setSmoker($smoker);
    }

    /**
     * {@inheritDoc}
     */
    public function getEthnicRaceCode(): ?string
    {

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

        return parent::getEthnicRaceCode();
    }

    /**
     * {@inheritDoc}
     */
    public function setEthnicRaceCode(?string $ethnicRaceCode): void
    {

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

        parent::setEthnicRaceCode($ethnicRaceCode);
    }

    /**
     * {@inheritDoc}
     */
    public function getBirthday(): ?\DateTime
    {

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

        return parent::getBirthday();
    }

    /**
     * {@inheritDoc}
     */
    public function setBirthday(?\DateTime $birthday): void
    {

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

        parent::setBirthday($birthday);
    }

    /**
     * {@inheritDoc}
     */
    public function getNationality(): ?\OrangeHRM\Entity\Nationality
    {

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

        return parent::getNationality();
    }

    /**
     * {@inheritDoc}
     */
    public function setNationality(?\OrangeHRM\Entity\Nationality $nationality): void
    {

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

        parent::setNationality($nationality);
    }

    /**
     * {@inheritDoc}
     */
    public function getGender(): ?int
    {

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

        return parent::getGender();
    }

    /**
     * {@inheritDoc}
     */
    public function setGender(?int $gender): void
    {

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

        parent::setGender($gender);
    }

    /**
     * {@inheritDoc}
     */
    public function getMaritalStatus(): ?string
    {

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

        return parent::getMaritalStatus();
    }

    /**
     * {@inheritDoc}
     */
    public function setMaritalStatus(?string $maritalStatus): void
    {

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

        parent::setMaritalStatus($maritalStatus);
    }

    /**
     * {@inheritDoc}
     */
    public function getSsnNumber(): ?string
    {

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

        return parent::getSsnNumber();
    }

    /**
     * {@inheritDoc}
     */
    public function setSsnNumber(?string $ssnNumber): void
    {

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

        parent::setSsnNumber($ssnNumber);
    }

    /**
     * {@inheritDoc}
     */
    public function getSinNumber(): ?string
    {

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

        return parent::getSinNumber();
    }

    /**
     * {@inheritDoc}
     */
    public function setSinNumber(?string $sinNumber): void
    {

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

        parent::setSinNumber($sinNumber);
    }

    /**
     * {@inheritDoc}
     */
    public function getOtherId(): ?string
    {

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

        return parent::getOtherId();
    }

    /**
     * {@inheritDoc}
     */
    public function setOtherId(?string $otherId): void
    {

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

        parent::setOtherId($otherId);
    }

    /**
     * {@inheritDoc}
     */
    public function getDrivingLicenseNo(): ?string
    {

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

        return parent::getDrivingLicenseNo();
    }

    /**
     * {@inheritDoc}
     */
    public function setDrivingLicenseNo(?string $drivingLicenseNo): void
    {

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

        parent::setDrivingLicenseNo($drivingLicenseNo);
    }

    /**
     * {@inheritDoc}
     */
    public function getDrivingLicenseExpiredDate(): ?\DateTime
    {

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

        return parent::getDrivingLicenseExpiredDate();
    }

    /**
     * {@inheritDoc}
     */
    public function setDrivingLicenseExpiredDate(?\DateTime $drivingLicenseExpiredDate): void
    {

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

        parent::setDrivingLicenseExpiredDate($drivingLicenseExpiredDate);
    }

    /**
     * {@inheritDoc}
     */
    public function getMilitaryService(): ?string
    {

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

        return parent::getMilitaryService();
    }

    /**
     * {@inheritDoc}
     */
    public function setMilitaryService(?string $militaryService): void
    {

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

        parent::setMilitaryService($militaryService);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmpStatus(): ?\OrangeHRM\Entity\EmploymentStatus
    {

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

        return parent::getEmpStatus();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmpStatus(?\OrangeHRM\Entity\EmploymentStatus $empStatus): void
    {

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

        parent::setEmpStatus($empStatus);
    }

    /**
     * {@inheritDoc}
     */
    public function getJobTitle(): ?\OrangeHRM\Entity\JobTitle
    {

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

        return parent::getJobTitle();
    }

    /**
     * {@inheritDoc}
     */
    public function setJobTitle(?\OrangeHRM\Entity\JobTitle $jobTitle): void
    {

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

        parent::setJobTitle($jobTitle);
    }

    /**
     * {@inheritDoc}
     */
    public function getJobCategory(): ?\OrangeHRM\Entity\JobCategory
    {

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

        return parent::getJobCategory();
    }

    /**
     * {@inheritDoc}
     */
    public function setJobCategory(?\OrangeHRM\Entity\JobCategory $jobCategory): void
    {

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

        parent::setJobCategory($jobCategory);
    }

    /**
     * {@inheritDoc}
     */
    public function getSubDivision(): ?\OrangeHRM\Entity\Subunit
    {

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

        return parent::getSubDivision();
    }

    /**
     * {@inheritDoc}
     */
    public function setSubDivision(?\OrangeHRM\Entity\Subunit $subDivision): void
    {

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

        parent::setSubDivision($subDivision);
    }

    /**
     * {@inheritDoc}
     */
    public function getStreet1(): ?string
    {

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

        return parent::getStreet1();
    }

    /**
     * {@inheritDoc}
     */
    public function setStreet1(?string $street1): void
    {

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

        parent::setStreet1($street1);
    }

    /**
     * {@inheritDoc}
     */
    public function getStreet2(): ?string
    {

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

        return parent::getStreet2();
    }

    /**
     * {@inheritDoc}
     */
    public function setStreet2(?string $street2): void
    {

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

        parent::setStreet2($street2);
    }

    /**
     * {@inheritDoc}
     */
    public function getCity(): ?string
    {

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

        return parent::getCity();
    }

    /**
     * {@inheritDoc}
     */
    public function setCity(?string $city): void
    {

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

        parent::setCity($city);
    }

    /**
     * {@inheritDoc}
     */
    public function getCountry(): ?string
    {

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

        return parent::getCountry();
    }

    /**
     * {@inheritDoc}
     */
    public function setCountry(?string $country): void
    {

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

        parent::setCountry($country);
    }

    /**
     * {@inheritDoc}
     */
    public function getProvince(): ?string
    {

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

        return parent::getProvince();
    }

    /**
     * {@inheritDoc}
     */
    public function setProvince(?string $province): void
    {

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

        parent::setProvince($province);
    }

    /**
     * {@inheritDoc}
     */
    public function getZipcode(): ?string
    {

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

        return parent::getZipcode();
    }

    /**
     * {@inheritDoc}
     */
    public function setZipcode(?string $zipcode): void
    {

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

        parent::setZipcode($zipcode);
    }

    /**
     * {@inheritDoc}
     */
    public function getHomeTelephone(): ?string
    {

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

        return parent::getHomeTelephone();
    }

    /**
     * {@inheritDoc}
     */
    public function setHomeTelephone(?string $homeTelephone): void
    {

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

        parent::setHomeTelephone($homeTelephone);
    }

    /**
     * {@inheritDoc}
     */
    public function getMobile(): ?string
    {

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

        return parent::getMobile();
    }

    /**
     * {@inheritDoc}
     */
    public function setMobile(?string $mobile): void
    {

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

        parent::setMobile($mobile);
    }

    /**
     * {@inheritDoc}
     */
    public function getWorkTelephone(): ?string
    {

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

        return parent::getWorkTelephone();
    }

    /**
     * {@inheritDoc}
     */
    public function setWorkTelephone(?string $workTelephone): void
    {

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

        parent::setWorkTelephone($workTelephone);
    }

    /**
     * {@inheritDoc}
     */
    public function getWorkEmail(): ?string
    {

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

        return parent::getWorkEmail();
    }

    /**
     * {@inheritDoc}
     */
    public function setWorkEmail(?string $workEmail): void
    {

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

        parent::setWorkEmail($workEmail);
    }

    /**
     * {@inheritDoc}
     */
    public function getJoinedDate(): ?\DateTime
    {

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

        return parent::getJoinedDate();
    }

    /**
     * {@inheritDoc}
     */
    public function setJoinedDate(?\DateTime $joinedDate): void
    {

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

        parent::setJoinedDate($joinedDate);
    }

    /**
     * {@inheritDoc}
     */
    public function getOtherEmail(): ?string
    {

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

        return parent::getOtherEmail();
    }

    /**
     * {@inheritDoc}
     */
    public function setOtherEmail(?string $otherEmail): void
    {

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

        parent::setOtherEmail($otherEmail);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmployeeTerminationRecord(): ?\OrangeHRM\Entity\EmployeeTerminationRecord
    {

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

        return parent::getEmployeeTerminationRecord();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmployeeTerminationRecord(?\OrangeHRM\Entity\EmployeeTerminationRecord $employeeTerminationRecord): void
    {

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

        parent::setEmployeeTerminationRecord($employeeTerminationRecord);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom1(): ?string
    {

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

        return parent::getCustom1();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom1(?string $custom1): void
    {

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

        parent::setCustom1($custom1);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom2(): ?string
    {

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

        return parent::getCustom2();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom2(?string $custom2): void
    {

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

        parent::setCustom2($custom2);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom3(): ?string
    {

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

        return parent::getCustom3();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom3(?string $custom3): void
    {

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

        parent::setCustom3($custom3);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom4(): ?string
    {

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

        return parent::getCustom4();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom4(?string $custom4): void
    {

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

        parent::setCustom4($custom4);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom5(): ?string
    {

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

        return parent::getCustom5();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom5(?string $custom5): void
    {

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

        parent::setCustom5($custom5);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom6(): ?string
    {

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

        return parent::getCustom6();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom6(?string $custom6): void
    {

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

        parent::setCustom6($custom6);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom7(): ?string
    {

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

        return parent::getCustom7();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom7(?string $custom7): void
    {

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

        parent::setCustom7($custom7);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom8(): ?string
    {

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

        return parent::getCustom8();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom8(?string $custom8): void
    {

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

        parent::setCustom8($custom8);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom9(): ?string
    {

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

        return parent::getCustom9();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom9(?string $custom9): void
    {

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

        parent::setCustom9($custom9);
    }

    /**
     * {@inheritDoc}
     */
    public function getCustom10(): ?string
    {

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

        return parent::getCustom10();
    }

    /**
     * {@inheritDoc}
     */
    public function setCustom10(?string $custom10): void
    {

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

        parent::setCustom10($custom10);
    }

    /**
     * {@inheritDoc}
     */
    public function getPurgedAt(): ?\DateTime
    {

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

        return parent::getPurgedAt();
    }

    /**
     * {@inheritDoc}
     */
    public function setPurgedAt(?\DateTime $purgedAt): void
    {

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

        parent::setPurgedAt($purgedAt);
    }

    /**
     * {@inheritDoc}
     */
    public function getLocations(): iterable
    {

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

        return parent::getLocations();
    }

    /**
     * {@inheritDoc}
     */
    public function setLocations(iterable $locations): void
    {

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

        parent::setLocations($locations);
    }

    /**
     * {@inheritDoc}
     */
    public function getDependents(): iterable
    {

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

        return parent::getDependents();
    }

    /**
     * {@inheritDoc}
     */
    public function setDependents(iterable $dependents): void
    {

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

        parent::setDependents($dependents);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmergencyContacts(): iterable
    {

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

        return parent::getEmergencyContacts();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmergencyContacts(iterable $emergencyContacts): void
    {

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

        parent::setEmergencyContacts($emergencyContacts);
    }

    /**
     * {@inheritDoc}
     */
    public function getImmigrationRecords(): iterable
    {

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

        return parent::getImmigrationRecords();
    }

    /**
     * {@inheritDoc}
     */
    public function setImmigrationRecords(iterable $immigrationRecords): void
    {

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

        parent::setImmigrationRecords($immigrationRecords);
    }

    /**
     * {@inheritDoc}
     */
    public function getWorkExperience(): iterable
    {

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

        return parent::getWorkExperience();
    }

    /**
     * {@inheritDoc}
     */
    public function setWorkExperience(iterable $workExperience): void
    {

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

        parent::setWorkExperience($workExperience);
    }

    /**
     * {@inheritDoc}
     */
    public function getEducations(): iterable
    {

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

        return parent::getEducations();
    }

    /**
     * {@inheritDoc}
     */
    public function setEducations(iterable $educations): void
    {

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

        parent::setEducations($educations);
    }

    /**
     * {@inheritDoc}
     */
    public function getSkills(): iterable
    {

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

        return parent::getSkills();
    }

    /**
     * {@inheritDoc}
     */
    public function setSkills(iterable $skills): void
    {

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

        parent::setSkills($skills);
    }

    /**
     * {@inheritDoc}
     */
    public function getLanguages(): iterable
    {

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

        return parent::getLanguages();
    }

    /**
     * {@inheritDoc}
     */
    public function setLanguages(iterable $languages): void
    {

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

        parent::setLanguages($languages);
    }

    /**
     * {@inheritDoc}
     */
    public function getLicenses(): iterable
    {

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

        return parent::getLicenses();
    }

    /**
     * {@inheritDoc}
     */
    public function setLicenses(iterable $licenses): void
    {

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

        parent::setLicenses($licenses);
    }

    /**
     * {@inheritDoc}
     */
    public function getMemberships(): iterable
    {

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

        return parent::getMemberships();
    }

    /**
     * {@inheritDoc}
     */
    public function setMemberships(iterable $memberships): void
    {

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

        parent::setMemberships($memberships);
    }

    /**
     * {@inheritDoc}
     */
    public function getSalaries(): iterable
    {

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

        return parent::getSalaries();
    }

    /**
     * {@inheritDoc}
     */
    public function setSalaries(iterable $salaries): void
    {

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

        parent::setSalaries($salaries);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmploymentContracts(): iterable
    {

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

        return parent::getEmploymentContracts();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmploymentContracts(iterable $employmentContracts): void
    {

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

        parent::setEmploymentContracts($employmentContracts);
    }

    /**
     * {@inheritDoc}
     */
    public function getUsers(): iterable
    {

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

        return parent::getUsers();
    }

    /**
     * {@inheritDoc}
     */
    public function setUsers(iterable $users): void
    {

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

        parent::setUsers($users);
    }

    /**
     * {@inheritDoc}
     */
    public function getEmpPicture(): ?\OrangeHRM\Entity\EmpPicture
    {

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

        return parent::getEmpPicture();
    }

    /**
     * {@inheritDoc}
     */
    public function setEmpPicture(?\OrangeHRM\Entity\EmpPicture $empPicture): void
    {

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

        parent::setEmpPicture($empPicture);
    }

    /**
     * {@inheritDoc}
     */
    public function getSubordinates(): iterable
    {

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

        return parent::getSubordinates();
    }

    /**
     * {@inheritDoc}
     */
    public function setSubordinates(iterable $subordinates): void
    {

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

        parent::setSubordinates($subordinates);
    }

    /**
     * {@inheritDoc}
     */
    public function getSupervisors(): iterable
    {

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

        return parent::getSupervisors();
    }

    /**
     * {@inheritDoc}
     */
    public function setSupervisors(iterable $supervisors): void
    {

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

        parent::setSupervisors($supervisors);
    }

    /**
     * {@inheritDoc}
     */
    public function getDecorator(): object
    {

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

        return parent::getDecorator();
    }

}
