<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Security.UserPermissions StructType
 * @subpackage Structs
 */
class Security_UserPermissions extends Security_UserParametersBase
{
    /**
     * The AllowedToAccessPaymentAdvanceConfiguration
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToAccessPaymentAdvanceConfiguration;
    /**
     * The AllowedToCustomizeTheMasterProfile
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToCustomizeTheMasterProfile;
    /**
     * The AllowedToCustomizeUserProfiles
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToCustomizeUserProfiles;
    /**
     * The AllowedToEditItemsPMs
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToEditItemsPMs;
    /**
     * The AllowedToEditItemsPrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToEditItemsPrice;
    /**
     * The AllowedToExtendMembershipPeriod
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToExtendMembershipPeriod;
    /**
     * The AllowedToIssueComplimentary
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToIssueComplimentary;
    /**
     * The AllowedToManageSeatAttributes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToManageSeatAttributes;
    /**
     * The AllowedToMoveAudience
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToMoveAudience;
    /**
     * The AllowedToOperateExportImportEvent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToOperateExportImportEvent;
    /**
     * The AllowedToOperateMoveMoney
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToOperateMoveMoney;
    /**
     * The AllowedToOperateUnderDiffOrgUnit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToOperateUnderDiffOrgUnit;
    /**
     * The AllowedToReviewPaymentSessionCompletionProblem
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToReviewPaymentSessionCompletionProblem;
    /**
     * The AllowedToRunSystemMonitoringTools
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToRunSystemMonitoringTools;
    /**
     * The AllowedToSpecifyReprintReason
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToSpecifyReprintReason;
    /**
     * The AllowedToTakeOverOrReleaseSeats
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowedToTakeOverOrReleaseSeats;
    /**
     * The CanEditTicketFaceConfig
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CanEditTicketFaceConfig;
    /**
     * The ExposeHospitality
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $ExposeHospitality;
    /**
     * The ExposePartiallyAvailableSubFilter
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $ExposePartiallyAvailableSubFilter;
    /**
     * Constructor method for Security.UserPermissions
     * @uses Security_UserPermissions::setAllowedToAccessPaymentAdvanceConfiguration()
     * @uses Security_UserPermissions::setAllowedToCustomizeTheMasterProfile()
     * @uses Security_UserPermissions::setAllowedToCustomizeUserProfiles()
     * @uses Security_UserPermissions::setAllowedToEditItemsPMs()
     * @uses Security_UserPermissions::setAllowedToEditItemsPrice()
     * @uses Security_UserPermissions::setAllowedToExtendMembershipPeriod()
     * @uses Security_UserPermissions::setAllowedToIssueComplimentary()
     * @uses Security_UserPermissions::setAllowedToManageSeatAttributes()
     * @uses Security_UserPermissions::setAllowedToMoveAudience()
     * @uses Security_UserPermissions::setAllowedToOperateExportImportEvent()
     * @uses Security_UserPermissions::setAllowedToOperateMoveMoney()
     * @uses Security_UserPermissions::setAllowedToOperateUnderDiffOrgUnit()
     * @uses Security_UserPermissions::setAllowedToReviewPaymentSessionCompletionProblem()
     * @uses Security_UserPermissions::setAllowedToRunSystemMonitoringTools()
     * @uses Security_UserPermissions::setAllowedToSpecifyReprintReason()
     * @uses Security_UserPermissions::setAllowedToTakeOverOrReleaseSeats()
     * @uses Security_UserPermissions::setCanEditTicketFaceConfig()
     * @uses Security_UserPermissions::setExposeHospitality()
     * @uses Security_UserPermissions::setExposePartiallyAvailableSubFilter()
     * @param bool $allowedToAccessPaymentAdvanceConfiguration
     * @param bool $allowedToCustomizeTheMasterProfile
     * @param bool $allowedToCustomizeUserProfiles
     * @param bool $allowedToEditItemsPMs
     * @param bool $allowedToEditItemsPrice
     * @param bool $allowedToExtendMembershipPeriod
     * @param bool $allowedToIssueComplimentary
     * @param bool $allowedToManageSeatAttributes
     * @param bool $allowedToMoveAudience
     * @param bool $allowedToOperateExportImportEvent
     * @param bool $allowedToOperateMoveMoney
     * @param bool $allowedToOperateUnderDiffOrgUnit
     * @param bool $allowedToReviewPaymentSessionCompletionProblem
     * @param bool $allowedToRunSystemMonitoringTools
     * @param bool $allowedToSpecifyReprintReason
     * @param bool $allowedToTakeOverOrReleaseSeats
     * @param bool $canEditTicketFaceConfig
     * @param bool $exposeHospitality
     * @param bool $exposePartiallyAvailableSubFilter
     */
    public function __construct($allowedToAccessPaymentAdvanceConfiguration = null, $allowedToCustomizeTheMasterProfile = null, $allowedToCustomizeUserProfiles = null, $allowedToEditItemsPMs = null, $allowedToEditItemsPrice = null, $allowedToExtendMembershipPeriod = null, $allowedToIssueComplimentary = null, $allowedToManageSeatAttributes = null, $allowedToMoveAudience = null, $allowedToOperateExportImportEvent = null, $allowedToOperateMoveMoney = null, $allowedToOperateUnderDiffOrgUnit = null, $allowedToReviewPaymentSessionCompletionProblem = null, $allowedToRunSystemMonitoringTools = null, $allowedToSpecifyReprintReason = null, $allowedToTakeOverOrReleaseSeats = null, $canEditTicketFaceConfig = null, $exposeHospitality = null, $exposePartiallyAvailableSubFilter = null)
    {
        $this
            ->setAllowedToAccessPaymentAdvanceConfiguration($allowedToAccessPaymentAdvanceConfiguration)
            ->setAllowedToCustomizeTheMasterProfile($allowedToCustomizeTheMasterProfile)
            ->setAllowedToCustomizeUserProfiles($allowedToCustomizeUserProfiles)
            ->setAllowedToEditItemsPMs($allowedToEditItemsPMs)
            ->setAllowedToEditItemsPrice($allowedToEditItemsPrice)
            ->setAllowedToExtendMembershipPeriod($allowedToExtendMembershipPeriod)
            ->setAllowedToIssueComplimentary($allowedToIssueComplimentary)
            ->setAllowedToManageSeatAttributes($allowedToManageSeatAttributes)
            ->setAllowedToMoveAudience($allowedToMoveAudience)
            ->setAllowedToOperateExportImportEvent($allowedToOperateExportImportEvent)
            ->setAllowedToOperateMoveMoney($allowedToOperateMoveMoney)
            ->setAllowedToOperateUnderDiffOrgUnit($allowedToOperateUnderDiffOrgUnit)
            ->setAllowedToReviewPaymentSessionCompletionProblem($allowedToReviewPaymentSessionCompletionProblem)
            ->setAllowedToRunSystemMonitoringTools($allowedToRunSystemMonitoringTools)
            ->setAllowedToSpecifyReprintReason($allowedToSpecifyReprintReason)
            ->setAllowedToTakeOverOrReleaseSeats($allowedToTakeOverOrReleaseSeats)
            ->setCanEditTicketFaceConfig($canEditTicketFaceConfig)
            ->setExposeHospitality($exposeHospitality)
            ->setExposePartiallyAvailableSubFilter($exposePartiallyAvailableSubFilter);
    }
    /**
     * Get AllowedToAccessPaymentAdvanceConfiguration 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 getAllowedToAccessPaymentAdvanceConfiguration()
    {
        return isset($this->AllowedToAccessPaymentAdvanceConfiguration) ? $this->AllowedToAccessPaymentAdvanceConfiguration : null;
    }
    /**
     * Set AllowedToAccessPaymentAdvanceConfiguration 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 $allowedToAccessPaymentAdvanceConfiguration
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToAccessPaymentAdvanceConfiguration($allowedToAccessPaymentAdvanceConfiguration = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToAccessPaymentAdvanceConfiguration) && !is_bool($allowedToAccessPaymentAdvanceConfiguration)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToAccessPaymentAdvanceConfiguration, true), gettype($allowedToAccessPaymentAdvanceConfiguration)), __LINE__);
        }
        if (is_null($allowedToAccessPaymentAdvanceConfiguration) || (is_array($allowedToAccessPaymentAdvanceConfiguration) && empty($allowedToAccessPaymentAdvanceConfiguration))) {
            unset($this->AllowedToAccessPaymentAdvanceConfiguration);
        } else {
            $this->AllowedToAccessPaymentAdvanceConfiguration = $allowedToAccessPaymentAdvanceConfiguration;
        }
        return $this;
    }
    /**
     * Get AllowedToCustomizeTheMasterProfile 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 getAllowedToCustomizeTheMasterProfile()
    {
        return isset($this->AllowedToCustomizeTheMasterProfile) ? $this->AllowedToCustomizeTheMasterProfile : null;
    }
    /**
     * Set AllowedToCustomizeTheMasterProfile 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 $allowedToCustomizeTheMasterProfile
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToCustomizeTheMasterProfile($allowedToCustomizeTheMasterProfile = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToCustomizeTheMasterProfile) && !is_bool($allowedToCustomizeTheMasterProfile)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToCustomizeTheMasterProfile, true), gettype($allowedToCustomizeTheMasterProfile)), __LINE__);
        }
        if (is_null($allowedToCustomizeTheMasterProfile) || (is_array($allowedToCustomizeTheMasterProfile) && empty($allowedToCustomizeTheMasterProfile))) {
            unset($this->AllowedToCustomizeTheMasterProfile);
        } else {
            $this->AllowedToCustomizeTheMasterProfile = $allowedToCustomizeTheMasterProfile;
        }
        return $this;
    }
    /**
     * Get AllowedToCustomizeUserProfiles 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 getAllowedToCustomizeUserProfiles()
    {
        return isset($this->AllowedToCustomizeUserProfiles) ? $this->AllowedToCustomizeUserProfiles : null;
    }
    /**
     * Set AllowedToCustomizeUserProfiles 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 $allowedToCustomizeUserProfiles
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToCustomizeUserProfiles($allowedToCustomizeUserProfiles = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToCustomizeUserProfiles) && !is_bool($allowedToCustomizeUserProfiles)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToCustomizeUserProfiles, true), gettype($allowedToCustomizeUserProfiles)), __LINE__);
        }
        if (is_null($allowedToCustomizeUserProfiles) || (is_array($allowedToCustomizeUserProfiles) && empty($allowedToCustomizeUserProfiles))) {
            unset($this->AllowedToCustomizeUserProfiles);
        } else {
            $this->AllowedToCustomizeUserProfiles = $allowedToCustomizeUserProfiles;
        }
        return $this;
    }
    /**
     * Get AllowedToEditItemsPMs 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 getAllowedToEditItemsPMs()
    {
        return isset($this->AllowedToEditItemsPMs) ? $this->AllowedToEditItemsPMs : null;
    }
    /**
     * Set AllowedToEditItemsPMs 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 $allowedToEditItemsPMs
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToEditItemsPMs($allowedToEditItemsPMs = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToEditItemsPMs) && !is_bool($allowedToEditItemsPMs)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToEditItemsPMs, true), gettype($allowedToEditItemsPMs)), __LINE__);
        }
        if (is_null($allowedToEditItemsPMs) || (is_array($allowedToEditItemsPMs) && empty($allowedToEditItemsPMs))) {
            unset($this->AllowedToEditItemsPMs);
        } else {
            $this->AllowedToEditItemsPMs = $allowedToEditItemsPMs;
        }
        return $this;
    }
    /**
     * Get AllowedToEditItemsPrice 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 getAllowedToEditItemsPrice()
    {
        return isset($this->AllowedToEditItemsPrice) ? $this->AllowedToEditItemsPrice : null;
    }
    /**
     * Set AllowedToEditItemsPrice 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 $allowedToEditItemsPrice
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToEditItemsPrice($allowedToEditItemsPrice = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToEditItemsPrice) && !is_bool($allowedToEditItemsPrice)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToEditItemsPrice, true), gettype($allowedToEditItemsPrice)), __LINE__);
        }
        if (is_null($allowedToEditItemsPrice) || (is_array($allowedToEditItemsPrice) && empty($allowedToEditItemsPrice))) {
            unset($this->AllowedToEditItemsPrice);
        } else {
            $this->AllowedToEditItemsPrice = $allowedToEditItemsPrice;
        }
        return $this;
    }
    /**
     * Get AllowedToExtendMembershipPeriod 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 getAllowedToExtendMembershipPeriod()
    {
        return isset($this->AllowedToExtendMembershipPeriod) ? $this->AllowedToExtendMembershipPeriod : null;
    }
    /**
     * Set AllowedToExtendMembershipPeriod 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 $allowedToExtendMembershipPeriod
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToExtendMembershipPeriod($allowedToExtendMembershipPeriod = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToExtendMembershipPeriod) && !is_bool($allowedToExtendMembershipPeriod)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToExtendMembershipPeriod, true), gettype($allowedToExtendMembershipPeriod)), __LINE__);
        }
        if (is_null($allowedToExtendMembershipPeriod) || (is_array($allowedToExtendMembershipPeriod) && empty($allowedToExtendMembershipPeriod))) {
            unset($this->AllowedToExtendMembershipPeriod);
        } else {
            $this->AllowedToExtendMembershipPeriod = $allowedToExtendMembershipPeriod;
        }
        return $this;
    }
    /**
     * Get AllowedToIssueComplimentary 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 getAllowedToIssueComplimentary()
    {
        return isset($this->AllowedToIssueComplimentary) ? $this->AllowedToIssueComplimentary : null;
    }
    /**
     * Set AllowedToIssueComplimentary 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 $allowedToIssueComplimentary
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToIssueComplimentary($allowedToIssueComplimentary = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToIssueComplimentary) && !is_bool($allowedToIssueComplimentary)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToIssueComplimentary, true), gettype($allowedToIssueComplimentary)), __LINE__);
        }
        if (is_null($allowedToIssueComplimentary) || (is_array($allowedToIssueComplimentary) && empty($allowedToIssueComplimentary))) {
            unset($this->AllowedToIssueComplimentary);
        } else {
            $this->AllowedToIssueComplimentary = $allowedToIssueComplimentary;
        }
        return $this;
    }
    /**
     * Get AllowedToManageSeatAttributes 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 getAllowedToManageSeatAttributes()
    {
        return isset($this->AllowedToManageSeatAttributes) ? $this->AllowedToManageSeatAttributes : null;
    }
    /**
     * Set AllowedToManageSeatAttributes 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 $allowedToManageSeatAttributes
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToManageSeatAttributes($allowedToManageSeatAttributes = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToManageSeatAttributes) && !is_bool($allowedToManageSeatAttributes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToManageSeatAttributes, true), gettype($allowedToManageSeatAttributes)), __LINE__);
        }
        if (is_null($allowedToManageSeatAttributes) || (is_array($allowedToManageSeatAttributes) && empty($allowedToManageSeatAttributes))) {
            unset($this->AllowedToManageSeatAttributes);
        } else {
            $this->AllowedToManageSeatAttributes = $allowedToManageSeatAttributes;
        }
        return $this;
    }
    /**
     * Get AllowedToMoveAudience 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 getAllowedToMoveAudience()
    {
        return isset($this->AllowedToMoveAudience) ? $this->AllowedToMoveAudience : null;
    }
    /**
     * Set AllowedToMoveAudience 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 $allowedToMoveAudience
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToMoveAudience($allowedToMoveAudience = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToMoveAudience) && !is_bool($allowedToMoveAudience)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToMoveAudience, true), gettype($allowedToMoveAudience)), __LINE__);
        }
        if (is_null($allowedToMoveAudience) || (is_array($allowedToMoveAudience) && empty($allowedToMoveAudience))) {
            unset($this->AllowedToMoveAudience);
        } else {
            $this->AllowedToMoveAudience = $allowedToMoveAudience;
        }
        return $this;
    }
    /**
     * Get AllowedToOperateExportImportEvent 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 getAllowedToOperateExportImportEvent()
    {
        return isset($this->AllowedToOperateExportImportEvent) ? $this->AllowedToOperateExportImportEvent : null;
    }
    /**
     * Set AllowedToOperateExportImportEvent 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 $allowedToOperateExportImportEvent
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToOperateExportImportEvent($allowedToOperateExportImportEvent = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToOperateExportImportEvent) && !is_bool($allowedToOperateExportImportEvent)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToOperateExportImportEvent, true), gettype($allowedToOperateExportImportEvent)), __LINE__);
        }
        if (is_null($allowedToOperateExportImportEvent) || (is_array($allowedToOperateExportImportEvent) && empty($allowedToOperateExportImportEvent))) {
            unset($this->AllowedToOperateExportImportEvent);
        } else {
            $this->AllowedToOperateExportImportEvent = $allowedToOperateExportImportEvent;
        }
        return $this;
    }
    /**
     * Get AllowedToOperateMoveMoney 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 getAllowedToOperateMoveMoney()
    {
        return isset($this->AllowedToOperateMoveMoney) ? $this->AllowedToOperateMoveMoney : null;
    }
    /**
     * Set AllowedToOperateMoveMoney 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 $allowedToOperateMoveMoney
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToOperateMoveMoney($allowedToOperateMoveMoney = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToOperateMoveMoney) && !is_bool($allowedToOperateMoveMoney)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToOperateMoveMoney, true), gettype($allowedToOperateMoveMoney)), __LINE__);
        }
        if (is_null($allowedToOperateMoveMoney) || (is_array($allowedToOperateMoveMoney) && empty($allowedToOperateMoveMoney))) {
            unset($this->AllowedToOperateMoveMoney);
        } else {
            $this->AllowedToOperateMoveMoney = $allowedToOperateMoveMoney;
        }
        return $this;
    }
    /**
     * Get AllowedToOperateUnderDiffOrgUnit 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 getAllowedToOperateUnderDiffOrgUnit()
    {
        return isset($this->AllowedToOperateUnderDiffOrgUnit) ? $this->AllowedToOperateUnderDiffOrgUnit : null;
    }
    /**
     * Set AllowedToOperateUnderDiffOrgUnit 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 $allowedToOperateUnderDiffOrgUnit
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToOperateUnderDiffOrgUnit($allowedToOperateUnderDiffOrgUnit = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToOperateUnderDiffOrgUnit) && !is_bool($allowedToOperateUnderDiffOrgUnit)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToOperateUnderDiffOrgUnit, true), gettype($allowedToOperateUnderDiffOrgUnit)), __LINE__);
        }
        if (is_null($allowedToOperateUnderDiffOrgUnit) || (is_array($allowedToOperateUnderDiffOrgUnit) && empty($allowedToOperateUnderDiffOrgUnit))) {
            unset($this->AllowedToOperateUnderDiffOrgUnit);
        } else {
            $this->AllowedToOperateUnderDiffOrgUnit = $allowedToOperateUnderDiffOrgUnit;
        }
        return $this;
    }
    /**
     * Get AllowedToReviewPaymentSessionCompletionProblem 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 getAllowedToReviewPaymentSessionCompletionProblem()
    {
        return isset($this->AllowedToReviewPaymentSessionCompletionProblem) ? $this->AllowedToReviewPaymentSessionCompletionProblem : null;
    }
    /**
     * Set AllowedToReviewPaymentSessionCompletionProblem 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 $allowedToReviewPaymentSessionCompletionProblem
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToReviewPaymentSessionCompletionProblem($allowedToReviewPaymentSessionCompletionProblem = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToReviewPaymentSessionCompletionProblem) && !is_bool($allowedToReviewPaymentSessionCompletionProblem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToReviewPaymentSessionCompletionProblem, true), gettype($allowedToReviewPaymentSessionCompletionProblem)), __LINE__);
        }
        if (is_null($allowedToReviewPaymentSessionCompletionProblem) || (is_array($allowedToReviewPaymentSessionCompletionProblem) && empty($allowedToReviewPaymentSessionCompletionProblem))) {
            unset($this->AllowedToReviewPaymentSessionCompletionProblem);
        } else {
            $this->AllowedToReviewPaymentSessionCompletionProblem = $allowedToReviewPaymentSessionCompletionProblem;
        }
        return $this;
    }
    /**
     * Get AllowedToRunSystemMonitoringTools 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 getAllowedToRunSystemMonitoringTools()
    {
        return isset($this->AllowedToRunSystemMonitoringTools) ? $this->AllowedToRunSystemMonitoringTools : null;
    }
    /**
     * Set AllowedToRunSystemMonitoringTools 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 $allowedToRunSystemMonitoringTools
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToRunSystemMonitoringTools($allowedToRunSystemMonitoringTools = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToRunSystemMonitoringTools) && !is_bool($allowedToRunSystemMonitoringTools)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToRunSystemMonitoringTools, true), gettype($allowedToRunSystemMonitoringTools)), __LINE__);
        }
        if (is_null($allowedToRunSystemMonitoringTools) || (is_array($allowedToRunSystemMonitoringTools) && empty($allowedToRunSystemMonitoringTools))) {
            unset($this->AllowedToRunSystemMonitoringTools);
        } else {
            $this->AllowedToRunSystemMonitoringTools = $allowedToRunSystemMonitoringTools;
        }
        return $this;
    }
    /**
     * Get AllowedToSpecifyReprintReason 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 getAllowedToSpecifyReprintReason()
    {
        return isset($this->AllowedToSpecifyReprintReason) ? $this->AllowedToSpecifyReprintReason : null;
    }
    /**
     * Set AllowedToSpecifyReprintReason 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 $allowedToSpecifyReprintReason
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToSpecifyReprintReason($allowedToSpecifyReprintReason = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToSpecifyReprintReason) && !is_bool($allowedToSpecifyReprintReason)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToSpecifyReprintReason, true), gettype($allowedToSpecifyReprintReason)), __LINE__);
        }
        if (is_null($allowedToSpecifyReprintReason) || (is_array($allowedToSpecifyReprintReason) && empty($allowedToSpecifyReprintReason))) {
            unset($this->AllowedToSpecifyReprintReason);
        } else {
            $this->AllowedToSpecifyReprintReason = $allowedToSpecifyReprintReason;
        }
        return $this;
    }
    /**
     * Get AllowedToTakeOverOrReleaseSeats 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 getAllowedToTakeOverOrReleaseSeats()
    {
        return isset($this->AllowedToTakeOverOrReleaseSeats) ? $this->AllowedToTakeOverOrReleaseSeats : null;
    }
    /**
     * Set AllowedToTakeOverOrReleaseSeats 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 $allowedToTakeOverOrReleaseSeats
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setAllowedToTakeOverOrReleaseSeats($allowedToTakeOverOrReleaseSeats = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowedToTakeOverOrReleaseSeats) && !is_bool($allowedToTakeOverOrReleaseSeats)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowedToTakeOverOrReleaseSeats, true), gettype($allowedToTakeOverOrReleaseSeats)), __LINE__);
        }
        if (is_null($allowedToTakeOverOrReleaseSeats) || (is_array($allowedToTakeOverOrReleaseSeats) && empty($allowedToTakeOverOrReleaseSeats))) {
            unset($this->AllowedToTakeOverOrReleaseSeats);
        } else {
            $this->AllowedToTakeOverOrReleaseSeats = $allowedToTakeOverOrReleaseSeats;
        }
        return $this;
    }
    /**
     * Get CanEditTicketFaceConfig 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 getCanEditTicketFaceConfig()
    {
        return isset($this->CanEditTicketFaceConfig) ? $this->CanEditTicketFaceConfig : null;
    }
    /**
     * Set CanEditTicketFaceConfig 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 $canEditTicketFaceConfig
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setCanEditTicketFaceConfig($canEditTicketFaceConfig = null)
    {
        // validation for constraint: boolean
        if (!is_null($canEditTicketFaceConfig) && !is_bool($canEditTicketFaceConfig)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($canEditTicketFaceConfig, true), gettype($canEditTicketFaceConfig)), __LINE__);
        }
        if (is_null($canEditTicketFaceConfig) || (is_array($canEditTicketFaceConfig) && empty($canEditTicketFaceConfig))) {
            unset($this->CanEditTicketFaceConfig);
        } else {
            $this->CanEditTicketFaceConfig = $canEditTicketFaceConfig;
        }
        return $this;
    }
    /**
     * Get ExposeHospitality 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 getExposeHospitality()
    {
        return isset($this->ExposeHospitality) ? $this->ExposeHospitality : null;
    }
    /**
     * Set ExposeHospitality 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 $exposeHospitality
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setExposeHospitality($exposeHospitality = null)
    {
        // validation for constraint: boolean
        if (!is_null($exposeHospitality) && !is_bool($exposeHospitality)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($exposeHospitality, true), gettype($exposeHospitality)), __LINE__);
        }
        if (is_null($exposeHospitality) || (is_array($exposeHospitality) && empty($exposeHospitality))) {
            unset($this->ExposeHospitality);
        } else {
            $this->ExposeHospitality = $exposeHospitality;
        }
        return $this;
    }
    /**
     * Get ExposePartiallyAvailableSubFilter 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 getExposePartiallyAvailableSubFilter()
    {
        return isset($this->ExposePartiallyAvailableSubFilter) ? $this->ExposePartiallyAvailableSubFilter : null;
    }
    /**
     * Set ExposePartiallyAvailableSubFilter 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 $exposePartiallyAvailableSubFilter
     * @return \patest\StructType\Security_UserPermissions
     */
    public function setExposePartiallyAvailableSubFilter($exposePartiallyAvailableSubFilter = null)
    {
        // validation for constraint: boolean
        if (!is_null($exposePartiallyAvailableSubFilter) && !is_bool($exposePartiallyAvailableSubFilter)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($exposePartiallyAvailableSubFilter, true), gettype($exposePartiallyAvailableSubFilter)), __LINE__);
        }
        if (is_null($exposePartiallyAvailableSubFilter) || (is_array($exposePartiallyAvailableSubFilter) && empty($exposePartiallyAvailableSubFilter))) {
            unset($this->ExposePartiallyAvailableSubFilter);
        } else {
            $this->ExposePartiallyAvailableSubFilter = $exposePartiallyAvailableSubFilter;
        }
        return $this;
    }
}
