<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MseSubsidiarySearchRowBasic StructType
 * @subpackage Structs
 */
class MseSubsidiarySearchRowBasic extends SearchRowBasic
{
    /**
     * The accountingBook
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBook;
    /**
     * The accountingBookCurrency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBookCurrency;
    /**
     * The address1
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $address1;
    /**
     * The address2
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $address2;
    /**
     * The address3
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $address3;
    /**
     * The anonymousCustomerInboundEmail
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $anonymousCustomerInboundEmail;
    /**
     * The anonymousCustomerOnlineForms
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $anonymousCustomerOnlineForms;
    /**
     * The caseAssignmentTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseAssignmentTemplate;
    /**
     * The caseAutomaticClosureTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseAutomaticClosureTemplate;
    /**
     * The caseCopyEmployeeTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseCopyEmployeeTemplate;
    /**
     * The caseCreationTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseCreationTemplate;
    /**
     * The caseEscalationTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseEscalationTemplate;
    /**
     * The caseUpdateTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $caseUpdateTemplate;
    /**
     * The city
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $city;
    /**
     * The companyNameForSupportMessages
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $companyNameForSupportMessages;
    /**
     * The country
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $country;
    /**
     * The currency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $currency;
    /**
     * The effectiveFrom
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $effectiveFrom;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $email;
    /**
     * The employeeCaseUpdateTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $employeeCaseUpdateTemplate;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The fax
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $fax;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isElimination
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isElimination;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isInactive;
    /**
     * The legalName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $legalName;
    /**
     * The mainSupportEmailAddress
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $mainSupportEmailAddress;
    /**
     * The name
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $name;
    /**
     * The nameNoHierarchy
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $nameNoHierarchy;
    /**
     * The nexus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $nexus;
    /**
     * The phone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $phone;
    /**
     * The primary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $primary;
    /**
     * The purchaseOrderAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderAmount;
    /**
     * The purchaseOrderQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderQuantity;
    /**
     * The purchaseOrderQuantityDiff
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderQuantityDiff;
    /**
     * The receiptAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptAmount;
    /**
     * The receiptQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptQuantity;
    /**
     * The receiptQuantityDiff
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptQuantityDiff;
    /**
     * The state
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $state;
    /**
     * The taxEngine
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $taxEngine;
    /**
     * The taxIdNum
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $taxIdNum;
    /**
     * The taxRegistrationNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $taxRegistrationNumber;
    /**
     * The tranPrefix
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $tranPrefix;
    /**
     * The url
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $url;
    /**
     * The validUntil
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $validUntil;
    /**
     * The zip
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $zip;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for MseSubsidiarySearchRowBasic
     * @uses MseSubsidiarySearchRowBasic::setAccountingBook()
     * @uses MseSubsidiarySearchRowBasic::setAccountingBookCurrency()
     * @uses MseSubsidiarySearchRowBasic::setAddress1()
     * @uses MseSubsidiarySearchRowBasic::setAddress2()
     * @uses MseSubsidiarySearchRowBasic::setAddress3()
     * @uses MseSubsidiarySearchRowBasic::setAnonymousCustomerInboundEmail()
     * @uses MseSubsidiarySearchRowBasic::setAnonymousCustomerOnlineForms()
     * @uses MseSubsidiarySearchRowBasic::setCaseAssignmentTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCaseAutomaticClosureTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCaseCopyEmployeeTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCaseCreationTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCaseEscalationTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCaseUpdateTemplate()
     * @uses MseSubsidiarySearchRowBasic::setCity()
     * @uses MseSubsidiarySearchRowBasic::setCompanyNameForSupportMessages()
     * @uses MseSubsidiarySearchRowBasic::setCountry()
     * @uses MseSubsidiarySearchRowBasic::setCurrency()
     * @uses MseSubsidiarySearchRowBasic::setEffectiveFrom()
     * @uses MseSubsidiarySearchRowBasic::setEmail()
     * @uses MseSubsidiarySearchRowBasic::setEmployeeCaseUpdateTemplate()
     * @uses MseSubsidiarySearchRowBasic::setExternalId()
     * @uses MseSubsidiarySearchRowBasic::setFax()
     * @uses MseSubsidiarySearchRowBasic::setInternalId()
     * @uses MseSubsidiarySearchRowBasic::setIsElimination()
     * @uses MseSubsidiarySearchRowBasic::setIsInactive()
     * @uses MseSubsidiarySearchRowBasic::setLegalName()
     * @uses MseSubsidiarySearchRowBasic::setMainSupportEmailAddress()
     * @uses MseSubsidiarySearchRowBasic::setName()
     * @uses MseSubsidiarySearchRowBasic::setNameNoHierarchy()
     * @uses MseSubsidiarySearchRowBasic::setNexus()
     * @uses MseSubsidiarySearchRowBasic::setPhone()
     * @uses MseSubsidiarySearchRowBasic::setPrimary()
     * @uses MseSubsidiarySearchRowBasic::setPurchaseOrderAmount()
     * @uses MseSubsidiarySearchRowBasic::setPurchaseOrderQuantity()
     * @uses MseSubsidiarySearchRowBasic::setPurchaseOrderQuantityDiff()
     * @uses MseSubsidiarySearchRowBasic::setReceiptAmount()
     * @uses MseSubsidiarySearchRowBasic::setReceiptQuantity()
     * @uses MseSubsidiarySearchRowBasic::setReceiptQuantityDiff()
     * @uses MseSubsidiarySearchRowBasic::setState()
     * @uses MseSubsidiarySearchRowBasic::setTaxEngine()
     * @uses MseSubsidiarySearchRowBasic::setTaxIdNum()
     * @uses MseSubsidiarySearchRowBasic::setTaxRegistrationNumber()
     * @uses MseSubsidiarySearchRowBasic::setTranPrefix()
     * @uses MseSubsidiarySearchRowBasic::setUrl()
     * @uses MseSubsidiarySearchRowBasic::setValidUntil()
     * @uses MseSubsidiarySearchRowBasic::setZip()
     * @uses MseSubsidiarySearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @param \StructType\SearchColumnSelectField[] $accountingBookCurrency
     * @param \StructType\SearchColumnStringField[] $address1
     * @param \StructType\SearchColumnStringField[] $address2
     * @param \StructType\SearchColumnStringField[] $address3
     * @param \StructType\SearchColumnStringField[] $anonymousCustomerInboundEmail
     * @param \StructType\SearchColumnStringField[] $anonymousCustomerOnlineForms
     * @param \StructType\SearchColumnStringField[] $caseAssignmentTemplate
     * @param \StructType\SearchColumnStringField[] $caseAutomaticClosureTemplate
     * @param \StructType\SearchColumnStringField[] $caseCopyEmployeeTemplate
     * @param \StructType\SearchColumnStringField[] $caseCreationTemplate
     * @param \StructType\SearchColumnStringField[] $caseEscalationTemplate
     * @param \StructType\SearchColumnStringField[] $caseUpdateTemplate
     * @param \StructType\SearchColumnStringField[] $city
     * @param \StructType\SearchColumnStringField[] $companyNameForSupportMessages
     * @param \StructType\SearchColumnEnumSelectField[] $country
     * @param \StructType\SearchColumnSelectField[] $currency
     * @param \StructType\SearchColumnDateField[] $effectiveFrom
     * @param \StructType\SearchColumnStringField[] $email
     * @param \StructType\SearchColumnStringField[] $employeeCaseUpdateTemplate
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $fax
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isElimination
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnStringField[] $legalName
     * @param \StructType\SearchColumnStringField[] $mainSupportEmailAddress
     * @param \StructType\SearchColumnStringField[] $name
     * @param \StructType\SearchColumnStringField[] $nameNoHierarchy
     * @param \StructType\SearchColumnSelectField[] $nexus
     * @param \StructType\SearchColumnStringField[] $phone
     * @param \StructType\SearchColumnBooleanField[] $primary
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderAmount
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantity
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantityDiff
     * @param \StructType\SearchColumnDoubleField[] $receiptAmount
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantity
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantityDiff
     * @param \StructType\SearchColumnStringField[] $state
     * @param \StructType\SearchColumnSelectField[] $taxEngine
     * @param \StructType\SearchColumnStringField[] $taxIdNum
     * @param \StructType\SearchColumnStringField[] $taxRegistrationNumber
     * @param \StructType\SearchColumnStringField[] $tranPrefix
     * @param \StructType\SearchColumnStringField[] $url
     * @param \StructType\SearchColumnDateField[] $validUntil
     * @param \StructType\SearchColumnStringField[] $zip
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $accountingBook = array(), array $accountingBookCurrency = array(), array $address1 = array(), array $address2 = array(), array $address3 = array(), array $anonymousCustomerInboundEmail = array(), array $anonymousCustomerOnlineForms = array(), array $caseAssignmentTemplate = array(), array $caseAutomaticClosureTemplate = array(), array $caseCopyEmployeeTemplate = array(), array $caseCreationTemplate = array(), array $caseEscalationTemplate = array(), array $caseUpdateTemplate = array(), array $city = array(), array $companyNameForSupportMessages = array(), array $country = array(), array $currency = array(), array $effectiveFrom = array(), array $email = array(), array $employeeCaseUpdateTemplate = array(), array $externalId = array(), array $fax = array(), array $internalId = array(), array $isElimination = array(), array $isInactive = array(), array $legalName = array(), array $mainSupportEmailAddress = array(), array $name = array(), array $nameNoHierarchy = array(), array $nexus = array(), array $phone = array(), array $primary = array(), array $purchaseOrderAmount = array(), array $purchaseOrderQuantity = array(), array $purchaseOrderQuantityDiff = array(), array $receiptAmount = array(), array $receiptQuantity = array(), array $receiptQuantityDiff = array(), array $state = array(), array $taxEngine = array(), array $taxIdNum = array(), array $taxRegistrationNumber = array(), array $tranPrefix = array(), array $url = array(), array $validUntil = array(), array $zip = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAccountingBook($accountingBook)
            ->setAccountingBookCurrency($accountingBookCurrency)
            ->setAddress1($address1)
            ->setAddress2($address2)
            ->setAddress3($address3)
            ->setAnonymousCustomerInboundEmail($anonymousCustomerInboundEmail)
            ->setAnonymousCustomerOnlineForms($anonymousCustomerOnlineForms)
            ->setCaseAssignmentTemplate($caseAssignmentTemplate)
            ->setCaseAutomaticClosureTemplate($caseAutomaticClosureTemplate)
            ->setCaseCopyEmployeeTemplate($caseCopyEmployeeTemplate)
            ->setCaseCreationTemplate($caseCreationTemplate)
            ->setCaseEscalationTemplate($caseEscalationTemplate)
            ->setCaseUpdateTemplate($caseUpdateTemplate)
            ->setCity($city)
            ->setCompanyNameForSupportMessages($companyNameForSupportMessages)
            ->setCountry($country)
            ->setCurrency($currency)
            ->setEffectiveFrom($effectiveFrom)
            ->setEmail($email)
            ->setEmployeeCaseUpdateTemplate($employeeCaseUpdateTemplate)
            ->setExternalId($externalId)
            ->setFax($fax)
            ->setInternalId($internalId)
            ->setIsElimination($isElimination)
            ->setIsInactive($isInactive)
            ->setLegalName($legalName)
            ->setMainSupportEmailAddress($mainSupportEmailAddress)
            ->setName($name)
            ->setNameNoHierarchy($nameNoHierarchy)
            ->setNexus($nexus)
            ->setPhone($phone)
            ->setPrimary($primary)
            ->setPurchaseOrderAmount($purchaseOrderAmount)
            ->setPurchaseOrderQuantity($purchaseOrderQuantity)
            ->setPurchaseOrderQuantityDiff($purchaseOrderQuantityDiff)
            ->setReceiptAmount($receiptAmount)
            ->setReceiptQuantity($receiptQuantity)
            ->setReceiptQuantityDiff($receiptQuantityDiff)
            ->setState($state)
            ->setTaxEngine($taxEngine)
            ->setTaxIdNum($taxIdNum)
            ->setTaxRegistrationNumber($taxRegistrationNumber)
            ->setTranPrefix($tranPrefix)
            ->setUrl($url)
            ->setValidUntil($validUntil)
            ->setZip($zip)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get accountingBook value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBook()
    {
        return $this->accountingBook;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBook method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBook method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookForArrayConstraintsFromSetAccountingBook(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAccountingBookItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAccountingBookItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAccountingBookItem) ? get_class($mseSubsidiarySearchRowBasicAccountingBookItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAccountingBookItem), var_export($mseSubsidiarySearchRowBasicAccountingBookItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAccountingBook(array $accountingBook = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookArrayErrorMessage = self::validateAccountingBookForArrayConstraintsFromSetAccountingBook($accountingBook))) {
            throw new \InvalidArgumentException($accountingBookArrayErrorMessage, __LINE__);
        }
        $this->accountingBook = $accountingBook;
        return $this;
    }
    /**
     * Add item to accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAccountingBook(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->accountingBook[] = $item;
        return $this;
    }
    /**
     * Get accountingBookCurrency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBookCurrency()
    {
        return $this->accountingBookCurrency;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBookCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBookCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookCurrencyForArrayConstraintsFromSetAccountingBookCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAccountingBookCurrencyItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAccountingBookCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAccountingBookCurrencyItem) ? get_class($mseSubsidiarySearchRowBasicAccountingBookCurrencyItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAccountingBookCurrencyItem), var_export($mseSubsidiarySearchRowBasicAccountingBookCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBookCurrency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set accountingBookCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBookCurrency
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAccountingBookCurrency(array $accountingBookCurrency = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookCurrencyArrayErrorMessage = self::validateAccountingBookCurrencyForArrayConstraintsFromSetAccountingBookCurrency($accountingBookCurrency))) {
            throw new \InvalidArgumentException($accountingBookCurrencyArrayErrorMessage, __LINE__);
        }
        $this->accountingBookCurrency = $accountingBookCurrency;
        return $this;
    }
    /**
     * Add item to accountingBookCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAccountingBookCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBookCurrency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->accountingBookCurrency[] = $item;
        return $this;
    }
    /**
     * Get address1 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddress1()
    {
        return $this->address1;
    }
    /**
     * This method is responsible for validating the values passed to the setAddress1 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddress1 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddress1ForArrayConstraintsFromSetAddress1(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAddress1Item) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAddress1Item) ? get_class($mseSubsidiarySearchRowBasicAddress1Item) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAddress1Item), var_export($mseSubsidiarySearchRowBasicAddress1Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The address1 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set address1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $address1
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAddress1(array $address1 = array())
    {
        // validation for constraint: array
        if ('' !== ($address1ArrayErrorMessage = self::validateAddress1ForArrayConstraintsFromSetAddress1($address1))) {
            throw new \InvalidArgumentException($address1ArrayErrorMessage, __LINE__);
        }
        $this->address1 = $address1;
        return $this;
    }
    /**
     * Add item to address1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAddress1(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The address1 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->address1[] = $item;
        return $this;
    }
    /**
     * Get address2 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddress2()
    {
        return $this->address2;
    }
    /**
     * This method is responsible for validating the values passed to the setAddress2 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddress2 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddress2ForArrayConstraintsFromSetAddress2(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAddress2Item) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAddress2Item) ? get_class($mseSubsidiarySearchRowBasicAddress2Item) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAddress2Item), var_export($mseSubsidiarySearchRowBasicAddress2Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The address2 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set address2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $address2
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAddress2(array $address2 = array())
    {
        // validation for constraint: array
        if ('' !== ($address2ArrayErrorMessage = self::validateAddress2ForArrayConstraintsFromSetAddress2($address2))) {
            throw new \InvalidArgumentException($address2ArrayErrorMessage, __LINE__);
        }
        $this->address2 = $address2;
        return $this;
    }
    /**
     * Add item to address2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAddress2(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The address2 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->address2[] = $item;
        return $this;
    }
    /**
     * Get address3 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddress3()
    {
        return $this->address3;
    }
    /**
     * This method is responsible for validating the values passed to the setAddress3 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddress3 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddress3ForArrayConstraintsFromSetAddress3(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAddress3Item) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAddress3Item) ? get_class($mseSubsidiarySearchRowBasicAddress3Item) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAddress3Item), var_export($mseSubsidiarySearchRowBasicAddress3Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The address3 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set address3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $address3
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAddress3(array $address3 = array())
    {
        // validation for constraint: array
        if ('' !== ($address3ArrayErrorMessage = self::validateAddress3ForArrayConstraintsFromSetAddress3($address3))) {
            throw new \InvalidArgumentException($address3ArrayErrorMessage, __LINE__);
        }
        $this->address3 = $address3;
        return $this;
    }
    /**
     * Add item to address3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAddress3(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The address3 property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->address3[] = $item;
        return $this;
    }
    /**
     * Get anonymousCustomerInboundEmail value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAnonymousCustomerInboundEmail()
    {
        return $this->anonymousCustomerInboundEmail;
    }
    /**
     * This method is responsible for validating the values passed to the setAnonymousCustomerInboundEmail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAnonymousCustomerInboundEmail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAnonymousCustomerInboundEmailForArrayConstraintsFromSetAnonymousCustomerInboundEmail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem) ? get_class($mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem), var_export($mseSubsidiarySearchRowBasicAnonymousCustomerInboundEmailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The anonymousCustomerInboundEmail property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set anonymousCustomerInboundEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $anonymousCustomerInboundEmail
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAnonymousCustomerInboundEmail(array $anonymousCustomerInboundEmail = array())
    {
        // validation for constraint: array
        if ('' !== ($anonymousCustomerInboundEmailArrayErrorMessage = self::validateAnonymousCustomerInboundEmailForArrayConstraintsFromSetAnonymousCustomerInboundEmail($anonymousCustomerInboundEmail))) {
            throw new \InvalidArgumentException($anonymousCustomerInboundEmailArrayErrorMessage, __LINE__);
        }
        $this->anonymousCustomerInboundEmail = $anonymousCustomerInboundEmail;
        return $this;
    }
    /**
     * Add item to anonymousCustomerInboundEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAnonymousCustomerInboundEmail(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The anonymousCustomerInboundEmail property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->anonymousCustomerInboundEmail[] = $item;
        return $this;
    }
    /**
     * Get anonymousCustomerOnlineForms value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAnonymousCustomerOnlineForms()
    {
        return $this->anonymousCustomerOnlineForms;
    }
    /**
     * This method is responsible for validating the values passed to the setAnonymousCustomerOnlineForms method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAnonymousCustomerOnlineForms method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAnonymousCustomerOnlineFormsForArrayConstraintsFromSetAnonymousCustomerOnlineForms(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem) ? get_class($mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem), var_export($mseSubsidiarySearchRowBasicAnonymousCustomerOnlineFormsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The anonymousCustomerOnlineForms property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set anonymousCustomerOnlineForms value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $anonymousCustomerOnlineForms
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setAnonymousCustomerOnlineForms(array $anonymousCustomerOnlineForms = array())
    {
        // validation for constraint: array
        if ('' !== ($anonymousCustomerOnlineFormsArrayErrorMessage = self::validateAnonymousCustomerOnlineFormsForArrayConstraintsFromSetAnonymousCustomerOnlineForms($anonymousCustomerOnlineForms))) {
            throw new \InvalidArgumentException($anonymousCustomerOnlineFormsArrayErrorMessage, __LINE__);
        }
        $this->anonymousCustomerOnlineForms = $anonymousCustomerOnlineForms;
        return $this;
    }
    /**
     * Add item to anonymousCustomerOnlineForms value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToAnonymousCustomerOnlineForms(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The anonymousCustomerOnlineForms property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->anonymousCustomerOnlineForms[] = $item;
        return $this;
    }
    /**
     * Get caseAssignmentTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseAssignmentTemplate()
    {
        return $this->caseAssignmentTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseAssignmentTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseAssignmentTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseAssignmentTemplateForArrayConstraintsFromSetCaseAssignmentTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseAssignmentTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseAssignmentTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseAssignmentTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseAssignmentTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseAssignmentTemplate(array $caseAssignmentTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseAssignmentTemplateArrayErrorMessage = self::validateCaseAssignmentTemplateForArrayConstraintsFromSetCaseAssignmentTemplate($caseAssignmentTemplate))) {
            throw new \InvalidArgumentException($caseAssignmentTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseAssignmentTemplate = $caseAssignmentTemplate;
        return $this;
    }
    /**
     * Add item to caseAssignmentTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseAssignmentTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseAssignmentTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseAssignmentTemplate[] = $item;
        return $this;
    }
    /**
     * Get caseAutomaticClosureTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseAutomaticClosureTemplate()
    {
        return $this->caseAutomaticClosureTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseAutomaticClosureTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseAutomaticClosureTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseAutomaticClosureTemplateForArrayConstraintsFromSetCaseAutomaticClosureTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseAutomaticClosureTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseAutomaticClosureTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseAutomaticClosureTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseAutomaticClosureTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseAutomaticClosureTemplate(array $caseAutomaticClosureTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseAutomaticClosureTemplateArrayErrorMessage = self::validateCaseAutomaticClosureTemplateForArrayConstraintsFromSetCaseAutomaticClosureTemplate($caseAutomaticClosureTemplate))) {
            throw new \InvalidArgumentException($caseAutomaticClosureTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseAutomaticClosureTemplate = $caseAutomaticClosureTemplate;
        return $this;
    }
    /**
     * Add item to caseAutomaticClosureTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseAutomaticClosureTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseAutomaticClosureTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseAutomaticClosureTemplate[] = $item;
        return $this;
    }
    /**
     * Get caseCopyEmployeeTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseCopyEmployeeTemplate()
    {
        return $this->caseCopyEmployeeTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseCopyEmployeeTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseCopyEmployeeTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseCopyEmployeeTemplateForArrayConstraintsFromSetCaseCopyEmployeeTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseCopyEmployeeTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseCopyEmployeeTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseCopyEmployeeTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseCopyEmployeeTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseCopyEmployeeTemplate(array $caseCopyEmployeeTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseCopyEmployeeTemplateArrayErrorMessage = self::validateCaseCopyEmployeeTemplateForArrayConstraintsFromSetCaseCopyEmployeeTemplate($caseCopyEmployeeTemplate))) {
            throw new \InvalidArgumentException($caseCopyEmployeeTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseCopyEmployeeTemplate = $caseCopyEmployeeTemplate;
        return $this;
    }
    /**
     * Add item to caseCopyEmployeeTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseCopyEmployeeTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseCopyEmployeeTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseCopyEmployeeTemplate[] = $item;
        return $this;
    }
    /**
     * Get caseCreationTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseCreationTemplate()
    {
        return $this->caseCreationTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseCreationTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseCreationTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseCreationTemplateForArrayConstraintsFromSetCaseCreationTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseCreationTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseCreationTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseCreationTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseCreationTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseCreationTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseCreationTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseCreationTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseCreationTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseCreationTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseCreationTemplate(array $caseCreationTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseCreationTemplateArrayErrorMessage = self::validateCaseCreationTemplateForArrayConstraintsFromSetCaseCreationTemplate($caseCreationTemplate))) {
            throw new \InvalidArgumentException($caseCreationTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseCreationTemplate = $caseCreationTemplate;
        return $this;
    }
    /**
     * Add item to caseCreationTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseCreationTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseCreationTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseCreationTemplate[] = $item;
        return $this;
    }
    /**
     * Get caseEscalationTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseEscalationTemplate()
    {
        return $this->caseEscalationTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseEscalationTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseEscalationTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseEscalationTemplateForArrayConstraintsFromSetCaseEscalationTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseEscalationTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseEscalationTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseEscalationTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseEscalationTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseEscalationTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseEscalationTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseEscalationTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseEscalationTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseEscalationTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseEscalationTemplate(array $caseEscalationTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseEscalationTemplateArrayErrorMessage = self::validateCaseEscalationTemplateForArrayConstraintsFromSetCaseEscalationTemplate($caseEscalationTemplate))) {
            throw new \InvalidArgumentException($caseEscalationTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseEscalationTemplate = $caseEscalationTemplate;
        return $this;
    }
    /**
     * Add item to caseEscalationTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseEscalationTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseEscalationTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseEscalationTemplate[] = $item;
        return $this;
    }
    /**
     * Get caseUpdateTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCaseUpdateTemplate()
    {
        return $this->caseUpdateTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setCaseUpdateTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCaseUpdateTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCaseUpdateTemplateForArrayConstraintsFromSetCaseUpdateTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCaseUpdateTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCaseUpdateTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCaseUpdateTemplateItem) ? get_class($mseSubsidiarySearchRowBasicCaseUpdateTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCaseUpdateTemplateItem), var_export($mseSubsidiarySearchRowBasicCaseUpdateTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The caseUpdateTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set caseUpdateTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $caseUpdateTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCaseUpdateTemplate(array $caseUpdateTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($caseUpdateTemplateArrayErrorMessage = self::validateCaseUpdateTemplateForArrayConstraintsFromSetCaseUpdateTemplate($caseUpdateTemplate))) {
            throw new \InvalidArgumentException($caseUpdateTemplateArrayErrorMessage, __LINE__);
        }
        $this->caseUpdateTemplate = $caseUpdateTemplate;
        return $this;
    }
    /**
     * Add item to caseUpdateTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCaseUpdateTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The caseUpdateTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->caseUpdateTemplate[] = $item;
        return $this;
    }
    /**
     * Get city value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCity()
    {
        return $this->city;
    }
    /**
     * This method is responsible for validating the values passed to the setCity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCityForArrayConstraintsFromSetCity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCityItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCityItem) ? get_class($mseSubsidiarySearchRowBasicCityItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCityItem), var_export($mseSubsidiarySearchRowBasicCityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The city property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set city value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $city
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCity(array $city = array())
    {
        // validation for constraint: array
        if ('' !== ($cityArrayErrorMessage = self::validateCityForArrayConstraintsFromSetCity($city))) {
            throw new \InvalidArgumentException($cityArrayErrorMessage, __LINE__);
        }
        $this->city = $city;
        return $this;
    }
    /**
     * Add item to city value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The city property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->city[] = $item;
        return $this;
    }
    /**
     * Get companyNameForSupportMessages value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCompanyNameForSupportMessages()
    {
        return $this->companyNameForSupportMessages;
    }
    /**
     * This method is responsible for validating the values passed to the setCompanyNameForSupportMessages method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompanyNameForSupportMessages method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompanyNameForSupportMessagesForArrayConstraintsFromSetCompanyNameForSupportMessages(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem) ? get_class($mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem), var_export($mseSubsidiarySearchRowBasicCompanyNameForSupportMessagesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The companyNameForSupportMessages property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set companyNameForSupportMessages value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $companyNameForSupportMessages
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCompanyNameForSupportMessages(array $companyNameForSupportMessages = array())
    {
        // validation for constraint: array
        if ('' !== ($companyNameForSupportMessagesArrayErrorMessage = self::validateCompanyNameForSupportMessagesForArrayConstraintsFromSetCompanyNameForSupportMessages($companyNameForSupportMessages))) {
            throw new \InvalidArgumentException($companyNameForSupportMessagesArrayErrorMessage, __LINE__);
        }
        $this->companyNameForSupportMessages = $companyNameForSupportMessages;
        return $this;
    }
    /**
     * Add item to companyNameForSupportMessages value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCompanyNameForSupportMessages(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The companyNameForSupportMessages property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->companyNameForSupportMessages[] = $item;
        return $this;
    }
    /**
     * Get country value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCountry()
    {
        return $this->country;
    }
    /**
     * This method is responsible for validating the values passed to the setCountry method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCountry method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCountryForArrayConstraintsFromSetCountry(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCountryItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCountryItem) ? get_class($mseSubsidiarySearchRowBasicCountryItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCountryItem), var_export($mseSubsidiarySearchRowBasicCountryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The country property can only contain items of type \StructType\SearchColumnEnumSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set country value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $country
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCountry(array $country = array())
    {
        // validation for constraint: array
        if ('' !== ($countryArrayErrorMessage = self::validateCountryForArrayConstraintsFromSetCountry($country))) {
            throw new \InvalidArgumentException($countryArrayErrorMessage, __LINE__);
        }
        $this->country = $country;
        return $this;
    }
    /**
     * Add item to country value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCountry(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The country property can only contain items of type \StructType\SearchColumnEnumSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->country[] = $item;
        return $this;
    }
    /**
     * Get currency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCurrency()
    {
        return $this->currency;
    }
    /**
     * This method is responsible for validating the values passed to the setCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCurrencyForArrayConstraintsFromSetCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicCurrencyItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicCurrencyItem) ? get_class($mseSubsidiarySearchRowBasicCurrencyItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicCurrencyItem), var_export($mseSubsidiarySearchRowBasicCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $currency
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCurrency(array $currency = array())
    {
        // validation for constraint: array
        if ('' !== ($currencyArrayErrorMessage = self::validateCurrencyForArrayConstraintsFromSetCurrency($currency))) {
            throw new \InvalidArgumentException($currencyArrayErrorMessage, __LINE__);
        }
        $this->currency = $currency;
        return $this;
    }
    /**
     * Add item to currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->currency[] = $item;
        return $this;
    }
    /**
     * Get effectiveFrom value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getEffectiveFrom()
    {
        return $this->effectiveFrom;
    }
    /**
     * This method is responsible for validating the values passed to the setEffectiveFrom method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEffectiveFrom method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEffectiveFromForArrayConstraintsFromSetEffectiveFrom(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicEffectiveFromItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicEffectiveFromItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicEffectiveFromItem) ? get_class($mseSubsidiarySearchRowBasicEffectiveFromItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicEffectiveFromItem), var_export($mseSubsidiarySearchRowBasicEffectiveFromItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The effectiveFrom property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set effectiveFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $effectiveFrom
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setEffectiveFrom(array $effectiveFrom = array())
    {
        // validation for constraint: array
        if ('' !== ($effectiveFromArrayErrorMessage = self::validateEffectiveFromForArrayConstraintsFromSetEffectiveFrom($effectiveFrom))) {
            throw new \InvalidArgumentException($effectiveFromArrayErrorMessage, __LINE__);
        }
        $this->effectiveFrom = $effectiveFrom;
        return $this;
    }
    /**
     * Add item to effectiveFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToEffectiveFrom(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The effectiveFrom property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->effectiveFrom[] = $item;
        return $this;
    }
    /**
     * Get email value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEmail()
    {
        return $this->email;
    }
    /**
     * This method is responsible for validating the values passed to the setEmail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmailForArrayConstraintsFromSetEmail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicEmailItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicEmailItem) ? get_class($mseSubsidiarySearchRowBasicEmailItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicEmailItem), var_export($mseSubsidiarySearchRowBasicEmailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The email property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set email value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $email
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setEmail(array $email = array())
    {
        // validation for constraint: array
        if ('' !== ($emailArrayErrorMessage = self::validateEmailForArrayConstraintsFromSetEmail($email))) {
            throw new \InvalidArgumentException($emailArrayErrorMessage, __LINE__);
        }
        $this->email = $email;
        return $this;
    }
    /**
     * Add item to email value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToEmail(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The email property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->email[] = $item;
        return $this;
    }
    /**
     * Get employeeCaseUpdateTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEmployeeCaseUpdateTemplate()
    {
        return $this->employeeCaseUpdateTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setEmployeeCaseUpdateTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmployeeCaseUpdateTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmployeeCaseUpdateTemplateForArrayConstraintsFromSetEmployeeCaseUpdateTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem) ? get_class($mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem), var_export($mseSubsidiarySearchRowBasicEmployeeCaseUpdateTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The employeeCaseUpdateTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set employeeCaseUpdateTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $employeeCaseUpdateTemplate
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setEmployeeCaseUpdateTemplate(array $employeeCaseUpdateTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($employeeCaseUpdateTemplateArrayErrorMessage = self::validateEmployeeCaseUpdateTemplateForArrayConstraintsFromSetEmployeeCaseUpdateTemplate($employeeCaseUpdateTemplate))) {
            throw new \InvalidArgumentException($employeeCaseUpdateTemplateArrayErrorMessage, __LINE__);
        }
        $this->employeeCaseUpdateTemplate = $employeeCaseUpdateTemplate;
        return $this;
    }
    /**
     * Add item to employeeCaseUpdateTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToEmployeeCaseUpdateTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The employeeCaseUpdateTemplate property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->employeeCaseUpdateTemplate[] = $item;
        return $this;
    }
    /**
     * Get externalId value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getExternalId()
    {
        return $this->externalId;
    }
    /**
     * This method is responsible for validating the values passed to the setExternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExternalIdForArrayConstraintsFromSetExternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicExternalIdItem) ? get_class($mseSubsidiarySearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicExternalIdItem), var_export($mseSubsidiarySearchRowBasicExternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The externalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set externalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setExternalId(array $externalId = array())
    {
        // validation for constraint: array
        if ('' !== ($externalIdArrayErrorMessage = self::validateExternalIdForArrayConstraintsFromSetExternalId($externalId))) {
            throw new \InvalidArgumentException($externalIdArrayErrorMessage, __LINE__);
        }
        $this->externalId = $externalId;
        return $this;
    }
    /**
     * Add item to externalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToExternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The externalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->externalId[] = $item;
        return $this;
    }
    /**
     * Get fax value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFax()
    {
        return $this->fax;
    }
    /**
     * This method is responsible for validating the values passed to the setFax method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFax method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFaxForArrayConstraintsFromSetFax(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicFaxItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicFaxItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicFaxItem) ? get_class($mseSubsidiarySearchRowBasicFaxItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicFaxItem), var_export($mseSubsidiarySearchRowBasicFaxItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fax property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set fax value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $fax
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setFax(array $fax = array())
    {
        // validation for constraint: array
        if ('' !== ($faxArrayErrorMessage = self::validateFaxForArrayConstraintsFromSetFax($fax))) {
            throw new \InvalidArgumentException($faxArrayErrorMessage, __LINE__);
        }
        $this->fax = $fax;
        return $this;
    }
    /**
     * Add item to fax value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToFax(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The fax property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->fax[] = $item;
        return $this;
    }
    /**
     * Get internalId value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getInternalId()
    {
        return $this->internalId;
    }
    /**
     * This method is responsible for validating the values passed to the setInternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInternalIdForArrayConstraintsFromSetInternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicInternalIdItem) ? get_class($mseSubsidiarySearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicInternalIdItem), var_export($mseSubsidiarySearchRowBasicInternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set internalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setInternalId(array $internalId = array())
    {
        // validation for constraint: array
        if ('' !== ($internalIdArrayErrorMessage = self::validateInternalIdForArrayConstraintsFromSetInternalId($internalId))) {
            throw new \InvalidArgumentException($internalIdArrayErrorMessage, __LINE__);
        }
        $this->internalId = $internalId;
        return $this;
    }
    /**
     * Add item to internalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToInternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->internalId[] = $item;
        return $this;
    }
    /**
     * Get isElimination value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsElimination()
    {
        return $this->isElimination;
    }
    /**
     * This method is responsible for validating the values passed to the setIsElimination method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsElimination method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsEliminationForArrayConstraintsFromSetIsElimination(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicIsEliminationItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicIsEliminationItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicIsEliminationItem) ? get_class($mseSubsidiarySearchRowBasicIsEliminationItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicIsEliminationItem), var_export($mseSubsidiarySearchRowBasicIsEliminationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isElimination property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set isElimination value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isElimination
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setIsElimination(array $isElimination = array())
    {
        // validation for constraint: array
        if ('' !== ($isEliminationArrayErrorMessage = self::validateIsEliminationForArrayConstraintsFromSetIsElimination($isElimination))) {
            throw new \InvalidArgumentException($isEliminationArrayErrorMessage, __LINE__);
        }
        $this->isElimination = $isElimination;
        return $this;
    }
    /**
     * Add item to isElimination value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToIsElimination(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isElimination property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->isElimination[] = $item;
        return $this;
    }
    /**
     * Get isInactive value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsInactive()
    {
        return $this->isInactive;
    }
    /**
     * This method is responsible for validating the values passed to the setIsInactive method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsInactive method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsInactiveForArrayConstraintsFromSetIsInactive(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicIsInactiveItem) ? get_class($mseSubsidiarySearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicIsInactiveItem), var_export($mseSubsidiarySearchRowBasicIsInactiveItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isInactive property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set isInactive value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setIsInactive(array $isInactive = array())
    {
        // validation for constraint: array
        if ('' !== ($isInactiveArrayErrorMessage = self::validateIsInactiveForArrayConstraintsFromSetIsInactive($isInactive))) {
            throw new \InvalidArgumentException($isInactiveArrayErrorMessage, __LINE__);
        }
        $this->isInactive = $isInactive;
        return $this;
    }
    /**
     * Add item to isInactive value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToIsInactive(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isInactive property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->isInactive[] = $item;
        return $this;
    }
    /**
     * Get legalName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLegalName()
    {
        return $this->legalName;
    }
    /**
     * This method is responsible for validating the values passed to the setLegalName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLegalName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLegalNameForArrayConstraintsFromSetLegalName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicLegalNameItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicLegalNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicLegalNameItem) ? get_class($mseSubsidiarySearchRowBasicLegalNameItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicLegalNameItem), var_export($mseSubsidiarySearchRowBasicLegalNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The legalName property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set legalName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $legalName
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setLegalName(array $legalName = array())
    {
        // validation for constraint: array
        if ('' !== ($legalNameArrayErrorMessage = self::validateLegalNameForArrayConstraintsFromSetLegalName($legalName))) {
            throw new \InvalidArgumentException($legalNameArrayErrorMessage, __LINE__);
        }
        $this->legalName = $legalName;
        return $this;
    }
    /**
     * Add item to legalName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToLegalName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The legalName property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->legalName[] = $item;
        return $this;
    }
    /**
     * Get mainSupportEmailAddress value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMainSupportEmailAddress()
    {
        return $this->mainSupportEmailAddress;
    }
    /**
     * This method is responsible for validating the values passed to the setMainSupportEmailAddress method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMainSupportEmailAddress method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMainSupportEmailAddressForArrayConstraintsFromSetMainSupportEmailAddress(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicMainSupportEmailAddressItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicMainSupportEmailAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicMainSupportEmailAddressItem) ? get_class($mseSubsidiarySearchRowBasicMainSupportEmailAddressItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicMainSupportEmailAddressItem), var_export($mseSubsidiarySearchRowBasicMainSupportEmailAddressItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The mainSupportEmailAddress property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set mainSupportEmailAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $mainSupportEmailAddress
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setMainSupportEmailAddress(array $mainSupportEmailAddress = array())
    {
        // validation for constraint: array
        if ('' !== ($mainSupportEmailAddressArrayErrorMessage = self::validateMainSupportEmailAddressForArrayConstraintsFromSetMainSupportEmailAddress($mainSupportEmailAddress))) {
            throw new \InvalidArgumentException($mainSupportEmailAddressArrayErrorMessage, __LINE__);
        }
        $this->mainSupportEmailAddress = $mainSupportEmailAddress;
        return $this;
    }
    /**
     * Add item to mainSupportEmailAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToMainSupportEmailAddress(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The mainSupportEmailAddress property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->mainSupportEmailAddress[] = $item;
        return $this;
    }
    /**
     * Get name value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * This method is responsible for validating the values passed to the setName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNameForArrayConstraintsFromSetName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicNameItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicNameItem) ? get_class($mseSubsidiarySearchRowBasicNameItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicNameItem), var_export($mseSubsidiarySearchRowBasicNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The name property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $name
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setName(array $name = array())
    {
        // validation for constraint: array
        if ('' !== ($nameArrayErrorMessage = self::validateNameForArrayConstraintsFromSetName($name))) {
            throw new \InvalidArgumentException($nameArrayErrorMessage, __LINE__);
        }
        $this->name = $name;
        return $this;
    }
    /**
     * Add item to name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The name property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->name[] = $item;
        return $this;
    }
    /**
     * Get nameNoHierarchy value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getNameNoHierarchy()
    {
        return $this->nameNoHierarchy;
    }
    /**
     * This method is responsible for validating the values passed to the setNameNoHierarchy method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNameNoHierarchy method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNameNoHierarchyForArrayConstraintsFromSetNameNoHierarchy(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicNameNoHierarchyItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicNameNoHierarchyItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicNameNoHierarchyItem) ? get_class($mseSubsidiarySearchRowBasicNameNoHierarchyItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicNameNoHierarchyItem), var_export($mseSubsidiarySearchRowBasicNameNoHierarchyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nameNoHierarchy property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set nameNoHierarchy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $nameNoHierarchy
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setNameNoHierarchy(array $nameNoHierarchy = array())
    {
        // validation for constraint: array
        if ('' !== ($nameNoHierarchyArrayErrorMessage = self::validateNameNoHierarchyForArrayConstraintsFromSetNameNoHierarchy($nameNoHierarchy))) {
            throw new \InvalidArgumentException($nameNoHierarchyArrayErrorMessage, __LINE__);
        }
        $this->nameNoHierarchy = $nameNoHierarchy;
        return $this;
    }
    /**
     * Add item to nameNoHierarchy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToNameNoHierarchy(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The nameNoHierarchy property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->nameNoHierarchy[] = $item;
        return $this;
    }
    /**
     * Get nexus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getNexus()
    {
        return $this->nexus;
    }
    /**
     * This method is responsible for validating the values passed to the setNexus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNexus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNexusForArrayConstraintsFromSetNexus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicNexusItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicNexusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicNexusItem) ? get_class($mseSubsidiarySearchRowBasicNexusItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicNexusItem), var_export($mseSubsidiarySearchRowBasicNexusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nexus property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set nexus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $nexus
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setNexus(array $nexus = array())
    {
        // validation for constraint: array
        if ('' !== ($nexusArrayErrorMessage = self::validateNexusForArrayConstraintsFromSetNexus($nexus))) {
            throw new \InvalidArgumentException($nexusArrayErrorMessage, __LINE__);
        }
        $this->nexus = $nexus;
        return $this;
    }
    /**
     * Add item to nexus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToNexus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The nexus property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->nexus[] = $item;
        return $this;
    }
    /**
     * Get phone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPhone()
    {
        return $this->phone;
    }
    /**
     * This method is responsible for validating the values passed to the setPhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePhoneForArrayConstraintsFromSetPhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicPhoneItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicPhoneItem) ? get_class($mseSubsidiarySearchRowBasicPhoneItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicPhoneItem), var_export($mseSubsidiarySearchRowBasicPhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The phone property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set phone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $phone
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setPhone(array $phone = array())
    {
        // validation for constraint: array
        if ('' !== ($phoneArrayErrorMessage = self::validatePhoneForArrayConstraintsFromSetPhone($phone))) {
            throw new \InvalidArgumentException($phoneArrayErrorMessage, __LINE__);
        }
        $this->phone = $phone;
        return $this;
    }
    /**
     * Add item to phone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The phone property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->phone[] = $item;
        return $this;
    }
    /**
     * Get primary value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getPrimary()
    {
        return $this->primary;
    }
    /**
     * This method is responsible for validating the values passed to the setPrimary method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrimary method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrimaryForArrayConstraintsFromSetPrimary(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicPrimaryItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicPrimaryItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicPrimaryItem) ? get_class($mseSubsidiarySearchRowBasicPrimaryItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicPrimaryItem), var_export($mseSubsidiarySearchRowBasicPrimaryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The primary property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set primary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $primary
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setPrimary(array $primary = array())
    {
        // validation for constraint: array
        if ('' !== ($primaryArrayErrorMessage = self::validatePrimaryForArrayConstraintsFromSetPrimary($primary))) {
            throw new \InvalidArgumentException($primaryArrayErrorMessage, __LINE__);
        }
        $this->primary = $primary;
        return $this;
    }
    /**
     * Add item to primary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToPrimary(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The primary property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->primary[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderAmount()
    {
        return $this->purchaseOrderAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderAmountForArrayConstraintsFromSetPurchaseOrderAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicPurchaseOrderAmountItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicPurchaseOrderAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicPurchaseOrderAmountItem) ? get_class($mseSubsidiarySearchRowBasicPurchaseOrderAmountItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicPurchaseOrderAmountItem), var_export($mseSubsidiarySearchRowBasicPurchaseOrderAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderAmount
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setPurchaseOrderAmount(array $purchaseOrderAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderAmountArrayErrorMessage = self::validatePurchaseOrderAmountForArrayConstraintsFromSetPurchaseOrderAmount($purchaseOrderAmount))) {
            throw new \InvalidArgumentException($purchaseOrderAmountArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderAmount = $purchaseOrderAmount;
        return $this;
    }
    /**
     * Add item to purchaseOrderAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToPurchaseOrderAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderAmount[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderQuantity()
    {
        return $this->purchaseOrderQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderQuantityForArrayConstraintsFromSetPurchaseOrderQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem) ? get_class($mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem), var_export($mseSubsidiarySearchRowBasicPurchaseOrderQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantity
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setPurchaseOrderQuantity(array $purchaseOrderQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderQuantityArrayErrorMessage = self::validatePurchaseOrderQuantityForArrayConstraintsFromSetPurchaseOrderQuantity($purchaseOrderQuantity))) {
            throw new \InvalidArgumentException($purchaseOrderQuantityArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderQuantity = $purchaseOrderQuantity;
        return $this;
    }
    /**
     * Add item to purchaseOrderQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToPurchaseOrderQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderQuantity[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderQuantityDiff value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderQuantityDiff()
    {
        return $this->purchaseOrderQuantityDiff;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderQuantityDiff method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderQuantityDiff method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderQuantityDiffForArrayConstraintsFromSetPurchaseOrderQuantityDiff(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem) ? get_class($mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem), var_export($mseSubsidiarySearchRowBasicPurchaseOrderQuantityDiffItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantityDiff
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setPurchaseOrderQuantityDiff(array $purchaseOrderQuantityDiff = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderQuantityDiffArrayErrorMessage = self::validatePurchaseOrderQuantityDiffForArrayConstraintsFromSetPurchaseOrderQuantityDiff($purchaseOrderQuantityDiff))) {
            throw new \InvalidArgumentException($purchaseOrderQuantityDiffArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderQuantityDiff = $purchaseOrderQuantityDiff;
        return $this;
    }
    /**
     * Add item to purchaseOrderQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToPurchaseOrderQuantityDiff(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderQuantityDiff[] = $item;
        return $this;
    }
    /**
     * Get receiptAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptAmount()
    {
        return $this->receiptAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptAmountForArrayConstraintsFromSetReceiptAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicReceiptAmountItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicReceiptAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicReceiptAmountItem) ? get_class($mseSubsidiarySearchRowBasicReceiptAmountItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicReceiptAmountItem), var_export($mseSubsidiarySearchRowBasicReceiptAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptAmount
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setReceiptAmount(array $receiptAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptAmountArrayErrorMessage = self::validateReceiptAmountForArrayConstraintsFromSetReceiptAmount($receiptAmount))) {
            throw new \InvalidArgumentException($receiptAmountArrayErrorMessage, __LINE__);
        }
        $this->receiptAmount = $receiptAmount;
        return $this;
    }
    /**
     * Add item to receiptAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToReceiptAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptAmount[] = $item;
        return $this;
    }
    /**
     * Get receiptQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptQuantity()
    {
        return $this->receiptQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptQuantityForArrayConstraintsFromSetReceiptQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicReceiptQuantityItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicReceiptQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicReceiptQuantityItem) ? get_class($mseSubsidiarySearchRowBasicReceiptQuantityItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicReceiptQuantityItem), var_export($mseSubsidiarySearchRowBasicReceiptQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantity
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setReceiptQuantity(array $receiptQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptQuantityArrayErrorMessage = self::validateReceiptQuantityForArrayConstraintsFromSetReceiptQuantity($receiptQuantity))) {
            throw new \InvalidArgumentException($receiptQuantityArrayErrorMessage, __LINE__);
        }
        $this->receiptQuantity = $receiptQuantity;
        return $this;
    }
    /**
     * Add item to receiptQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToReceiptQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptQuantity[] = $item;
        return $this;
    }
    /**
     * Get receiptQuantityDiff value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptQuantityDiff()
    {
        return $this->receiptQuantityDiff;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptQuantityDiff method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptQuantityDiff method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptQuantityDiffForArrayConstraintsFromSetReceiptQuantityDiff(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicReceiptQuantityDiffItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicReceiptQuantityDiffItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicReceiptQuantityDiffItem) ? get_class($mseSubsidiarySearchRowBasicReceiptQuantityDiffItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicReceiptQuantityDiffItem), var_export($mseSubsidiarySearchRowBasicReceiptQuantityDiffItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantityDiff
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setReceiptQuantityDiff(array $receiptQuantityDiff = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptQuantityDiffArrayErrorMessage = self::validateReceiptQuantityDiffForArrayConstraintsFromSetReceiptQuantityDiff($receiptQuantityDiff))) {
            throw new \InvalidArgumentException($receiptQuantityDiffArrayErrorMessage, __LINE__);
        }
        $this->receiptQuantityDiff = $receiptQuantityDiff;
        return $this;
    }
    /**
     * Add item to receiptQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToReceiptQuantityDiff(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptQuantityDiff[] = $item;
        return $this;
    }
    /**
     * Get state value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getState()
    {
        return $this->state;
    }
    /**
     * This method is responsible for validating the values passed to the setState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStateForArrayConstraintsFromSetState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicStateItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicStateItem) ? get_class($mseSubsidiarySearchRowBasicStateItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicStateItem), var_export($mseSubsidiarySearchRowBasicStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The state property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set state value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $state
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setState(array $state = array())
    {
        // validation for constraint: array
        if ('' !== ($stateArrayErrorMessage = self::validateStateForArrayConstraintsFromSetState($state))) {
            throw new \InvalidArgumentException($stateArrayErrorMessage, __LINE__);
        }
        $this->state = $state;
        return $this;
    }
    /**
     * Add item to state value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToState(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The state property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->state[] = $item;
        return $this;
    }
    /**
     * Get taxEngine value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTaxEngine()
    {
        return $this->taxEngine;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxEngine method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxEngine method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxEngineForArrayConstraintsFromSetTaxEngine(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicTaxEngineItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicTaxEngineItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicTaxEngineItem) ? get_class($mseSubsidiarySearchRowBasicTaxEngineItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicTaxEngineItem), var_export($mseSubsidiarySearchRowBasicTaxEngineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxEngine property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set taxEngine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $taxEngine
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setTaxEngine(array $taxEngine = array())
    {
        // validation for constraint: array
        if ('' !== ($taxEngineArrayErrorMessage = self::validateTaxEngineForArrayConstraintsFromSetTaxEngine($taxEngine))) {
            throw new \InvalidArgumentException($taxEngineArrayErrorMessage, __LINE__);
        }
        $this->taxEngine = $taxEngine;
        return $this;
    }
    /**
     * Add item to taxEngine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToTaxEngine(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The taxEngine property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->taxEngine[] = $item;
        return $this;
    }
    /**
     * Get taxIdNum value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTaxIdNum()
    {
        return $this->taxIdNum;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxIdNum method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxIdNum method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxIdNumForArrayConstraintsFromSetTaxIdNum(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicTaxIdNumItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicTaxIdNumItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicTaxIdNumItem) ? get_class($mseSubsidiarySearchRowBasicTaxIdNumItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicTaxIdNumItem), var_export($mseSubsidiarySearchRowBasicTaxIdNumItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxIdNum property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set taxIdNum value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $taxIdNum
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setTaxIdNum(array $taxIdNum = array())
    {
        // validation for constraint: array
        if ('' !== ($taxIdNumArrayErrorMessage = self::validateTaxIdNumForArrayConstraintsFromSetTaxIdNum($taxIdNum))) {
            throw new \InvalidArgumentException($taxIdNumArrayErrorMessage, __LINE__);
        }
        $this->taxIdNum = $taxIdNum;
        return $this;
    }
    /**
     * Add item to taxIdNum value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToTaxIdNum(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The taxIdNum property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->taxIdNum[] = $item;
        return $this;
    }
    /**
     * Get taxRegistrationNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTaxRegistrationNumber()
    {
        return $this->taxRegistrationNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxRegistrationNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxRegistrationNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxRegistrationNumberForArrayConstraintsFromSetTaxRegistrationNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicTaxRegistrationNumberItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicTaxRegistrationNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicTaxRegistrationNumberItem) ? get_class($mseSubsidiarySearchRowBasicTaxRegistrationNumberItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicTaxRegistrationNumberItem), var_export($mseSubsidiarySearchRowBasicTaxRegistrationNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxRegistrationNumber property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set taxRegistrationNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $taxRegistrationNumber
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setTaxRegistrationNumber(array $taxRegistrationNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($taxRegistrationNumberArrayErrorMessage = self::validateTaxRegistrationNumberForArrayConstraintsFromSetTaxRegistrationNumber($taxRegistrationNumber))) {
            throw new \InvalidArgumentException($taxRegistrationNumberArrayErrorMessage, __LINE__);
        }
        $this->taxRegistrationNumber = $taxRegistrationNumber;
        return $this;
    }
    /**
     * Add item to taxRegistrationNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToTaxRegistrationNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The taxRegistrationNumber property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->taxRegistrationNumber[] = $item;
        return $this;
    }
    /**
     * Get tranPrefix value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTranPrefix()
    {
        return $this->tranPrefix;
    }
    /**
     * This method is responsible for validating the values passed to the setTranPrefix method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranPrefix method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranPrefixForArrayConstraintsFromSetTranPrefix(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicTranPrefixItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicTranPrefixItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicTranPrefixItem) ? get_class($mseSubsidiarySearchRowBasicTranPrefixItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicTranPrefixItem), var_export($mseSubsidiarySearchRowBasicTranPrefixItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranPrefix property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set tranPrefix value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $tranPrefix
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setTranPrefix(array $tranPrefix = array())
    {
        // validation for constraint: array
        if ('' !== ($tranPrefixArrayErrorMessage = self::validateTranPrefixForArrayConstraintsFromSetTranPrefix($tranPrefix))) {
            throw new \InvalidArgumentException($tranPrefixArrayErrorMessage, __LINE__);
        }
        $this->tranPrefix = $tranPrefix;
        return $this;
    }
    /**
     * Add item to tranPrefix value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToTranPrefix(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The tranPrefix property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->tranPrefix[] = $item;
        return $this;
    }
    /**
     * Get url value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUrl()
    {
        return $this->url;
    }
    /**
     * This method is responsible for validating the values passed to the setUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUrlForArrayConstraintsFromSetUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicUrlItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicUrlItem) ? get_class($mseSubsidiarySearchRowBasicUrlItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicUrlItem), var_export($mseSubsidiarySearchRowBasicUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $url
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setUrl(array $url = array())
    {
        // validation for constraint: array
        if ('' !== ($urlArrayErrorMessage = self::validateUrlForArrayConstraintsFromSetUrl($url))) {
            throw new \InvalidArgumentException($urlArrayErrorMessage, __LINE__);
        }
        $this->url = $url;
        return $this;
    }
    /**
     * Add item to url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->url[] = $item;
        return $this;
    }
    /**
     * Get validUntil value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getValidUntil()
    {
        return $this->validUntil;
    }
    /**
     * This method is responsible for validating the values passed to the setValidUntil method
     * This method is willingly generated in order to preserve the one-line inline validation within the setValidUntil method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateValidUntilForArrayConstraintsFromSetValidUntil(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicValidUntilItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicValidUntilItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicValidUntilItem) ? get_class($mseSubsidiarySearchRowBasicValidUntilItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicValidUntilItem), var_export($mseSubsidiarySearchRowBasicValidUntilItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The validUntil property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set validUntil value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $validUntil
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setValidUntil(array $validUntil = array())
    {
        // validation for constraint: array
        if ('' !== ($validUntilArrayErrorMessage = self::validateValidUntilForArrayConstraintsFromSetValidUntil($validUntil))) {
            throw new \InvalidArgumentException($validUntilArrayErrorMessage, __LINE__);
        }
        $this->validUntil = $validUntil;
        return $this;
    }
    /**
     * Add item to validUntil value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToValidUntil(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The validUntil property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->validUntil[] = $item;
        return $this;
    }
    /**
     * Get zip value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getZip()
    {
        return $this->zip;
    }
    /**
     * This method is responsible for validating the values passed to the setZip method
     * This method is willingly generated in order to preserve the one-line inline validation within the setZip method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateZipForArrayConstraintsFromSetZip(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $mseSubsidiarySearchRowBasicZipItem) {
            // validation for constraint: itemType
            if (!$mseSubsidiarySearchRowBasicZipItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($mseSubsidiarySearchRowBasicZipItem) ? get_class($mseSubsidiarySearchRowBasicZipItem) : sprintf('%s(%s)', gettype($mseSubsidiarySearchRowBasicZipItem), var_export($mseSubsidiarySearchRowBasicZipItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The zip property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set zip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $zip
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setZip(array $zip = array())
    {
        // validation for constraint: array
        if ('' !== ($zipArrayErrorMessage = self::validateZipForArrayConstraintsFromSetZip($zip))) {
            throw new \InvalidArgumentException($zipArrayErrorMessage, __LINE__);
        }
        $this->zip = $zip;
        return $this;
    }
    /**
     * Add item to zip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function addToZip(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The zip property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->zip[] = $item;
        return $this;
    }
    /**
     * Get customFieldList value
     * @return \StructType\SearchColumnCustomFieldList|null
     */
    public function getCustomFieldList()
    {
        return $this->customFieldList;
    }
    /**
     * Set customFieldList value
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     * @return \StructType\MseSubsidiarySearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
