<?php

namespace OXModule\StructClass;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for UserModuleAccess StructClass
 * @subpackage Structs
 */
class UserModuleAccess extends AbstractStructBase
{
    /**
     * The OLOX20
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $OLOX20;
    /**
     * The USM
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $USM;
    /**
     * The activeSync
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $activeSync;
    /**
     * The calendar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $calendar;
    /**
     * The collectEmailAddresses
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $collectEmailAddresses;
    /**
     * The contacts
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $contacts;
    /**
     * The delegateTask
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $delegateTask;
    /**
     * The deniedPortal
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $deniedPortal;
    /**
     * The editGroup
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $editGroup;
    /**
     * The editPassword
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $editPassword;
    /**
     * The editPublicFolders
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $editPublicFolders;
    /**
     * The editResource
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $editResource;
    /**
     * The globalAddressBookDisabled
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $globalAddressBookDisabled;
    /**
     * The ical
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $ical;
    /**
     * The infostore
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $infostore;
    /**
     * The multipleMailAccounts
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $multipleMailAccounts;
    /**
     * The publicFolderEditable
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $publicFolderEditable;
    /**
     * The publication
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $publication;
    /**
     * The readCreateSharedFolders
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $readCreateSharedFolders;
    /**
     * The subscription
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $subscription;
    /**
     * The syncml
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $syncml;
    /**
     * The tasks
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $tasks;
    /**
     * The vcard
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $vcard;
    /**
     * The webdav
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $webdav;
    /**
     * The webdavXml
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $webdavXml;
    /**
     * The webmail
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $webmail;
    /**
     * Constructor method for UserModuleAccess
     * @uses UserModuleAccess::setOLOX20()
     * @uses UserModuleAccess::setUSM()
     * @uses UserModuleAccess::setActiveSync()
     * @uses UserModuleAccess::setCalendar()
     * @uses UserModuleAccess::setCollectEmailAddresses()
     * @uses UserModuleAccess::setContacts()
     * @uses UserModuleAccess::setDelegateTask()
     * @uses UserModuleAccess::setDeniedPortal()
     * @uses UserModuleAccess::setEditGroup()
     * @uses UserModuleAccess::setEditPassword()
     * @uses UserModuleAccess::setEditPublicFolders()
     * @uses UserModuleAccess::setEditResource()
     * @uses UserModuleAccess::setGlobalAddressBookDisabled()
     * @uses UserModuleAccess::setIcal()
     * @uses UserModuleAccess::setInfostore()
     * @uses UserModuleAccess::setMultipleMailAccounts()
     * @uses UserModuleAccess::setPublicFolderEditable()
     * @uses UserModuleAccess::setPublication()
     * @uses UserModuleAccess::setReadCreateSharedFolders()
     * @uses UserModuleAccess::setSubscription()
     * @uses UserModuleAccess::setSyncml()
     * @uses UserModuleAccess::setTasks()
     * @uses UserModuleAccess::setVcard()
     * @uses UserModuleAccess::setWebdav()
     * @uses UserModuleAccess::setWebdavXml()
     * @uses UserModuleAccess::setWebmail()
     * @param bool $oLOX20
     * @param bool $uSM
     * @param bool $activeSync
     * @param bool $calendar
     * @param bool $collectEmailAddresses
     * @param bool $contacts
     * @param bool $delegateTask
     * @param bool $deniedPortal
     * @param bool $editGroup
     * @param bool $editPassword
     * @param bool $editPublicFolders
     * @param bool $editResource
     * @param bool $globalAddressBookDisabled
     * @param bool $ical
     * @param bool $infostore
     * @param bool $multipleMailAccounts
     * @param bool $publicFolderEditable
     * @param bool $publication
     * @param bool $readCreateSharedFolders
     * @param bool $subscription
     * @param bool $syncml
     * @param bool $tasks
     * @param bool $vcard
     * @param bool $webdav
     * @param bool $webdavXml
     * @param bool $webmail
     */
    public function __construct($oLOX20 = null, $uSM = null, $activeSync = null, $calendar = null, $collectEmailAddresses = null, $contacts = null, $delegateTask = null, $deniedPortal = null, $editGroup = null, $editPassword = null, $editPublicFolders = null, $editResource = null, $globalAddressBookDisabled = null, $ical = null, $infostore = null, $multipleMailAccounts = null, $publicFolderEditable = null, $publication = null, $readCreateSharedFolders = null, $subscription = null, $syncml = null, $tasks = null, $vcard = null, $webdav = null, $webdavXml = null, $webmail = null)
    {
        $this
            ->setOLOX20($oLOX20)
            ->setUSM($uSM)
            ->setActiveSync($activeSync)
            ->setCalendar($calendar)
            ->setCollectEmailAddresses($collectEmailAddresses)
            ->setContacts($contacts)
            ->setDelegateTask($delegateTask)
            ->setDeniedPortal($deniedPortal)
            ->setEditGroup($editGroup)
            ->setEditPassword($editPassword)
            ->setEditPublicFolders($editPublicFolders)
            ->setEditResource($editResource)
            ->setGlobalAddressBookDisabled($globalAddressBookDisabled)
            ->setIcal($ical)
            ->setInfostore($infostore)
            ->setMultipleMailAccounts($multipleMailAccounts)
            ->setPublicFolderEditable($publicFolderEditable)
            ->setPublication($publication)
            ->setReadCreateSharedFolders($readCreateSharedFolders)
            ->setSubscription($subscription)
            ->setSyncml($syncml)
            ->setTasks($tasks)
            ->setVcard($vcard)
            ->setWebdav($webdav)
            ->setWebdavXml($webdavXml)
            ->setWebmail($webmail);
    }
    /**
     * Get OLOX20 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getOLOX20()
    {
        return isset($this->OLOX20) ? $this->OLOX20 : null;
    }
    /**
     * Set OLOX20 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $oLOX20
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setOLOX20($oLOX20 = null)
    {
        // validation for constraint: boolean
        if (!is_null($oLOX20) && !is_bool($oLOX20)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($oLOX20)), __LINE__);
        }
        if (is_null($oLOX20) || (is_array($oLOX20) && empty($oLOX20))) {
            unset($this->OLOX20);
        } else {
            $this->OLOX20 = $oLOX20;
        }
        return $this;
    }
    /**
     * Get USM value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getUSM()
    {
        return isset($this->USM) ? $this->USM : null;
    }
    /**
     * Set USM value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $uSM
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setUSM($uSM = null)
    {
        // validation for constraint: boolean
        if (!is_null($uSM) && !is_bool($uSM)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($uSM)), __LINE__);
        }
        if (is_null($uSM) || (is_array($uSM) && empty($uSM))) {
            unset($this->USM);
        } else {
            $this->USM = $uSM;
        }
        return $this;
    }
    /**
     * Get activeSync value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getActiveSync()
    {
        return isset($this->activeSync) ? $this->activeSync : null;
    }
    /**
     * Set activeSync value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $activeSync
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setActiveSync($activeSync = null)
    {
        // validation for constraint: boolean
        if (!is_null($activeSync) && !is_bool($activeSync)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($activeSync)), __LINE__);
        }
        if (is_null($activeSync) || (is_array($activeSync) && empty($activeSync))) {
            unset($this->activeSync);
        } else {
            $this->activeSync = $activeSync;
        }
        return $this;
    }
    /**
     * Get calendar value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getCalendar()
    {
        return isset($this->calendar) ? $this->calendar : null;
    }
    /**
     * Set calendar value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $calendar
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setCalendar($calendar = null)
    {
        // validation for constraint: boolean
        if (!is_null($calendar) && !is_bool($calendar)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($calendar)), __LINE__);
        }
        if (is_null($calendar) || (is_array($calendar) && empty($calendar))) {
            unset($this->calendar);
        } else {
            $this->calendar = $calendar;
        }
        return $this;
    }
    /**
     * Get collectEmailAddresses value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getCollectEmailAddresses()
    {
        return isset($this->collectEmailAddresses) ? $this->collectEmailAddresses : null;
    }
    /**
     * Set collectEmailAddresses value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $collectEmailAddresses
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setCollectEmailAddresses($collectEmailAddresses = null)
    {
        // validation for constraint: boolean
        if (!is_null($collectEmailAddresses) && !is_bool($collectEmailAddresses)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($collectEmailAddresses)), __LINE__);
        }
        if (is_null($collectEmailAddresses) || (is_array($collectEmailAddresses) && empty($collectEmailAddresses))) {
            unset($this->collectEmailAddresses);
        } else {
            $this->collectEmailAddresses = $collectEmailAddresses;
        }
        return $this;
    }
    /**
     * Get contacts value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getContacts()
    {
        return isset($this->contacts) ? $this->contacts : null;
    }
    /**
     * Set contacts value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $contacts
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setContacts($contacts = null)
    {
        // validation for constraint: boolean
        if (!is_null($contacts) && !is_bool($contacts)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($contacts)), __LINE__);
        }
        if (is_null($contacts) || (is_array($contacts) && empty($contacts))) {
            unset($this->contacts);
        } else {
            $this->contacts = $contacts;
        }
        return $this;
    }
    /**
     * Get delegateTask value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getDelegateTask()
    {
        return isset($this->delegateTask) ? $this->delegateTask : null;
    }
    /**
     * Set delegateTask value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $delegateTask
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setDelegateTask($delegateTask = null)
    {
        // validation for constraint: boolean
        if (!is_null($delegateTask) && !is_bool($delegateTask)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($delegateTask)), __LINE__);
        }
        if (is_null($delegateTask) || (is_array($delegateTask) && empty($delegateTask))) {
            unset($this->delegateTask);
        } else {
            $this->delegateTask = $delegateTask;
        }
        return $this;
    }
    /**
     * Get deniedPortal value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getDeniedPortal()
    {
        return isset($this->deniedPortal) ? $this->deniedPortal : null;
    }
    /**
     * Set deniedPortal value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $deniedPortal
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setDeniedPortal($deniedPortal = null)
    {
        // validation for constraint: boolean
        if (!is_null($deniedPortal) && !is_bool($deniedPortal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($deniedPortal)), __LINE__);
        }
        if (is_null($deniedPortal) || (is_array($deniedPortal) && empty($deniedPortal))) {
            unset($this->deniedPortal);
        } else {
            $this->deniedPortal = $deniedPortal;
        }
        return $this;
    }
    /**
     * Get editGroup value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getEditGroup()
    {
        return isset($this->editGroup) ? $this->editGroup : null;
    }
    /**
     * Set editGroup value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $editGroup
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setEditGroup($editGroup = null)
    {
        // validation for constraint: boolean
        if (!is_null($editGroup) && !is_bool($editGroup)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($editGroup)), __LINE__);
        }
        if (is_null($editGroup) || (is_array($editGroup) && empty($editGroup))) {
            unset($this->editGroup);
        } else {
            $this->editGroup = $editGroup;
        }
        return $this;
    }
    /**
     * Get editPassword value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getEditPassword()
    {
        return isset($this->editPassword) ? $this->editPassword : null;
    }
    /**
     * Set editPassword value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $editPassword
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setEditPassword($editPassword = null)
    {
        // validation for constraint: boolean
        if (!is_null($editPassword) && !is_bool($editPassword)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($editPassword)), __LINE__);
        }
        if (is_null($editPassword) || (is_array($editPassword) && empty($editPassword))) {
            unset($this->editPassword);
        } else {
            $this->editPassword = $editPassword;
        }
        return $this;
    }
    /**
     * Get editPublicFolders value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getEditPublicFolders()
    {
        return isset($this->editPublicFolders) ? $this->editPublicFolders : null;
    }
    /**
     * Set editPublicFolders value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $editPublicFolders
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setEditPublicFolders($editPublicFolders = null)
    {
        // validation for constraint: boolean
        if (!is_null($editPublicFolders) && !is_bool($editPublicFolders)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($editPublicFolders)), __LINE__);
        }
        if (is_null($editPublicFolders) || (is_array($editPublicFolders) && empty($editPublicFolders))) {
            unset($this->editPublicFolders);
        } else {
            $this->editPublicFolders = $editPublicFolders;
        }
        return $this;
    }
    /**
     * Get editResource value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getEditResource()
    {
        return isset($this->editResource) ? $this->editResource : null;
    }
    /**
     * Set editResource value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $editResource
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setEditResource($editResource = null)
    {
        // validation for constraint: boolean
        if (!is_null($editResource) && !is_bool($editResource)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($editResource)), __LINE__);
        }
        if (is_null($editResource) || (is_array($editResource) && empty($editResource))) {
            unset($this->editResource);
        } else {
            $this->editResource = $editResource;
        }
        return $this;
    }
    /**
     * Get globalAddressBookDisabled value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getGlobalAddressBookDisabled()
    {
        return isset($this->globalAddressBookDisabled) ? $this->globalAddressBookDisabled : null;
    }
    /**
     * Set globalAddressBookDisabled value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $globalAddressBookDisabled
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setGlobalAddressBookDisabled($globalAddressBookDisabled = null)
    {
        // validation for constraint: boolean
        if (!is_null($globalAddressBookDisabled) && !is_bool($globalAddressBookDisabled)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($globalAddressBookDisabled)), __LINE__);
        }
        if (is_null($globalAddressBookDisabled) || (is_array($globalAddressBookDisabled) && empty($globalAddressBookDisabled))) {
            unset($this->globalAddressBookDisabled);
        } else {
            $this->globalAddressBookDisabled = $globalAddressBookDisabled;
        }
        return $this;
    }
    /**
     * Get ical value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getIcal()
    {
        return isset($this->ical) ? $this->ical : null;
    }
    /**
     * Set ical value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $ical
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setIcal($ical = null)
    {
        // validation for constraint: boolean
        if (!is_null($ical) && !is_bool($ical)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($ical)), __LINE__);
        }
        if (is_null($ical) || (is_array($ical) && empty($ical))) {
            unset($this->ical);
        } else {
            $this->ical = $ical;
        }
        return $this;
    }
    /**
     * Get infostore value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getInfostore()
    {
        return isset($this->infostore) ? $this->infostore : null;
    }
    /**
     * Set infostore value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $infostore
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setInfostore($infostore = null)
    {
        // validation for constraint: boolean
        if (!is_null($infostore) && !is_bool($infostore)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($infostore)), __LINE__);
        }
        if (is_null($infostore) || (is_array($infostore) && empty($infostore))) {
            unset($this->infostore);
        } else {
            $this->infostore = $infostore;
        }
        return $this;
    }
    /**
     * Get multipleMailAccounts value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getMultipleMailAccounts()
    {
        return isset($this->multipleMailAccounts) ? $this->multipleMailAccounts : null;
    }
    /**
     * Set multipleMailAccounts value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $multipleMailAccounts
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setMultipleMailAccounts($multipleMailAccounts = null)
    {
        // validation for constraint: boolean
        if (!is_null($multipleMailAccounts) && !is_bool($multipleMailAccounts)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($multipleMailAccounts)), __LINE__);
        }
        if (is_null($multipleMailAccounts) || (is_array($multipleMailAccounts) && empty($multipleMailAccounts))) {
            unset($this->multipleMailAccounts);
        } else {
            $this->multipleMailAccounts = $multipleMailAccounts;
        }
        return $this;
    }
    /**
     * Get publicFolderEditable value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getPublicFolderEditable()
    {
        return isset($this->publicFolderEditable) ? $this->publicFolderEditable : null;
    }
    /**
     * Set publicFolderEditable value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $publicFolderEditable
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setPublicFolderEditable($publicFolderEditable = null)
    {
        // validation for constraint: boolean
        if (!is_null($publicFolderEditable) && !is_bool($publicFolderEditable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($publicFolderEditable)), __LINE__);
        }
        if (is_null($publicFolderEditable) || (is_array($publicFolderEditable) && empty($publicFolderEditable))) {
            unset($this->publicFolderEditable);
        } else {
            $this->publicFolderEditable = $publicFolderEditable;
        }
        return $this;
    }
    /**
     * Get publication value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getPublication()
    {
        return isset($this->publication) ? $this->publication : null;
    }
    /**
     * Set publication value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $publication
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setPublication($publication = null)
    {
        // validation for constraint: boolean
        if (!is_null($publication) && !is_bool($publication)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($publication)), __LINE__);
        }
        if (is_null($publication) || (is_array($publication) && empty($publication))) {
            unset($this->publication);
        } else {
            $this->publication = $publication;
        }
        return $this;
    }
    /**
     * Get readCreateSharedFolders value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getReadCreateSharedFolders()
    {
        return isset($this->readCreateSharedFolders) ? $this->readCreateSharedFolders : null;
    }
    /**
     * Set readCreateSharedFolders value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $readCreateSharedFolders
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setReadCreateSharedFolders($readCreateSharedFolders = null)
    {
        // validation for constraint: boolean
        if (!is_null($readCreateSharedFolders) && !is_bool($readCreateSharedFolders)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($readCreateSharedFolders)), __LINE__);
        }
        if (is_null($readCreateSharedFolders) || (is_array($readCreateSharedFolders) && empty($readCreateSharedFolders))) {
            unset($this->readCreateSharedFolders);
        } else {
            $this->readCreateSharedFolders = $readCreateSharedFolders;
        }
        return $this;
    }
    /**
     * Get subscription value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getSubscription()
    {
        return isset($this->subscription) ? $this->subscription : null;
    }
    /**
     * Set subscription value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $subscription
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setSubscription($subscription = null)
    {
        // validation for constraint: boolean
        if (!is_null($subscription) && !is_bool($subscription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($subscription)), __LINE__);
        }
        if (is_null($subscription) || (is_array($subscription) && empty($subscription))) {
            unset($this->subscription);
        } else {
            $this->subscription = $subscription;
        }
        return $this;
    }
    /**
     * Get syncml value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getSyncml()
    {
        return isset($this->syncml) ? $this->syncml : null;
    }
    /**
     * Set syncml value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $syncml
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setSyncml($syncml = null)
    {
        // validation for constraint: boolean
        if (!is_null($syncml) && !is_bool($syncml)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($syncml)), __LINE__);
        }
        if (is_null($syncml) || (is_array($syncml) && empty($syncml))) {
            unset($this->syncml);
        } else {
            $this->syncml = $syncml;
        }
        return $this;
    }
    /**
     * Get tasks value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getTasks()
    {
        return isset($this->tasks) ? $this->tasks : null;
    }
    /**
     * Set tasks value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $tasks
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setTasks($tasks = null)
    {
        // validation for constraint: boolean
        if (!is_null($tasks) && !is_bool($tasks)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($tasks)), __LINE__);
        }
        if (is_null($tasks) || (is_array($tasks) && empty($tasks))) {
            unset($this->tasks);
        } else {
            $this->tasks = $tasks;
        }
        return $this;
    }
    /**
     * Get vcard value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getVcard()
    {
        return isset($this->vcard) ? $this->vcard : null;
    }
    /**
     * Set vcard value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $vcard
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setVcard($vcard = null)
    {
        // validation for constraint: boolean
        if (!is_null($vcard) && !is_bool($vcard)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($vcard)), __LINE__);
        }
        if (is_null($vcard) || (is_array($vcard) && empty($vcard))) {
            unset($this->vcard);
        } else {
            $this->vcard = $vcard;
        }
        return $this;
    }
    /**
     * Get webdav value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getWebdav()
    {
        return isset($this->webdav) ? $this->webdav : null;
    }
    /**
     * Set webdav value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $webdav
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setWebdav($webdav = null)
    {
        // validation for constraint: boolean
        if (!is_null($webdav) && !is_bool($webdav)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($webdav)), __LINE__);
        }
        if (is_null($webdav) || (is_array($webdav) && empty($webdav))) {
            unset($this->webdav);
        } else {
            $this->webdav = $webdav;
        }
        return $this;
    }
    /**
     * Get webdavXml value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getWebdavXml()
    {
        return isset($this->webdavXml) ? $this->webdavXml : null;
    }
    /**
     * Set webdavXml value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $webdavXml
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setWebdavXml($webdavXml = null)
    {
        // validation for constraint: boolean
        if (!is_null($webdavXml) && !is_bool($webdavXml)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($webdavXml)), __LINE__);
        }
        if (is_null($webdavXml) || (is_array($webdavXml) && empty($webdavXml))) {
            unset($this->webdavXml);
        } else {
            $this->webdavXml = $webdavXml;
        }
        return $this;
    }
    /**
     * Get webmail value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getWebmail()
    {
        return isset($this->webmail) ? $this->webmail : null;
    }
    /**
     * Set webmail value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $webmail
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public function setWebmail($webmail = null)
    {
        // validation for constraint: boolean
        if (!is_null($webmail) && !is_bool($webmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($webmail)), __LINE__);
        }
        if (is_null($webmail) || (is_array($webmail) && empty($webmail))) {
            unset($this->webmail);
        } else {
            $this->webmail = $webmail;
        }
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \OXModule\StructClass\UserModuleAccess
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
