<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for EmployeeSearchRowBasic StructType
 * @subpackage Structs
 */
class EmployeeSearchRowBasic extends SearchRowBasic
{
    /**
     * The accountNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $accountNumber;
    /**
     * The address
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $address;
    /**
     * 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 addressee
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $addressee;
    /**
     * The addressInternalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $addressInternalId;
    /**
     * The addressLabel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $addressLabel;
    /**
     * The addressPhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $addressPhone;
    /**
     * The alienNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $alienNumber;
    /**
     * The allocation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $allocation;
    /**
     * The altEmail
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $altEmail;
    /**
     * The altName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $altName;
    /**
     * The altPhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $altPhone;
    /**
     * The approvalLimit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $approvalLimit;
    /**
     * The approver
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $approver;
    /**
     * The attention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $attention;
    /**
     * The authWorkDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $authWorkDate;
    /**
     * The baseWage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $baseWage;
    /**
     * The baseWageType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchEnumMultiSelectField[]
     */
    public $baseWageType;
    /**
     * The billAddress
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAddress;
    /**
     * The billAddress1
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAddress1;
    /**
     * The billAddress2
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAddress2;
    /**
     * The billAddress3
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAddress3;
    /**
     * The billAddressee
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAddressee;
    /**
     * The billAttention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billAttention;
    /**
     * The billCity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billCity;
    /**
     * The billCountry
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $billCountry;
    /**
     * The billCountryCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billCountryCode;
    /**
     * The billingClass
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billingClass;
    /**
     * The billPhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billPhone;
    /**
     * The billState
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billState;
    /**
     * The billZipCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $billZipCode;
    /**
     * The birthDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $birthDate;
    /**
     * The birthDay
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $birthDay;
    /**
     * The bonusTarget
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $bonusTarget;
    /**
     * The bonusTargetComment
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $bonusTargetComment;
    /**
     * The bonusTargetPayFrequency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $bonusTargetPayFrequency;
    /**
     * The bonusTargetType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $bonusTargetType;
    /**
     * The city
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $city;
    /**
     * The class
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $class;
    /**
     * The comments
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $comments;
    /**
     * The compensationCurrency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $compensationCurrency;
    /**
     * The concurrentWebServicesUser
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $concurrentWebServicesUser;
    /**
     * The country
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $country;
    /**
     * The countryCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $countryCode;
    /**
     * The dateCreated
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateCreated;
    /**
     * The defaultAcctCorpCardExp
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $defaultAcctCorpCardExp;
    /**
     * The defaultExpenseReportCurrency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $defaultExpenseReportCurrency;
    /**
     * The defaultTaxReg
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $defaultTaxReg;
    /**
     * The department
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $department;
    /**
     * The eligibleForCommission
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $eligibleForCommission;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $email;
    /**
     * The employeeStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $employeeStatus;
    /**
     * The employeeType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $employeeType;
    /**
     * The entityId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $entityId;
    /**
     * The entityNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $entityNumber;
    /**
     * The ethnicity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $ethnicity;
    /**
     * The expenseLimit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $expenseLimit;
    /**
     * The expenseReportCurrency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $expenseReportCurrency;
    /**
     * 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 firstName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $firstName;
    /**
     * The gender
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $gender;
    /**
     * The giveAccess
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $giveAccess;
    /**
     * The globalSubscriptionStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $globalSubscriptionStatus;
    /**
     * The hireDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $hireDate;
    /**
     * The homePhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $homePhone;
    /**
     * The i9Verified
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $i9Verified;
    /**
     * The image
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $image;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isDefaultBilling
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isDefaultBilling;
    /**
     * The isDefaultShipping
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isDefaultShipping;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isInactive;
    /**
     * The isJobResource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isJobResource;
    /**
     * The isJobManager
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isJobManager;
    /**
     * The isSalesRep
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSalesRep;
    /**
     * The isSupportRep
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSupportRep;
    /**
     * The isTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isTemplate;
    /**
     * The job
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $job;
    /**
     * The laborCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $laborCost;
    /**
     * The language
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $language;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastModifiedDate;
    /**
     * The lastName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $lastName;
    /**
     * The lastPaidDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastPaidDate;
    /**
     * The lastReviewDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastReviewDate;
    /**
     * The level
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $level;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $location;
    /**
     * The maritalStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $maritalStatus;
    /**
     * The middleName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $middleName;
    /**
     * The mobilePhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $mobilePhone;
    /**
     * The nextReviewDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $nextReviewDate;
    /**
     * The offlineAccess
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $offlineAccess;
    /**
     * The payFrequency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $payFrequency;
    /**
     * The permChangeDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $permChangeDate;
    /**
     * The permChangeLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $permChangeLevel;
    /**
     * The permission
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $permission;
    /**
     * The permissionChange
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $permissionChange;
    /**
     * The phone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $phone;
    /**
     * The phoneticName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $phoneticName;
    /**
     * The positionTitle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $positionTitle;
    /**
     * The primaryEarningAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $primaryEarningAmount;
    /**
     * The primaryEarningItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $primaryEarningItem;
    /**
     * The primaryEarningType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $primaryEarningType;
    /**
     * The purchaseOrderApprovalLimit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderApprovalLimit;
    /**
     * The purchaseOrderApprover
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $purchaseOrderApprover;
    /**
     * The purchaseOrderLimit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderLimit;
    /**
     * The releaseDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $releaseDate;
    /**
     * The residentStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $residentStatus;
    /**
     * The role
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $role;
    /**
     * The roleChange
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $roleChange;
    /**
     * The roleChangeAction
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $roleChangeAction;
    /**
     * The roleChangeDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $roleChangeDate;
    /**
     * The salesRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesRole;
    /**
     * The salutation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $salutation;
    /**
     * The shipAddress1
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress1;
    /**
     * The shipAddress2
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress2;
    /**
     * The shipAddress3
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress3;
    /**
     * The shipAddressee
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddressee;
    /**
     * The shipAttention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAttention;
    /**
     * The shipCity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipCity;
    /**
     * The shipCountry
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $shipCountry;
    /**
     * The shipCountryCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipCountryCode;
    /**
     * The shipPhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipPhone;
    /**
     * The shipState
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipState;
    /**
     * The shipZip
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipZip;
    /**
     * The socialSecurityNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $socialSecurityNumber;
    /**
     * The startDateTimeOffCalc
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $startDateTimeOffCalc;
    /**
     * The state
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $state;
    /**
     * The subscription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $subscription;
    /**
     * The subscriptionDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $subscriptionDate;
    /**
     * The subscriptionStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $subscriptionStatus;
    /**
     * The subsidiary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $subsidiary;
    /**
     * The supervisor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $supervisor;
    /**
     * The targetUtilization
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $targetUtilization;
    /**
     * The terminationCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $terminationCategory;
    /**
     * The terminationDetails
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $terminationDetails;
    /**
     * The terminationReason
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $terminationReason;
    /**
     * The terminationRegretted
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $terminationRegretted;
    /**
     * The timeApprover
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $timeApprover;
    /**
     * The timeOffPlan
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $timeOffPlan;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $title;
    /**
     * The usePerquest
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $usePerquest;
    /**
     * The useTimeData
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $useTimeData;
    /**
     * The visaExpDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $visaExpDate;
    /**
     * The visaType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $visaType;
    /**
     * The workCalendar
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $workCalendar;
    /**
     * The workplace
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $workplace;
    /**
     * The zipCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $zipCode;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for EmployeeSearchRowBasic
     * @uses EmployeeSearchRowBasic::setAccountNumber()
     * @uses EmployeeSearchRowBasic::setAddress()
     * @uses EmployeeSearchRowBasic::setAddress1()
     * @uses EmployeeSearchRowBasic::setAddress2()
     * @uses EmployeeSearchRowBasic::setAddress3()
     * @uses EmployeeSearchRowBasic::setAddressee()
     * @uses EmployeeSearchRowBasic::setAddressInternalId()
     * @uses EmployeeSearchRowBasic::setAddressLabel()
     * @uses EmployeeSearchRowBasic::setAddressPhone()
     * @uses EmployeeSearchRowBasic::setAlienNumber()
     * @uses EmployeeSearchRowBasic::setAllocation()
     * @uses EmployeeSearchRowBasic::setAltEmail()
     * @uses EmployeeSearchRowBasic::setAltName()
     * @uses EmployeeSearchRowBasic::setAltPhone()
     * @uses EmployeeSearchRowBasic::setApprovalLimit()
     * @uses EmployeeSearchRowBasic::setApprover()
     * @uses EmployeeSearchRowBasic::setAttention()
     * @uses EmployeeSearchRowBasic::setAuthWorkDate()
     * @uses EmployeeSearchRowBasic::setBaseWage()
     * @uses EmployeeSearchRowBasic::setBaseWageType()
     * @uses EmployeeSearchRowBasic::setBillAddress()
     * @uses EmployeeSearchRowBasic::setBillAddress1()
     * @uses EmployeeSearchRowBasic::setBillAddress2()
     * @uses EmployeeSearchRowBasic::setBillAddress3()
     * @uses EmployeeSearchRowBasic::setBillAddressee()
     * @uses EmployeeSearchRowBasic::setBillAttention()
     * @uses EmployeeSearchRowBasic::setBillCity()
     * @uses EmployeeSearchRowBasic::setBillCountry()
     * @uses EmployeeSearchRowBasic::setBillCountryCode()
     * @uses EmployeeSearchRowBasic::setBillingClass()
     * @uses EmployeeSearchRowBasic::setBillPhone()
     * @uses EmployeeSearchRowBasic::setBillState()
     * @uses EmployeeSearchRowBasic::setBillZipCode()
     * @uses EmployeeSearchRowBasic::setBirthDate()
     * @uses EmployeeSearchRowBasic::setBirthDay()
     * @uses EmployeeSearchRowBasic::setBonusTarget()
     * @uses EmployeeSearchRowBasic::setBonusTargetComment()
     * @uses EmployeeSearchRowBasic::setBonusTargetPayFrequency()
     * @uses EmployeeSearchRowBasic::setBonusTargetType()
     * @uses EmployeeSearchRowBasic::setCity()
     * @uses EmployeeSearchRowBasic::setClass()
     * @uses EmployeeSearchRowBasic::setComments()
     * @uses EmployeeSearchRowBasic::setCompensationCurrency()
     * @uses EmployeeSearchRowBasic::setConcurrentWebServicesUser()
     * @uses EmployeeSearchRowBasic::setCountry()
     * @uses EmployeeSearchRowBasic::setCountryCode()
     * @uses EmployeeSearchRowBasic::setDateCreated()
     * @uses EmployeeSearchRowBasic::setDefaultAcctCorpCardExp()
     * @uses EmployeeSearchRowBasic::setDefaultExpenseReportCurrency()
     * @uses EmployeeSearchRowBasic::setDefaultTaxReg()
     * @uses EmployeeSearchRowBasic::setDepartment()
     * @uses EmployeeSearchRowBasic::setEligibleForCommission()
     * @uses EmployeeSearchRowBasic::setEmail()
     * @uses EmployeeSearchRowBasic::setEmployeeStatus()
     * @uses EmployeeSearchRowBasic::setEmployeeType()
     * @uses EmployeeSearchRowBasic::setEntityId()
     * @uses EmployeeSearchRowBasic::setEntityNumber()
     * @uses EmployeeSearchRowBasic::setEthnicity()
     * @uses EmployeeSearchRowBasic::setExpenseLimit()
     * @uses EmployeeSearchRowBasic::setExpenseReportCurrency()
     * @uses EmployeeSearchRowBasic::setExternalId()
     * @uses EmployeeSearchRowBasic::setFax()
     * @uses EmployeeSearchRowBasic::setFirstName()
     * @uses EmployeeSearchRowBasic::setGender()
     * @uses EmployeeSearchRowBasic::setGiveAccess()
     * @uses EmployeeSearchRowBasic::setGlobalSubscriptionStatus()
     * @uses EmployeeSearchRowBasic::setHireDate()
     * @uses EmployeeSearchRowBasic::setHomePhone()
     * @uses EmployeeSearchRowBasic::setI9Verified()
     * @uses EmployeeSearchRowBasic::setImage()
     * @uses EmployeeSearchRowBasic::setInternalId()
     * @uses EmployeeSearchRowBasic::setIsDefaultBilling()
     * @uses EmployeeSearchRowBasic::setIsDefaultShipping()
     * @uses EmployeeSearchRowBasic::setIsInactive()
     * @uses EmployeeSearchRowBasic::setIsJobResource()
     * @uses EmployeeSearchRowBasic::setIsJobManager()
     * @uses EmployeeSearchRowBasic::setIsSalesRep()
     * @uses EmployeeSearchRowBasic::setIsSupportRep()
     * @uses EmployeeSearchRowBasic::setIsTemplate()
     * @uses EmployeeSearchRowBasic::setJob()
     * @uses EmployeeSearchRowBasic::setLaborCost()
     * @uses EmployeeSearchRowBasic::setLanguage()
     * @uses EmployeeSearchRowBasic::setLastModifiedDate()
     * @uses EmployeeSearchRowBasic::setLastName()
     * @uses EmployeeSearchRowBasic::setLastPaidDate()
     * @uses EmployeeSearchRowBasic::setLastReviewDate()
     * @uses EmployeeSearchRowBasic::setLevel()
     * @uses EmployeeSearchRowBasic::setLocation()
     * @uses EmployeeSearchRowBasic::setMaritalStatus()
     * @uses EmployeeSearchRowBasic::setMiddleName()
     * @uses EmployeeSearchRowBasic::setMobilePhone()
     * @uses EmployeeSearchRowBasic::setNextReviewDate()
     * @uses EmployeeSearchRowBasic::setOfflineAccess()
     * @uses EmployeeSearchRowBasic::setPayFrequency()
     * @uses EmployeeSearchRowBasic::setPermChangeDate()
     * @uses EmployeeSearchRowBasic::setPermChangeLevel()
     * @uses EmployeeSearchRowBasic::setPermission()
     * @uses EmployeeSearchRowBasic::setPermissionChange()
     * @uses EmployeeSearchRowBasic::setPhone()
     * @uses EmployeeSearchRowBasic::setPhoneticName()
     * @uses EmployeeSearchRowBasic::setPositionTitle()
     * @uses EmployeeSearchRowBasic::setPrimaryEarningAmount()
     * @uses EmployeeSearchRowBasic::setPrimaryEarningItem()
     * @uses EmployeeSearchRowBasic::setPrimaryEarningType()
     * @uses EmployeeSearchRowBasic::setPurchaseOrderApprovalLimit()
     * @uses EmployeeSearchRowBasic::setPurchaseOrderApprover()
     * @uses EmployeeSearchRowBasic::setPurchaseOrderLimit()
     * @uses EmployeeSearchRowBasic::setReleaseDate()
     * @uses EmployeeSearchRowBasic::setResidentStatus()
     * @uses EmployeeSearchRowBasic::setRole()
     * @uses EmployeeSearchRowBasic::setRoleChange()
     * @uses EmployeeSearchRowBasic::setRoleChangeAction()
     * @uses EmployeeSearchRowBasic::setRoleChangeDate()
     * @uses EmployeeSearchRowBasic::setSalesRole()
     * @uses EmployeeSearchRowBasic::setSalutation()
     * @uses EmployeeSearchRowBasic::setShipAddress1()
     * @uses EmployeeSearchRowBasic::setShipAddress2()
     * @uses EmployeeSearchRowBasic::setShipAddress3()
     * @uses EmployeeSearchRowBasic::setShipAddressee()
     * @uses EmployeeSearchRowBasic::setShipAttention()
     * @uses EmployeeSearchRowBasic::setShipCity()
     * @uses EmployeeSearchRowBasic::setShipCountry()
     * @uses EmployeeSearchRowBasic::setShipCountryCode()
     * @uses EmployeeSearchRowBasic::setShipPhone()
     * @uses EmployeeSearchRowBasic::setShipState()
     * @uses EmployeeSearchRowBasic::setShipZip()
     * @uses EmployeeSearchRowBasic::setSocialSecurityNumber()
     * @uses EmployeeSearchRowBasic::setStartDateTimeOffCalc()
     * @uses EmployeeSearchRowBasic::setState()
     * @uses EmployeeSearchRowBasic::setSubscription()
     * @uses EmployeeSearchRowBasic::setSubscriptionDate()
     * @uses EmployeeSearchRowBasic::setSubscriptionStatus()
     * @uses EmployeeSearchRowBasic::setSubsidiary()
     * @uses EmployeeSearchRowBasic::setSupervisor()
     * @uses EmployeeSearchRowBasic::setTargetUtilization()
     * @uses EmployeeSearchRowBasic::setTerminationCategory()
     * @uses EmployeeSearchRowBasic::setTerminationDetails()
     * @uses EmployeeSearchRowBasic::setTerminationReason()
     * @uses EmployeeSearchRowBasic::setTerminationRegretted()
     * @uses EmployeeSearchRowBasic::setTimeApprover()
     * @uses EmployeeSearchRowBasic::setTimeOffPlan()
     * @uses EmployeeSearchRowBasic::setTitle()
     * @uses EmployeeSearchRowBasic::setUsePerquest()
     * @uses EmployeeSearchRowBasic::setUseTimeData()
     * @uses EmployeeSearchRowBasic::setVisaExpDate()
     * @uses EmployeeSearchRowBasic::setVisaType()
     * @uses EmployeeSearchRowBasic::setWorkCalendar()
     * @uses EmployeeSearchRowBasic::setWorkplace()
     * @uses EmployeeSearchRowBasic::setZipCode()
     * @uses EmployeeSearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnStringField[] $accountNumber
     * @param \StructType\SearchColumnStringField[] $address
     * @param \StructType\SearchColumnStringField[] $address1
     * @param \StructType\SearchColumnStringField[] $address2
     * @param \StructType\SearchColumnStringField[] $address3
     * @param \StructType\SearchColumnStringField[] $addressee
     * @param \StructType\SearchColumnStringField[] $addressInternalId
     * @param \StructType\SearchColumnStringField[] $addressLabel
     * @param \StructType\SearchColumnStringField[] $addressPhone
     * @param \StructType\SearchColumnStringField[] $alienNumber
     * @param \StructType\SearchColumnDoubleField[] $allocation
     * @param \StructType\SearchColumnStringField[] $altEmail
     * @param \StructType\SearchColumnStringField[] $altName
     * @param \StructType\SearchColumnStringField[] $altPhone
     * @param \StructType\SearchColumnDoubleField[] $approvalLimit
     * @param \StructType\SearchColumnSelectField[] $approver
     * @param \StructType\SearchColumnStringField[] $attention
     * @param \StructType\SearchColumnDateField[] $authWorkDate
     * @param \StructType\SearchColumnDoubleField[] $baseWage
     * @param \StructType\SearchEnumMultiSelectField[] $baseWageType
     * @param \StructType\SearchColumnStringField[] $billAddress
     * @param \StructType\SearchColumnStringField[] $billAddress1
     * @param \StructType\SearchColumnStringField[] $billAddress2
     * @param \StructType\SearchColumnStringField[] $billAddress3
     * @param \StructType\SearchColumnStringField[] $billAddressee
     * @param \StructType\SearchColumnStringField[] $billAttention
     * @param \StructType\SearchColumnStringField[] $billCity
     * @param \StructType\SearchColumnEnumSelectField[] $billCountry
     * @param \StructType\SearchColumnStringField[] $billCountryCode
     * @param \StructType\SearchColumnSelectField[] $billingClass
     * @param \StructType\SearchColumnStringField[] $billPhone
     * @param \StructType\SearchColumnStringField[] $billState
     * @param \StructType\SearchColumnStringField[] $billZipCode
     * @param \StructType\SearchColumnDateField[] $birthDate
     * @param \StructType\SearchColumnDateField[] $birthDay
     * @param \StructType\SearchColumnDoubleField[] $bonusTarget
     * @param \StructType\SearchColumnStringField[] $bonusTargetComment
     * @param \StructType\SearchColumnEnumSelectField[] $bonusTargetPayFrequency
     * @param \StructType\SearchColumnEnumSelectField[] $bonusTargetType
     * @param \StructType\SearchColumnStringField[] $city
     * @param \StructType\SearchColumnSelectField[] $class
     * @param \StructType\SearchColumnStringField[] $comments
     * @param \StructType\SearchColumnEnumSelectField[] $compensationCurrency
     * @param \StructType\SearchColumnBooleanField[] $concurrentWebServicesUser
     * @param \StructType\SearchColumnEnumSelectField[] $country
     * @param \StructType\SearchColumnStringField[] $countryCode
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @param \StructType\SearchColumnSelectField[] $defaultAcctCorpCardExp
     * @param \StructType\SearchColumnSelectField[] $defaultExpenseReportCurrency
     * @param \StructType\SearchColumnStringField[] $defaultTaxReg
     * @param \StructType\SearchColumnSelectField[] $department
     * @param \StructType\SearchColumnBooleanField[] $eligibleForCommission
     * @param \StructType\SearchColumnStringField[] $email
     * @param \StructType\SearchColumnSelectField[] $employeeStatus
     * @param \StructType\SearchColumnSelectField[] $employeeType
     * @param \StructType\SearchColumnStringField[] $entityId
     * @param \StructType\SearchColumnLongField[] $entityNumber
     * @param \StructType\SearchColumnSelectField[] $ethnicity
     * @param \StructType\SearchColumnDoubleField[] $expenseLimit
     * @param \StructType\SearchColumnSelectField[] $expenseReportCurrency
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $fax
     * @param \StructType\SearchColumnStringField[] $firstName
     * @param \StructType\SearchColumnEnumSelectField[] $gender
     * @param \StructType\SearchColumnBooleanField[] $giveAccess
     * @param \StructType\SearchColumnEnumSelectField[] $globalSubscriptionStatus
     * @param \StructType\SearchColumnDateField[] $hireDate
     * @param \StructType\SearchColumnStringField[] $homePhone
     * @param \StructType\SearchColumnBooleanField[] $i9Verified
     * @param \StructType\SearchColumnSelectField[] $image
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isDefaultBilling
     * @param \StructType\SearchColumnBooleanField[] $isDefaultShipping
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnBooleanField[] $isJobResource
     * @param \StructType\SearchColumnBooleanField[] $isJobManager
     * @param \StructType\SearchColumnBooleanField[] $isSalesRep
     * @param \StructType\SearchColumnBooleanField[] $isSupportRep
     * @param \StructType\SearchColumnBooleanField[] $isTemplate
     * @param \StructType\SearchColumnSelectField[] $job
     * @param \StructType\SearchColumnDoubleField[] $laborCost
     * @param \StructType\SearchColumnEnumSelectField[] $language
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnStringField[] $lastName
     * @param \StructType\SearchColumnDateField[] $lastPaidDate
     * @param \StructType\SearchColumnDateField[] $lastReviewDate
     * @param \StructType\SearchColumnEnumSelectField[] $level
     * @param \StructType\SearchColumnSelectField[] $location
     * @param \StructType\SearchColumnSelectField[] $maritalStatus
     * @param \StructType\SearchColumnStringField[] $middleName
     * @param \StructType\SearchColumnStringField[] $mobilePhone
     * @param \StructType\SearchColumnDateField[] $nextReviewDate
     * @param \StructType\SearchColumnBooleanField[] $offlineAccess
     * @param \StructType\SearchColumnEnumSelectField[] $payFrequency
     * @param \StructType\SearchColumnDateField[] $permChangeDate
     * @param \StructType\SearchColumnStringField[] $permChangeLevel
     * @param \StructType\SearchColumnEnumSelectField[] $permission
     * @param \StructType\SearchColumnEnumSelectField[] $permissionChange
     * @param \StructType\SearchColumnStringField[] $phone
     * @param \StructType\SearchColumnStringField[] $phoneticName
     * @param \StructType\SearchColumnStringField[] $positionTitle
     * @param \StructType\SearchColumnDoubleField[] $primaryEarningAmount
     * @param \StructType\SearchColumnStringField[] $primaryEarningItem
     * @param \StructType\SearchColumnStringField[] $primaryEarningType
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderApprovalLimit
     * @param \StructType\SearchColumnSelectField[] $purchaseOrderApprover
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderLimit
     * @param \StructType\SearchColumnDateField[] $releaseDate
     * @param \StructType\SearchColumnSelectField[] $residentStatus
     * @param \StructType\SearchColumnSelectField[] $role
     * @param \StructType\SearchColumnStringField[] $roleChange
     * @param \StructType\SearchColumnStringField[] $roleChangeAction
     * @param \StructType\SearchColumnDateField[] $roleChangeDate
     * @param \StructType\SearchColumnSelectField[] $salesRole
     * @param \StructType\SearchColumnStringField[] $salutation
     * @param \StructType\SearchColumnStringField[] $shipAddress1
     * @param \StructType\SearchColumnStringField[] $shipAddress2
     * @param \StructType\SearchColumnStringField[] $shipAddress3
     * @param \StructType\SearchColumnStringField[] $shipAddressee
     * @param \StructType\SearchColumnStringField[] $shipAttention
     * @param \StructType\SearchColumnStringField[] $shipCity
     * @param \StructType\SearchColumnEnumSelectField[] $shipCountry
     * @param \StructType\SearchColumnStringField[] $shipCountryCode
     * @param \StructType\SearchColumnStringField[] $shipPhone
     * @param \StructType\SearchColumnStringField[] $shipState
     * @param \StructType\SearchColumnStringField[] $shipZip
     * @param \StructType\SearchColumnStringField[] $socialSecurityNumber
     * @param \StructType\SearchColumnDateField[] $startDateTimeOffCalc
     * @param \StructType\SearchColumnEnumSelectField[] $state
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @param \StructType\SearchColumnDateField[] $subscriptionDate
     * @param \StructType\SearchColumnBooleanField[] $subscriptionStatus
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @param \StructType\SearchColumnSelectField[] $supervisor
     * @param \StructType\SearchColumnDoubleField[] $targetUtilization
     * @param \StructType\SearchColumnEnumSelectField[] $terminationCategory
     * @param \StructType\SearchColumnStringField[] $terminationDetails
     * @param \StructType\SearchColumnSelectField[] $terminationReason
     * @param \StructType\SearchColumnEnumSelectField[] $terminationRegretted
     * @param \StructType\SearchColumnSelectField[] $timeApprover
     * @param \StructType\SearchColumnStringField[] $timeOffPlan
     * @param \StructType\SearchColumnStringField[] $title
     * @param \StructType\SearchColumnBooleanField[] $usePerquest
     * @param \StructType\SearchColumnBooleanField[] $useTimeData
     * @param \StructType\SearchColumnDateField[] $visaExpDate
     * @param \StructType\SearchColumnSelectField[] $visaType
     * @param \StructType\SearchColumnStringField[] $workCalendar
     * @param \StructType\SearchColumnSelectField[] $workplace
     * @param \StructType\SearchColumnStringField[] $zipCode
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $accountNumber = array(), array $address = array(), array $address1 = array(), array $address2 = array(), array $address3 = array(), array $addressee = array(), array $addressInternalId = array(), array $addressLabel = array(), array $addressPhone = array(), array $alienNumber = array(), array $allocation = array(), array $altEmail = array(), array $altName = array(), array $altPhone = array(), array $approvalLimit = array(), array $approver = array(), array $attention = array(), array $authWorkDate = array(), array $baseWage = array(), array $baseWageType = array(), array $billAddress = array(), array $billAddress1 = array(), array $billAddress2 = array(), array $billAddress3 = array(), array $billAddressee = array(), array $billAttention = array(), array $billCity = array(), array $billCountry = array(), array $billCountryCode = array(), array $billingClass = array(), array $billPhone = array(), array $billState = array(), array $billZipCode = array(), array $birthDate = array(), array $birthDay = array(), array $bonusTarget = array(), array $bonusTargetComment = array(), array $bonusTargetPayFrequency = array(), array $bonusTargetType = array(), array $city = array(), array $class = array(), array $comments = array(), array $compensationCurrency = array(), array $concurrentWebServicesUser = array(), array $country = array(), array $countryCode = array(), array $dateCreated = array(), array $defaultAcctCorpCardExp = array(), array $defaultExpenseReportCurrency = array(), array $defaultTaxReg = array(), array $department = array(), array $eligibleForCommission = array(), array $email = array(), array $employeeStatus = array(), array $employeeType = array(), array $entityId = array(), array $entityNumber = array(), array $ethnicity = array(), array $expenseLimit = array(), array $expenseReportCurrency = array(), array $externalId = array(), array $fax = array(), array $firstName = array(), array $gender = array(), array $giveAccess = array(), array $globalSubscriptionStatus = array(), array $hireDate = array(), array $homePhone = array(), array $i9Verified = array(), array $image = array(), array $internalId = array(), array $isDefaultBilling = array(), array $isDefaultShipping = array(), array $isInactive = array(), array $isJobResource = array(), array $isJobManager = array(), array $isSalesRep = array(), array $isSupportRep = array(), array $isTemplate = array(), array $job = array(), array $laborCost = array(), array $language = array(), array $lastModifiedDate = array(), array $lastName = array(), array $lastPaidDate = array(), array $lastReviewDate = array(), array $level = array(), array $location = array(), array $maritalStatus = array(), array $middleName = array(), array $mobilePhone = array(), array $nextReviewDate = array(), array $offlineAccess = array(), array $payFrequency = array(), array $permChangeDate = array(), array $permChangeLevel = array(), array $permission = array(), array $permissionChange = array(), array $phone = array(), array $phoneticName = array(), array $positionTitle = array(), array $primaryEarningAmount = array(), array $primaryEarningItem = array(), array $primaryEarningType = array(), array $purchaseOrderApprovalLimit = array(), array $purchaseOrderApprover = array(), array $purchaseOrderLimit = array(), array $releaseDate = array(), array $residentStatus = array(), array $role = array(), array $roleChange = array(), array $roleChangeAction = array(), array $roleChangeDate = array(), array $salesRole = array(), array $salutation = array(), array $shipAddress1 = array(), array $shipAddress2 = array(), array $shipAddress3 = array(), array $shipAddressee = array(), array $shipAttention = array(), array $shipCity = array(), array $shipCountry = array(), array $shipCountryCode = array(), array $shipPhone = array(), array $shipState = array(), array $shipZip = array(), array $socialSecurityNumber = array(), array $startDateTimeOffCalc = array(), array $state = array(), array $subscription = array(), array $subscriptionDate = array(), array $subscriptionStatus = array(), array $subsidiary = array(), array $supervisor = array(), array $targetUtilization = array(), array $terminationCategory = array(), array $terminationDetails = array(), array $terminationReason = array(), array $terminationRegretted = array(), array $timeApprover = array(), array $timeOffPlan = array(), array $title = array(), array $usePerquest = array(), array $useTimeData = array(), array $visaExpDate = array(), array $visaType = array(), array $workCalendar = array(), array $workplace = array(), array $zipCode = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAccountNumber($accountNumber)
            ->setAddress($address)
            ->setAddress1($address1)
            ->setAddress2($address2)
            ->setAddress3($address3)
            ->setAddressee($addressee)
            ->setAddressInternalId($addressInternalId)
            ->setAddressLabel($addressLabel)
            ->setAddressPhone($addressPhone)
            ->setAlienNumber($alienNumber)
            ->setAllocation($allocation)
            ->setAltEmail($altEmail)
            ->setAltName($altName)
            ->setAltPhone($altPhone)
            ->setApprovalLimit($approvalLimit)
            ->setApprover($approver)
            ->setAttention($attention)
            ->setAuthWorkDate($authWorkDate)
            ->setBaseWage($baseWage)
            ->setBaseWageType($baseWageType)
            ->setBillAddress($billAddress)
            ->setBillAddress1($billAddress1)
            ->setBillAddress2($billAddress2)
            ->setBillAddress3($billAddress3)
            ->setBillAddressee($billAddressee)
            ->setBillAttention($billAttention)
            ->setBillCity($billCity)
            ->setBillCountry($billCountry)
            ->setBillCountryCode($billCountryCode)
            ->setBillingClass($billingClass)
            ->setBillPhone($billPhone)
            ->setBillState($billState)
            ->setBillZipCode($billZipCode)
            ->setBirthDate($birthDate)
            ->setBirthDay($birthDay)
            ->setBonusTarget($bonusTarget)
            ->setBonusTargetComment($bonusTargetComment)
            ->setBonusTargetPayFrequency($bonusTargetPayFrequency)
            ->setBonusTargetType($bonusTargetType)
            ->setCity($city)
            ->setClass($class)
            ->setComments($comments)
            ->setCompensationCurrency($compensationCurrency)
            ->setConcurrentWebServicesUser($concurrentWebServicesUser)
            ->setCountry($country)
            ->setCountryCode($countryCode)
            ->setDateCreated($dateCreated)
            ->setDefaultAcctCorpCardExp($defaultAcctCorpCardExp)
            ->setDefaultExpenseReportCurrency($defaultExpenseReportCurrency)
            ->setDefaultTaxReg($defaultTaxReg)
            ->setDepartment($department)
            ->setEligibleForCommission($eligibleForCommission)
            ->setEmail($email)
            ->setEmployeeStatus($employeeStatus)
            ->setEmployeeType($employeeType)
            ->setEntityId($entityId)
            ->setEntityNumber($entityNumber)
            ->setEthnicity($ethnicity)
            ->setExpenseLimit($expenseLimit)
            ->setExpenseReportCurrency($expenseReportCurrency)
            ->setExternalId($externalId)
            ->setFax($fax)
            ->setFirstName($firstName)
            ->setGender($gender)
            ->setGiveAccess($giveAccess)
            ->setGlobalSubscriptionStatus($globalSubscriptionStatus)
            ->setHireDate($hireDate)
            ->setHomePhone($homePhone)
            ->setI9Verified($i9Verified)
            ->setImage($image)
            ->setInternalId($internalId)
            ->setIsDefaultBilling($isDefaultBilling)
            ->setIsDefaultShipping($isDefaultShipping)
            ->setIsInactive($isInactive)
            ->setIsJobResource($isJobResource)
            ->setIsJobManager($isJobManager)
            ->setIsSalesRep($isSalesRep)
            ->setIsSupportRep($isSupportRep)
            ->setIsTemplate($isTemplate)
            ->setJob($job)
            ->setLaborCost($laborCost)
            ->setLanguage($language)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLastName($lastName)
            ->setLastPaidDate($lastPaidDate)
            ->setLastReviewDate($lastReviewDate)
            ->setLevel($level)
            ->setLocation($location)
            ->setMaritalStatus($maritalStatus)
            ->setMiddleName($middleName)
            ->setMobilePhone($mobilePhone)
            ->setNextReviewDate($nextReviewDate)
            ->setOfflineAccess($offlineAccess)
            ->setPayFrequency($payFrequency)
            ->setPermChangeDate($permChangeDate)
            ->setPermChangeLevel($permChangeLevel)
            ->setPermission($permission)
            ->setPermissionChange($permissionChange)
            ->setPhone($phone)
            ->setPhoneticName($phoneticName)
            ->setPositionTitle($positionTitle)
            ->setPrimaryEarningAmount($primaryEarningAmount)
            ->setPrimaryEarningItem($primaryEarningItem)
            ->setPrimaryEarningType($primaryEarningType)
            ->setPurchaseOrderApprovalLimit($purchaseOrderApprovalLimit)
            ->setPurchaseOrderApprover($purchaseOrderApprover)
            ->setPurchaseOrderLimit($purchaseOrderLimit)
            ->setReleaseDate($releaseDate)
            ->setResidentStatus($residentStatus)
            ->setRole($role)
            ->setRoleChange($roleChange)
            ->setRoleChangeAction($roleChangeAction)
            ->setRoleChangeDate($roleChangeDate)
            ->setSalesRole($salesRole)
            ->setSalutation($salutation)
            ->setShipAddress1($shipAddress1)
            ->setShipAddress2($shipAddress2)
            ->setShipAddress3($shipAddress3)
            ->setShipAddressee($shipAddressee)
            ->setShipAttention($shipAttention)
            ->setShipCity($shipCity)
            ->setShipCountry($shipCountry)
            ->setShipCountryCode($shipCountryCode)
            ->setShipPhone($shipPhone)
            ->setShipState($shipState)
            ->setShipZip($shipZip)
            ->setSocialSecurityNumber($socialSecurityNumber)
            ->setStartDateTimeOffCalc($startDateTimeOffCalc)
            ->setState($state)
            ->setSubscription($subscription)
            ->setSubscriptionDate($subscriptionDate)
            ->setSubscriptionStatus($subscriptionStatus)
            ->setSubsidiary($subsidiary)
            ->setSupervisor($supervisor)
            ->setTargetUtilization($targetUtilization)
            ->setTerminationCategory($terminationCategory)
            ->setTerminationDetails($terminationDetails)
            ->setTerminationReason($terminationReason)
            ->setTerminationRegretted($terminationRegretted)
            ->setTimeApprover($timeApprover)
            ->setTimeOffPlan($timeOffPlan)
            ->setTitle($title)
            ->setUsePerquest($usePerquest)
            ->setUseTimeData($useTimeData)
            ->setVisaExpDate($visaExpDate)
            ->setVisaType($visaType)
            ->setWorkCalendar($workCalendar)
            ->setWorkplace($workplace)
            ->setZipCode($zipCode)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get accountNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAccountNumber()
    {
        return $this->accountNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountNumberForArrayConstraintsFromSetAccountNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAccountNumberItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAccountNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAccountNumberItem) ? get_class($employeeSearchRowBasicAccountNumberItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAccountNumberItem), var_export($employeeSearchRowBasicAccountNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountNumber 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 accountNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $accountNumber
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAccountNumber(array $accountNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($accountNumberArrayErrorMessage = self::validateAccountNumberForArrayConstraintsFromSetAccountNumber($accountNumber))) {
            throw new \InvalidArgumentException($accountNumberArrayErrorMessage, __LINE__);
        }
        $this->accountNumber = $accountNumber;
        return $this;
    }
    /**
     * Add item to accountNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAccountNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The accountNumber 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->accountNumber[] = $item;
        return $this;
    }
    /**
     * Get address value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddress()
    {
        return $this->address;
    }
    /**
     * This method is responsible for validating the values passed to the setAddress method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddress method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddressForArrayConstraintsFromSetAddress(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAddressItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddressItem) ? get_class($employeeSearchRowBasicAddressItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddressItem), var_export($employeeSearchRowBasicAddressItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The address 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 address value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $address
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAddress(array $address = array())
    {
        // validation for constraint: array
        if ('' !== ($addressArrayErrorMessage = self::validateAddressForArrayConstraintsFromSetAddress($address))) {
            throw new \InvalidArgumentException($addressArrayErrorMessage, __LINE__);
        }
        $this->address = $address;
        return $this;
    }
    /**
     * Add item to address value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAddress(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The address 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->address[] = $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 $employeeSearchRowBasicAddress1Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddress1Item) ? get_class($employeeSearchRowBasicAddress1Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddress1Item), var_export($employeeSearchRowBasicAddress1Item, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 $employeeSearchRowBasicAddress2Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddress2Item) ? get_class($employeeSearchRowBasicAddress2Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddress2Item), var_export($employeeSearchRowBasicAddress2Item, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 $employeeSearchRowBasicAddress3Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddress3Item) ? get_class($employeeSearchRowBasicAddress3Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddress3Item), var_export($employeeSearchRowBasicAddress3Item, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 addressee value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddressee()
    {
        return $this->addressee;
    }
    /**
     * This method is responsible for validating the values passed to the setAddressee method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddressee method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddresseeForArrayConstraintsFromSetAddressee(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAddresseeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddresseeItem) ? get_class($employeeSearchRowBasicAddresseeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddresseeItem), var_export($employeeSearchRowBasicAddresseeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The addressee 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 addressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $addressee
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAddressee(array $addressee = array())
    {
        // validation for constraint: array
        if ('' !== ($addresseeArrayErrorMessage = self::validateAddresseeForArrayConstraintsFromSetAddressee($addressee))) {
            throw new \InvalidArgumentException($addresseeArrayErrorMessage, __LINE__);
        }
        $this->addressee = $addressee;
        return $this;
    }
    /**
     * Add item to addressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAddressee(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The addressee 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->addressee[] = $item;
        return $this;
    }
    /**
     * Get addressInternalId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddressInternalId()
    {
        return $this->addressInternalId;
    }
    /**
     * This method is responsible for validating the values passed to the setAddressInternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddressInternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddressInternalIdForArrayConstraintsFromSetAddressInternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAddressInternalIdItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddressInternalIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddressInternalIdItem) ? get_class($employeeSearchRowBasicAddressInternalIdItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddressInternalIdItem), var_export($employeeSearchRowBasicAddressInternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The addressInternalId 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 addressInternalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $addressInternalId
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAddressInternalId(array $addressInternalId = array())
    {
        // validation for constraint: array
        if ('' !== ($addressInternalIdArrayErrorMessage = self::validateAddressInternalIdForArrayConstraintsFromSetAddressInternalId($addressInternalId))) {
            throw new \InvalidArgumentException($addressInternalIdArrayErrorMessage, __LINE__);
        }
        $this->addressInternalId = $addressInternalId;
        return $this;
    }
    /**
     * Add item to addressInternalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAddressInternalId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The addressInternalId 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->addressInternalId[] = $item;
        return $this;
    }
    /**
     * Get addressLabel value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddressLabel()
    {
        return $this->addressLabel;
    }
    /**
     * This method is responsible for validating the values passed to the setAddressLabel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddressLabel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddressLabelForArrayConstraintsFromSetAddressLabel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAddressLabelItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddressLabelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddressLabelItem) ? get_class($employeeSearchRowBasicAddressLabelItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddressLabelItem), var_export($employeeSearchRowBasicAddressLabelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The addressLabel 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 addressLabel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $addressLabel
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAddressLabel(array $addressLabel = array())
    {
        // validation for constraint: array
        if ('' !== ($addressLabelArrayErrorMessage = self::validateAddressLabelForArrayConstraintsFromSetAddressLabel($addressLabel))) {
            throw new \InvalidArgumentException($addressLabelArrayErrorMessage, __LINE__);
        }
        $this->addressLabel = $addressLabel;
        return $this;
    }
    /**
     * Add item to addressLabel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAddressLabel(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The addressLabel 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->addressLabel[] = $item;
        return $this;
    }
    /**
     * Get addressPhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAddressPhone()
    {
        return $this->addressPhone;
    }
    /**
     * This method is responsible for validating the values passed to the setAddressPhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAddressPhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAddressPhoneForArrayConstraintsFromSetAddressPhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAddressPhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAddressPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAddressPhoneItem) ? get_class($employeeSearchRowBasicAddressPhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAddressPhoneItem), var_export($employeeSearchRowBasicAddressPhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The addressPhone 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 addressPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $addressPhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAddressPhone(array $addressPhone = array())
    {
        // validation for constraint: array
        if ('' !== ($addressPhoneArrayErrorMessage = self::validateAddressPhoneForArrayConstraintsFromSetAddressPhone($addressPhone))) {
            throw new \InvalidArgumentException($addressPhoneArrayErrorMessage, __LINE__);
        }
        $this->addressPhone = $addressPhone;
        return $this;
    }
    /**
     * Add item to addressPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAddressPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The addressPhone 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->addressPhone[] = $item;
        return $this;
    }
    /**
     * Get alienNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAlienNumber()
    {
        return $this->alienNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setAlienNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAlienNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAlienNumberForArrayConstraintsFromSetAlienNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAlienNumberItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAlienNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAlienNumberItem) ? get_class($employeeSearchRowBasicAlienNumberItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAlienNumberItem), var_export($employeeSearchRowBasicAlienNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The alienNumber 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 alienNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $alienNumber
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAlienNumber(array $alienNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($alienNumberArrayErrorMessage = self::validateAlienNumberForArrayConstraintsFromSetAlienNumber($alienNumber))) {
            throw new \InvalidArgumentException($alienNumberArrayErrorMessage, __LINE__);
        }
        $this->alienNumber = $alienNumber;
        return $this;
    }
    /**
     * Add item to alienNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAlienNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The alienNumber 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->alienNumber[] = $item;
        return $this;
    }
    /**
     * Get allocation value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getAllocation()
    {
        return $this->allocation;
    }
    /**
     * This method is responsible for validating the values passed to the setAllocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllocationForArrayConstraintsFromSetAllocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAllocationItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAllocationItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAllocationItem) ? get_class($employeeSearchRowBasicAllocationItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAllocationItem), var_export($employeeSearchRowBasicAllocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allocation 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 allocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $allocation
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAllocation(array $allocation = array())
    {
        // validation for constraint: array
        if ('' !== ($allocationArrayErrorMessage = self::validateAllocationForArrayConstraintsFromSetAllocation($allocation))) {
            throw new \InvalidArgumentException($allocationArrayErrorMessage, __LINE__);
        }
        $this->allocation = $allocation;
        return $this;
    }
    /**
     * Add item to allocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAllocation(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The allocation 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->allocation[] = $item;
        return $this;
    }
    /**
     * Get altEmail value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAltEmail()
    {
        return $this->altEmail;
    }
    /**
     * This method is responsible for validating the values passed to the setAltEmail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAltEmail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAltEmailForArrayConstraintsFromSetAltEmail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAltEmailItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAltEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAltEmailItem) ? get_class($employeeSearchRowBasicAltEmailItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAltEmailItem), var_export($employeeSearchRowBasicAltEmailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The altEmail 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 altEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $altEmail
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAltEmail(array $altEmail = array())
    {
        // validation for constraint: array
        if ('' !== ($altEmailArrayErrorMessage = self::validateAltEmailForArrayConstraintsFromSetAltEmail($altEmail))) {
            throw new \InvalidArgumentException($altEmailArrayErrorMessage, __LINE__);
        }
        $this->altEmail = $altEmail;
        return $this;
    }
    /**
     * Add item to altEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAltEmail(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The altEmail 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->altEmail[] = $item;
        return $this;
    }
    /**
     * Get altName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAltName()
    {
        return $this->altName;
    }
    /**
     * This method is responsible for validating the values passed to the setAltName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAltName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAltNameForArrayConstraintsFromSetAltName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAltNameItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAltNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAltNameItem) ? get_class($employeeSearchRowBasicAltNameItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAltNameItem), var_export($employeeSearchRowBasicAltNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The altName 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 altName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $altName
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAltName(array $altName = array())
    {
        // validation for constraint: array
        if ('' !== ($altNameArrayErrorMessage = self::validateAltNameForArrayConstraintsFromSetAltName($altName))) {
            throw new \InvalidArgumentException($altNameArrayErrorMessage, __LINE__);
        }
        $this->altName = $altName;
        return $this;
    }
    /**
     * Add item to altName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAltName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The altName 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->altName[] = $item;
        return $this;
    }
    /**
     * Get altPhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAltPhone()
    {
        return $this->altPhone;
    }
    /**
     * This method is responsible for validating the values passed to the setAltPhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAltPhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAltPhoneForArrayConstraintsFromSetAltPhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAltPhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAltPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAltPhoneItem) ? get_class($employeeSearchRowBasicAltPhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAltPhoneItem), var_export($employeeSearchRowBasicAltPhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The altPhone 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 altPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $altPhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAltPhone(array $altPhone = array())
    {
        // validation for constraint: array
        if ('' !== ($altPhoneArrayErrorMessage = self::validateAltPhoneForArrayConstraintsFromSetAltPhone($altPhone))) {
            throw new \InvalidArgumentException($altPhoneArrayErrorMessage, __LINE__);
        }
        $this->altPhone = $altPhone;
        return $this;
    }
    /**
     * Add item to altPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAltPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The altPhone 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->altPhone[] = $item;
        return $this;
    }
    /**
     * Get approvalLimit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getApprovalLimit()
    {
        return $this->approvalLimit;
    }
    /**
     * This method is responsible for validating the values passed to the setApprovalLimit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setApprovalLimit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateApprovalLimitForArrayConstraintsFromSetApprovalLimit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicApprovalLimitItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicApprovalLimitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicApprovalLimitItem) ? get_class($employeeSearchRowBasicApprovalLimitItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicApprovalLimitItem), var_export($employeeSearchRowBasicApprovalLimitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The approvalLimit 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 approvalLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $approvalLimit
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setApprovalLimit(array $approvalLimit = array())
    {
        // validation for constraint: array
        if ('' !== ($approvalLimitArrayErrorMessage = self::validateApprovalLimitForArrayConstraintsFromSetApprovalLimit($approvalLimit))) {
            throw new \InvalidArgumentException($approvalLimitArrayErrorMessage, __LINE__);
        }
        $this->approvalLimit = $approvalLimit;
        return $this;
    }
    /**
     * Add item to approvalLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToApprovalLimit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The approvalLimit 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->approvalLimit[] = $item;
        return $this;
    }
    /**
     * Get approver value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getApprover()
    {
        return $this->approver;
    }
    /**
     * This method is responsible for validating the values passed to the setApprover method
     * This method is willingly generated in order to preserve the one-line inline validation within the setApprover method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateApproverForArrayConstraintsFromSetApprover(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicApproverItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicApproverItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicApproverItem) ? get_class($employeeSearchRowBasicApproverItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicApproverItem), var_export($employeeSearchRowBasicApproverItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The approver 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 approver value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $approver
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setApprover(array $approver = array())
    {
        // validation for constraint: array
        if ('' !== ($approverArrayErrorMessage = self::validateApproverForArrayConstraintsFromSetApprover($approver))) {
            throw new \InvalidArgumentException($approverArrayErrorMessage, __LINE__);
        }
        $this->approver = $approver;
        return $this;
    }
    /**
     * Add item to approver value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToApprover(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The approver 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->approver[] = $item;
        return $this;
    }
    /**
     * Get attention value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAttention()
    {
        return $this->attention;
    }
    /**
     * This method is responsible for validating the values passed to the setAttention method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAttention method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAttentionForArrayConstraintsFromSetAttention(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAttentionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAttentionItem) ? get_class($employeeSearchRowBasicAttentionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAttentionItem), var_export($employeeSearchRowBasicAttentionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The attention 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 attention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $attention
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAttention(array $attention = array())
    {
        // validation for constraint: array
        if ('' !== ($attentionArrayErrorMessage = self::validateAttentionForArrayConstraintsFromSetAttention($attention))) {
            throw new \InvalidArgumentException($attentionArrayErrorMessage, __LINE__);
        }
        $this->attention = $attention;
        return $this;
    }
    /**
     * Add item to attention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAttention(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The attention 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->attention[] = $item;
        return $this;
    }
    /**
     * Get authWorkDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getAuthWorkDate()
    {
        return $this->authWorkDate;
    }
    /**
     * This method is responsible for validating the values passed to the setAuthWorkDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAuthWorkDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAuthWorkDateForArrayConstraintsFromSetAuthWorkDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicAuthWorkDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicAuthWorkDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicAuthWorkDateItem) ? get_class($employeeSearchRowBasicAuthWorkDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicAuthWorkDateItem), var_export($employeeSearchRowBasicAuthWorkDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The authWorkDate 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 authWorkDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $authWorkDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setAuthWorkDate(array $authWorkDate = array())
    {
        // validation for constraint: array
        if ('' !== ($authWorkDateArrayErrorMessage = self::validateAuthWorkDateForArrayConstraintsFromSetAuthWorkDate($authWorkDate))) {
            throw new \InvalidArgumentException($authWorkDateArrayErrorMessage, __LINE__);
        }
        $this->authWorkDate = $authWorkDate;
        return $this;
    }
    /**
     * Add item to authWorkDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToAuthWorkDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The authWorkDate 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->authWorkDate[] = $item;
        return $this;
    }
    /**
     * Get baseWage value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBaseWage()
    {
        return $this->baseWage;
    }
    /**
     * This method is responsible for validating the values passed to the setBaseWage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBaseWage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBaseWageForArrayConstraintsFromSetBaseWage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBaseWageItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBaseWageItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBaseWageItem) ? get_class($employeeSearchRowBasicBaseWageItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBaseWageItem), var_export($employeeSearchRowBasicBaseWageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The baseWage 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 baseWage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $baseWage
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBaseWage(array $baseWage = array())
    {
        // validation for constraint: array
        if ('' !== ($baseWageArrayErrorMessage = self::validateBaseWageForArrayConstraintsFromSetBaseWage($baseWage))) {
            throw new \InvalidArgumentException($baseWageArrayErrorMessage, __LINE__);
        }
        $this->baseWage = $baseWage;
        return $this;
    }
    /**
     * Add item to baseWage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBaseWage(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The baseWage 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->baseWage[] = $item;
        return $this;
    }
    /**
     * Get baseWageType value
     * @return \StructType\SearchEnumMultiSelectField[]|null
     */
    public function getBaseWageType()
    {
        return $this->baseWageType;
    }
    /**
     * This method is responsible for validating the values passed to the setBaseWageType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBaseWageType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBaseWageTypeForArrayConstraintsFromSetBaseWageType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBaseWageTypeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBaseWageTypeItem instanceof \StructType\SearchEnumMultiSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBaseWageTypeItem) ? get_class($employeeSearchRowBasicBaseWageTypeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBaseWageTypeItem), var_export($employeeSearchRowBasicBaseWageTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The baseWageType property can only contain items of type \StructType\SearchEnumMultiSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set baseWageType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchEnumMultiSelectField[] $baseWageType
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBaseWageType(array $baseWageType = array())
    {
        // validation for constraint: array
        if ('' !== ($baseWageTypeArrayErrorMessage = self::validateBaseWageTypeForArrayConstraintsFromSetBaseWageType($baseWageType))) {
            throw new \InvalidArgumentException($baseWageTypeArrayErrorMessage, __LINE__);
        }
        $this->baseWageType = $baseWageType;
        return $this;
    }
    /**
     * Add item to baseWageType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchEnumMultiSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBaseWageType(\StructType\SearchEnumMultiSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchEnumMultiSelectField) {
            throw new \InvalidArgumentException(sprintf('The baseWageType property can only contain items of type \StructType\SearchEnumMultiSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->baseWageType[] = $item;
        return $this;
    }
    /**
     * Get billAddress value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAddress()
    {
        return $this->billAddress;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAddress method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAddress method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAddressForArrayConstraintsFromSetBillAddress(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAddressItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAddressItem) ? get_class($employeeSearchRowBasicBillAddressItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAddressItem), var_export($employeeSearchRowBasicBillAddressItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAddress 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 billAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAddress
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAddress(array $billAddress = array())
    {
        // validation for constraint: array
        if ('' !== ($billAddressArrayErrorMessage = self::validateBillAddressForArrayConstraintsFromSetBillAddress($billAddress))) {
            throw new \InvalidArgumentException($billAddressArrayErrorMessage, __LINE__);
        }
        $this->billAddress = $billAddress;
        return $this;
    }
    /**
     * Add item to billAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAddress(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAddress 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->billAddress[] = $item;
        return $this;
    }
    /**
     * Get billAddress1 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAddress1()
    {
        return $this->billAddress1;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAddress1 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAddress1 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAddress1ForArrayConstraintsFromSetBillAddress1(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAddress1Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAddress1Item) ? get_class($employeeSearchRowBasicBillAddress1Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAddress1Item), var_export($employeeSearchRowBasicBillAddress1Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAddress1 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 billAddress1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAddress1
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAddress1(array $billAddress1 = array())
    {
        // validation for constraint: array
        if ('' !== ($billAddress1ArrayErrorMessage = self::validateBillAddress1ForArrayConstraintsFromSetBillAddress1($billAddress1))) {
            throw new \InvalidArgumentException($billAddress1ArrayErrorMessage, __LINE__);
        }
        $this->billAddress1 = $billAddress1;
        return $this;
    }
    /**
     * Add item to billAddress1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAddress1(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAddress1 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->billAddress1[] = $item;
        return $this;
    }
    /**
     * Get billAddress2 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAddress2()
    {
        return $this->billAddress2;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAddress2 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAddress2 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAddress2ForArrayConstraintsFromSetBillAddress2(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAddress2Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAddress2Item) ? get_class($employeeSearchRowBasicBillAddress2Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAddress2Item), var_export($employeeSearchRowBasicBillAddress2Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAddress2 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 billAddress2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAddress2
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAddress2(array $billAddress2 = array())
    {
        // validation for constraint: array
        if ('' !== ($billAddress2ArrayErrorMessage = self::validateBillAddress2ForArrayConstraintsFromSetBillAddress2($billAddress2))) {
            throw new \InvalidArgumentException($billAddress2ArrayErrorMessage, __LINE__);
        }
        $this->billAddress2 = $billAddress2;
        return $this;
    }
    /**
     * Add item to billAddress2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAddress2(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAddress2 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->billAddress2[] = $item;
        return $this;
    }
    /**
     * Get billAddress3 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAddress3()
    {
        return $this->billAddress3;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAddress3 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAddress3 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAddress3ForArrayConstraintsFromSetBillAddress3(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAddress3Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAddress3Item) ? get_class($employeeSearchRowBasicBillAddress3Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAddress3Item), var_export($employeeSearchRowBasicBillAddress3Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAddress3 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 billAddress3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAddress3
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAddress3(array $billAddress3 = array())
    {
        // validation for constraint: array
        if ('' !== ($billAddress3ArrayErrorMessage = self::validateBillAddress3ForArrayConstraintsFromSetBillAddress3($billAddress3))) {
            throw new \InvalidArgumentException($billAddress3ArrayErrorMessage, __LINE__);
        }
        $this->billAddress3 = $billAddress3;
        return $this;
    }
    /**
     * Add item to billAddress3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAddress3(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAddress3 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->billAddress3[] = $item;
        return $this;
    }
    /**
     * Get billAddressee value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAddressee()
    {
        return $this->billAddressee;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAddressee method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAddressee method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAddresseeForArrayConstraintsFromSetBillAddressee(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAddresseeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAddresseeItem) ? get_class($employeeSearchRowBasicBillAddresseeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAddresseeItem), var_export($employeeSearchRowBasicBillAddresseeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAddressee 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 billAddressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAddressee
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAddressee(array $billAddressee = array())
    {
        // validation for constraint: array
        if ('' !== ($billAddresseeArrayErrorMessage = self::validateBillAddresseeForArrayConstraintsFromSetBillAddressee($billAddressee))) {
            throw new \InvalidArgumentException($billAddresseeArrayErrorMessage, __LINE__);
        }
        $this->billAddressee = $billAddressee;
        return $this;
    }
    /**
     * Add item to billAddressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAddressee(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAddressee 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->billAddressee[] = $item;
        return $this;
    }
    /**
     * Get billAttention value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillAttention()
    {
        return $this->billAttention;
    }
    /**
     * This method is responsible for validating the values passed to the setBillAttention method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillAttention method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillAttentionForArrayConstraintsFromSetBillAttention(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillAttentionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillAttentionItem) ? get_class($employeeSearchRowBasicBillAttentionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillAttentionItem), var_export($employeeSearchRowBasicBillAttentionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billAttention 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 billAttention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billAttention
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillAttention(array $billAttention = array())
    {
        // validation for constraint: array
        if ('' !== ($billAttentionArrayErrorMessage = self::validateBillAttentionForArrayConstraintsFromSetBillAttention($billAttention))) {
            throw new \InvalidArgumentException($billAttentionArrayErrorMessage, __LINE__);
        }
        $this->billAttention = $billAttention;
        return $this;
    }
    /**
     * Add item to billAttention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillAttention(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billAttention 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->billAttention[] = $item;
        return $this;
    }
    /**
     * Get billCity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillCity()
    {
        return $this->billCity;
    }
    /**
     * This method is responsible for validating the values passed to the setBillCity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillCity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillCityForArrayConstraintsFromSetBillCity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillCityItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillCityItem) ? get_class($employeeSearchRowBasicBillCityItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillCityItem), var_export($employeeSearchRowBasicBillCityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billCity 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 billCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billCity
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillCity(array $billCity = array())
    {
        // validation for constraint: array
        if ('' !== ($billCityArrayErrorMessage = self::validateBillCityForArrayConstraintsFromSetBillCity($billCity))) {
            throw new \InvalidArgumentException($billCityArrayErrorMessage, __LINE__);
        }
        $this->billCity = $billCity;
        return $this;
    }
    /**
     * Add item to billCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillCity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billCity 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->billCity[] = $item;
        return $this;
    }
    /**
     * Get billCountry value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getBillCountry()
    {
        return $this->billCountry;
    }
    /**
     * This method is responsible for validating the values passed to the setBillCountry method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillCountry method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillCountryForArrayConstraintsFromSetBillCountry(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillCountryItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillCountryItem) ? get_class($employeeSearchRowBasicBillCountryItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillCountryItem), var_export($employeeSearchRowBasicBillCountryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billCountry 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 billCountry value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $billCountry
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillCountry(array $billCountry = array())
    {
        // validation for constraint: array
        if ('' !== ($billCountryArrayErrorMessage = self::validateBillCountryForArrayConstraintsFromSetBillCountry($billCountry))) {
            throw new \InvalidArgumentException($billCountryArrayErrorMessage, __LINE__);
        }
        $this->billCountry = $billCountry;
        return $this;
    }
    /**
     * Add item to billCountry value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillCountry(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The billCountry 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->billCountry[] = $item;
        return $this;
    }
    /**
     * Get billCountryCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillCountryCode()
    {
        return $this->billCountryCode;
    }
    /**
     * This method is responsible for validating the values passed to the setBillCountryCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillCountryCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillCountryCodeForArrayConstraintsFromSetBillCountryCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillCountryCodeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillCountryCodeItem) ? get_class($employeeSearchRowBasicBillCountryCodeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillCountryCodeItem), var_export($employeeSearchRowBasicBillCountryCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billCountryCode 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 billCountryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billCountryCode
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillCountryCode(array $billCountryCode = array())
    {
        // validation for constraint: array
        if ('' !== ($billCountryCodeArrayErrorMessage = self::validateBillCountryCodeForArrayConstraintsFromSetBillCountryCode($billCountryCode))) {
            throw new \InvalidArgumentException($billCountryCodeArrayErrorMessage, __LINE__);
        }
        $this->billCountryCode = $billCountryCode;
        return $this;
    }
    /**
     * Add item to billCountryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillCountryCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billCountryCode 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->billCountryCode[] = $item;
        return $this;
    }
    /**
     * Get billingClass value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillingClass()
    {
        return $this->billingClass;
    }
    /**
     * This method is responsible for validating the values passed to the setBillingClass method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillingClass method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillingClassForArrayConstraintsFromSetBillingClass(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillingClassItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillingClassItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillingClassItem) ? get_class($employeeSearchRowBasicBillingClassItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillingClassItem), var_export($employeeSearchRowBasicBillingClassItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billingClass 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 billingClass value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billingClass
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillingClass(array $billingClass = array())
    {
        // validation for constraint: array
        if ('' !== ($billingClassArrayErrorMessage = self::validateBillingClassForArrayConstraintsFromSetBillingClass($billingClass))) {
            throw new \InvalidArgumentException($billingClassArrayErrorMessage, __LINE__);
        }
        $this->billingClass = $billingClass;
        return $this;
    }
    /**
     * Add item to billingClass value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillingClass(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billingClass 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->billingClass[] = $item;
        return $this;
    }
    /**
     * Get billPhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillPhone()
    {
        return $this->billPhone;
    }
    /**
     * This method is responsible for validating the values passed to the setBillPhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillPhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillPhoneForArrayConstraintsFromSetBillPhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillPhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillPhoneItem) ? get_class($employeeSearchRowBasicBillPhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillPhoneItem), var_export($employeeSearchRowBasicBillPhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billPhone 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 billPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billPhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillPhone(array $billPhone = array())
    {
        // validation for constraint: array
        if ('' !== ($billPhoneArrayErrorMessage = self::validateBillPhoneForArrayConstraintsFromSetBillPhone($billPhone))) {
            throw new \InvalidArgumentException($billPhoneArrayErrorMessage, __LINE__);
        }
        $this->billPhone = $billPhone;
        return $this;
    }
    /**
     * Add item to billPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billPhone 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->billPhone[] = $item;
        return $this;
    }
    /**
     * Get billState value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillState()
    {
        return $this->billState;
    }
    /**
     * This method is responsible for validating the values passed to the setBillState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillStateForArrayConstraintsFromSetBillState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillStateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillStateItem) ? get_class($employeeSearchRowBasicBillStateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillStateItem), var_export($employeeSearchRowBasicBillStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billState 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 billState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billState
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillState(array $billState = array())
    {
        // validation for constraint: array
        if ('' !== ($billStateArrayErrorMessage = self::validateBillStateForArrayConstraintsFromSetBillState($billState))) {
            throw new \InvalidArgumentException($billStateArrayErrorMessage, __LINE__);
        }
        $this->billState = $billState;
        return $this;
    }
    /**
     * Add item to billState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillState(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billState 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->billState[] = $item;
        return $this;
    }
    /**
     * Get billZipCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBillZipCode()
    {
        return $this->billZipCode;
    }
    /**
     * This method is responsible for validating the values passed to the setBillZipCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillZipCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillZipCodeForArrayConstraintsFromSetBillZipCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBillZipCodeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBillZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBillZipCodeItem) ? get_class($employeeSearchRowBasicBillZipCodeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBillZipCodeItem), var_export($employeeSearchRowBasicBillZipCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billZipCode 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 billZipCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $billZipCode
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBillZipCode(array $billZipCode = array())
    {
        // validation for constraint: array
        if ('' !== ($billZipCodeArrayErrorMessage = self::validateBillZipCodeForArrayConstraintsFromSetBillZipCode($billZipCode))) {
            throw new \InvalidArgumentException($billZipCodeArrayErrorMessage, __LINE__);
        }
        $this->billZipCode = $billZipCode;
        return $this;
    }
    /**
     * Add item to billZipCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBillZipCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The billZipCode 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->billZipCode[] = $item;
        return $this;
    }
    /**
     * Get birthDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getBirthDate()
    {
        return $this->birthDate;
    }
    /**
     * This method is responsible for validating the values passed to the setBirthDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBirthDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBirthDateForArrayConstraintsFromSetBirthDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBirthDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBirthDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBirthDateItem) ? get_class($employeeSearchRowBasicBirthDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBirthDateItem), var_export($employeeSearchRowBasicBirthDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The birthDate 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 birthDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $birthDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBirthDate(array $birthDate = array())
    {
        // validation for constraint: array
        if ('' !== ($birthDateArrayErrorMessage = self::validateBirthDateForArrayConstraintsFromSetBirthDate($birthDate))) {
            throw new \InvalidArgumentException($birthDateArrayErrorMessage, __LINE__);
        }
        $this->birthDate = $birthDate;
        return $this;
    }
    /**
     * Add item to birthDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBirthDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The birthDate 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->birthDate[] = $item;
        return $this;
    }
    /**
     * Get birthDay value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getBirthDay()
    {
        return $this->birthDay;
    }
    /**
     * This method is responsible for validating the values passed to the setBirthDay method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBirthDay method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBirthDayForArrayConstraintsFromSetBirthDay(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBirthDayItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBirthDayItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBirthDayItem) ? get_class($employeeSearchRowBasicBirthDayItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBirthDayItem), var_export($employeeSearchRowBasicBirthDayItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The birthDay 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 birthDay value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $birthDay
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBirthDay(array $birthDay = array())
    {
        // validation for constraint: array
        if ('' !== ($birthDayArrayErrorMessage = self::validateBirthDayForArrayConstraintsFromSetBirthDay($birthDay))) {
            throw new \InvalidArgumentException($birthDayArrayErrorMessage, __LINE__);
        }
        $this->birthDay = $birthDay;
        return $this;
    }
    /**
     * Add item to birthDay value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBirthDay(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The birthDay 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->birthDay[] = $item;
        return $this;
    }
    /**
     * Get bonusTarget value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBonusTarget()
    {
        return $this->bonusTarget;
    }
    /**
     * This method is responsible for validating the values passed to the setBonusTarget method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBonusTarget method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBonusTargetForArrayConstraintsFromSetBonusTarget(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBonusTargetItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBonusTargetItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBonusTargetItem) ? get_class($employeeSearchRowBasicBonusTargetItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBonusTargetItem), var_export($employeeSearchRowBasicBonusTargetItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The bonusTarget 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 bonusTarget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $bonusTarget
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBonusTarget(array $bonusTarget = array())
    {
        // validation for constraint: array
        if ('' !== ($bonusTargetArrayErrorMessage = self::validateBonusTargetForArrayConstraintsFromSetBonusTarget($bonusTarget))) {
            throw new \InvalidArgumentException($bonusTargetArrayErrorMessage, __LINE__);
        }
        $this->bonusTarget = $bonusTarget;
        return $this;
    }
    /**
     * Add item to bonusTarget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBonusTarget(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The bonusTarget 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->bonusTarget[] = $item;
        return $this;
    }
    /**
     * Get bonusTargetComment value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBonusTargetComment()
    {
        return $this->bonusTargetComment;
    }
    /**
     * This method is responsible for validating the values passed to the setBonusTargetComment method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBonusTargetComment method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBonusTargetCommentForArrayConstraintsFromSetBonusTargetComment(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBonusTargetCommentItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBonusTargetCommentItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBonusTargetCommentItem) ? get_class($employeeSearchRowBasicBonusTargetCommentItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBonusTargetCommentItem), var_export($employeeSearchRowBasicBonusTargetCommentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The bonusTargetComment 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 bonusTargetComment value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $bonusTargetComment
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBonusTargetComment(array $bonusTargetComment = array())
    {
        // validation for constraint: array
        if ('' !== ($bonusTargetCommentArrayErrorMessage = self::validateBonusTargetCommentForArrayConstraintsFromSetBonusTargetComment($bonusTargetComment))) {
            throw new \InvalidArgumentException($bonusTargetCommentArrayErrorMessage, __LINE__);
        }
        $this->bonusTargetComment = $bonusTargetComment;
        return $this;
    }
    /**
     * Add item to bonusTargetComment value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBonusTargetComment(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The bonusTargetComment 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->bonusTargetComment[] = $item;
        return $this;
    }
    /**
     * Get bonusTargetPayFrequency value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getBonusTargetPayFrequency()
    {
        return $this->bonusTargetPayFrequency;
    }
    /**
     * This method is responsible for validating the values passed to the setBonusTargetPayFrequency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBonusTargetPayFrequency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBonusTargetPayFrequencyForArrayConstraintsFromSetBonusTargetPayFrequency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBonusTargetPayFrequencyItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBonusTargetPayFrequencyItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBonusTargetPayFrequencyItem) ? get_class($employeeSearchRowBasicBonusTargetPayFrequencyItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBonusTargetPayFrequencyItem), var_export($employeeSearchRowBasicBonusTargetPayFrequencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The bonusTargetPayFrequency 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 bonusTargetPayFrequency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $bonusTargetPayFrequency
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBonusTargetPayFrequency(array $bonusTargetPayFrequency = array())
    {
        // validation for constraint: array
        if ('' !== ($bonusTargetPayFrequencyArrayErrorMessage = self::validateBonusTargetPayFrequencyForArrayConstraintsFromSetBonusTargetPayFrequency($bonusTargetPayFrequency))) {
            throw new \InvalidArgumentException($bonusTargetPayFrequencyArrayErrorMessage, __LINE__);
        }
        $this->bonusTargetPayFrequency = $bonusTargetPayFrequency;
        return $this;
    }
    /**
     * Add item to bonusTargetPayFrequency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBonusTargetPayFrequency(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The bonusTargetPayFrequency 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->bonusTargetPayFrequency[] = $item;
        return $this;
    }
    /**
     * Get bonusTargetType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getBonusTargetType()
    {
        return $this->bonusTargetType;
    }
    /**
     * This method is responsible for validating the values passed to the setBonusTargetType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBonusTargetType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBonusTargetTypeForArrayConstraintsFromSetBonusTargetType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicBonusTargetTypeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicBonusTargetTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicBonusTargetTypeItem) ? get_class($employeeSearchRowBasicBonusTargetTypeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicBonusTargetTypeItem), var_export($employeeSearchRowBasicBonusTargetTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The bonusTargetType 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 bonusTargetType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $bonusTargetType
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setBonusTargetType(array $bonusTargetType = array())
    {
        // validation for constraint: array
        if ('' !== ($bonusTargetTypeArrayErrorMessage = self::validateBonusTargetTypeForArrayConstraintsFromSetBonusTargetType($bonusTargetType))) {
            throw new \InvalidArgumentException($bonusTargetTypeArrayErrorMessage, __LINE__);
        }
        $this->bonusTargetType = $bonusTargetType;
        return $this;
    }
    /**
     * Add item to bonusTargetType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToBonusTargetType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The bonusTargetType 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->bonusTargetType[] = $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 $employeeSearchRowBasicCityItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicCityItem) ? get_class($employeeSearchRowBasicCityItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicCityItem), var_export($employeeSearchRowBasicCityItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 class value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getClass()
    {
        return $this->class;
    }
    /**
     * This method is responsible for validating the values passed to the setClass method
     * This method is willingly generated in order to preserve the one-line inline validation within the setClass method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateClassForArrayConstraintsFromSetClass(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicClassItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicClassItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicClassItem) ? get_class($employeeSearchRowBasicClassItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicClassItem), var_export($employeeSearchRowBasicClassItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The class 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 class value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $class
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setClass(array $class = array())
    {
        // validation for constraint: array
        if ('' !== ($classArrayErrorMessage = self::validateClassForArrayConstraintsFromSetClass($class))) {
            throw new \InvalidArgumentException($classArrayErrorMessage, __LINE__);
        }
        $this->class = $class;
        return $this;
    }
    /**
     * Add item to class value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToClass(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The class 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->class[] = $item;
        return $this;
    }
    /**
     * Get comments value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getComments()
    {
        return $this->comments;
    }
    /**
     * This method is responsible for validating the values passed to the setComments method
     * This method is willingly generated in order to preserve the one-line inline validation within the setComments method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCommentsForArrayConstraintsFromSetComments(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicCommentsItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicCommentsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicCommentsItem) ? get_class($employeeSearchRowBasicCommentsItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicCommentsItem), var_export($employeeSearchRowBasicCommentsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The comments 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 comments value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $comments
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setComments(array $comments = array())
    {
        // validation for constraint: array
        if ('' !== ($commentsArrayErrorMessage = self::validateCommentsForArrayConstraintsFromSetComments($comments))) {
            throw new \InvalidArgumentException($commentsArrayErrorMessage, __LINE__);
        }
        $this->comments = $comments;
        return $this;
    }
    /**
     * Add item to comments value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToComments(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The comments 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->comments[] = $item;
        return $this;
    }
    /**
     * Get compensationCurrency value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCompensationCurrency()
    {
        return $this->compensationCurrency;
    }
    /**
     * This method is responsible for validating the values passed to the setCompensationCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompensationCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompensationCurrencyForArrayConstraintsFromSetCompensationCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicCompensationCurrencyItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicCompensationCurrencyItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicCompensationCurrencyItem) ? get_class($employeeSearchRowBasicCompensationCurrencyItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicCompensationCurrencyItem), var_export($employeeSearchRowBasicCompensationCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The compensationCurrency 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 compensationCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $compensationCurrency
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setCompensationCurrency(array $compensationCurrency = array())
    {
        // validation for constraint: array
        if ('' !== ($compensationCurrencyArrayErrorMessage = self::validateCompensationCurrencyForArrayConstraintsFromSetCompensationCurrency($compensationCurrency))) {
            throw new \InvalidArgumentException($compensationCurrencyArrayErrorMessage, __LINE__);
        }
        $this->compensationCurrency = $compensationCurrency;
        return $this;
    }
    /**
     * Add item to compensationCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToCompensationCurrency(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The compensationCurrency 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->compensationCurrency[] = $item;
        return $this;
    }
    /**
     * Get concurrentWebServicesUser value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getConcurrentWebServicesUser()
    {
        return $this->concurrentWebServicesUser;
    }
    /**
     * This method is responsible for validating the values passed to the setConcurrentWebServicesUser method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConcurrentWebServicesUser method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConcurrentWebServicesUserForArrayConstraintsFromSetConcurrentWebServicesUser(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicConcurrentWebServicesUserItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicConcurrentWebServicesUserItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicConcurrentWebServicesUserItem) ? get_class($employeeSearchRowBasicConcurrentWebServicesUserItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicConcurrentWebServicesUserItem), var_export($employeeSearchRowBasicConcurrentWebServicesUserItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The concurrentWebServicesUser 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 concurrentWebServicesUser value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $concurrentWebServicesUser
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setConcurrentWebServicesUser(array $concurrentWebServicesUser = array())
    {
        // validation for constraint: array
        if ('' !== ($concurrentWebServicesUserArrayErrorMessage = self::validateConcurrentWebServicesUserForArrayConstraintsFromSetConcurrentWebServicesUser($concurrentWebServicesUser))) {
            throw new \InvalidArgumentException($concurrentWebServicesUserArrayErrorMessage, __LINE__);
        }
        $this->concurrentWebServicesUser = $concurrentWebServicesUser;
        return $this;
    }
    /**
     * Add item to concurrentWebServicesUser value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToConcurrentWebServicesUser(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The concurrentWebServicesUser 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->concurrentWebServicesUser[] = $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 $employeeSearchRowBasicCountryItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicCountryItem) ? get_class($employeeSearchRowBasicCountryItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicCountryItem), var_export($employeeSearchRowBasicCountryItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 countryCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCountryCode()
    {
        return $this->countryCode;
    }
    /**
     * This method is responsible for validating the values passed to the setCountryCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCountryCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCountryCodeForArrayConstraintsFromSetCountryCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicCountryCodeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicCountryCodeItem) ? get_class($employeeSearchRowBasicCountryCodeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicCountryCodeItem), var_export($employeeSearchRowBasicCountryCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The countryCode 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 countryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $countryCode
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setCountryCode(array $countryCode = array())
    {
        // validation for constraint: array
        if ('' !== ($countryCodeArrayErrorMessage = self::validateCountryCodeForArrayConstraintsFromSetCountryCode($countryCode))) {
            throw new \InvalidArgumentException($countryCodeArrayErrorMessage, __LINE__);
        }
        $this->countryCode = $countryCode;
        return $this;
    }
    /**
     * Add item to countryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToCountryCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The countryCode 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->countryCode[] = $item;
        return $this;
    }
    /**
     * Get dateCreated value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }
    /**
     * This method is responsible for validating the values passed to the setDateCreated method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDateCreated method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDateCreatedForArrayConstraintsFromSetDateCreated(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicDateCreatedItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicDateCreatedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicDateCreatedItem) ? get_class($employeeSearchRowBasicDateCreatedItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicDateCreatedItem), var_export($employeeSearchRowBasicDateCreatedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dateCreated 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 dateCreated value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setDateCreated(array $dateCreated = array())
    {
        // validation for constraint: array
        if ('' !== ($dateCreatedArrayErrorMessage = self::validateDateCreatedForArrayConstraintsFromSetDateCreated($dateCreated))) {
            throw new \InvalidArgumentException($dateCreatedArrayErrorMessage, __LINE__);
        }
        $this->dateCreated = $dateCreated;
        return $this;
    }
    /**
     * Add item to dateCreated value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToDateCreated(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The dateCreated 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->dateCreated[] = $item;
        return $this;
    }
    /**
     * Get defaultAcctCorpCardExp value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDefaultAcctCorpCardExp()
    {
        return $this->defaultAcctCorpCardExp;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultAcctCorpCardExp method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultAcctCorpCardExp method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultAcctCorpCardExpForArrayConstraintsFromSetDefaultAcctCorpCardExp(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicDefaultAcctCorpCardExpItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicDefaultAcctCorpCardExpItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicDefaultAcctCorpCardExpItem) ? get_class($employeeSearchRowBasicDefaultAcctCorpCardExpItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicDefaultAcctCorpCardExpItem), var_export($employeeSearchRowBasicDefaultAcctCorpCardExpItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultAcctCorpCardExp 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 defaultAcctCorpCardExp value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $defaultAcctCorpCardExp
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setDefaultAcctCorpCardExp(array $defaultAcctCorpCardExp = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultAcctCorpCardExpArrayErrorMessage = self::validateDefaultAcctCorpCardExpForArrayConstraintsFromSetDefaultAcctCorpCardExp($defaultAcctCorpCardExp))) {
            throw new \InvalidArgumentException($defaultAcctCorpCardExpArrayErrorMessage, __LINE__);
        }
        $this->defaultAcctCorpCardExp = $defaultAcctCorpCardExp;
        return $this;
    }
    /**
     * Add item to defaultAcctCorpCardExp value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToDefaultAcctCorpCardExp(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The defaultAcctCorpCardExp 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->defaultAcctCorpCardExp[] = $item;
        return $this;
    }
    /**
     * Get defaultExpenseReportCurrency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDefaultExpenseReportCurrency()
    {
        return $this->defaultExpenseReportCurrency;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultExpenseReportCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultExpenseReportCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultExpenseReportCurrencyForArrayConstraintsFromSetDefaultExpenseReportCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicDefaultExpenseReportCurrencyItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicDefaultExpenseReportCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicDefaultExpenseReportCurrencyItem) ? get_class($employeeSearchRowBasicDefaultExpenseReportCurrencyItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicDefaultExpenseReportCurrencyItem), var_export($employeeSearchRowBasicDefaultExpenseReportCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultExpenseReportCurrency 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 defaultExpenseReportCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $defaultExpenseReportCurrency
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setDefaultExpenseReportCurrency(array $defaultExpenseReportCurrency = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultExpenseReportCurrencyArrayErrorMessage = self::validateDefaultExpenseReportCurrencyForArrayConstraintsFromSetDefaultExpenseReportCurrency($defaultExpenseReportCurrency))) {
            throw new \InvalidArgumentException($defaultExpenseReportCurrencyArrayErrorMessage, __LINE__);
        }
        $this->defaultExpenseReportCurrency = $defaultExpenseReportCurrency;
        return $this;
    }
    /**
     * Add item to defaultExpenseReportCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToDefaultExpenseReportCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The defaultExpenseReportCurrency 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->defaultExpenseReportCurrency[] = $item;
        return $this;
    }
    /**
     * Get defaultTaxReg value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDefaultTaxReg()
    {
        return $this->defaultTaxReg;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultTaxReg method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultTaxReg method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultTaxRegForArrayConstraintsFromSetDefaultTaxReg(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicDefaultTaxRegItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicDefaultTaxRegItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicDefaultTaxRegItem) ? get_class($employeeSearchRowBasicDefaultTaxRegItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicDefaultTaxRegItem), var_export($employeeSearchRowBasicDefaultTaxRegItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultTaxReg 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 defaultTaxReg value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $defaultTaxReg
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setDefaultTaxReg(array $defaultTaxReg = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultTaxRegArrayErrorMessage = self::validateDefaultTaxRegForArrayConstraintsFromSetDefaultTaxReg($defaultTaxReg))) {
            throw new \InvalidArgumentException($defaultTaxRegArrayErrorMessage, __LINE__);
        }
        $this->defaultTaxReg = $defaultTaxReg;
        return $this;
    }
    /**
     * Add item to defaultTaxReg value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToDefaultTaxReg(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The defaultTaxReg 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->defaultTaxReg[] = $item;
        return $this;
    }
    /**
     * Get department value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDepartment()
    {
        return $this->department;
    }
    /**
     * This method is responsible for validating the values passed to the setDepartment method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDepartment method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDepartmentForArrayConstraintsFromSetDepartment(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicDepartmentItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicDepartmentItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicDepartmentItem) ? get_class($employeeSearchRowBasicDepartmentItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicDepartmentItem), var_export($employeeSearchRowBasicDepartmentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The department 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 department value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $department
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setDepartment(array $department = array())
    {
        // validation for constraint: array
        if ('' !== ($departmentArrayErrorMessage = self::validateDepartmentForArrayConstraintsFromSetDepartment($department))) {
            throw new \InvalidArgumentException($departmentArrayErrorMessage, __LINE__);
        }
        $this->department = $department;
        return $this;
    }
    /**
     * Add item to department value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToDepartment(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The department 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->department[] = $item;
        return $this;
    }
    /**
     * Get eligibleForCommission value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getEligibleForCommission()
    {
        return $this->eligibleForCommission;
    }
    /**
     * This method is responsible for validating the values passed to the setEligibleForCommission method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEligibleForCommission method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEligibleForCommissionForArrayConstraintsFromSetEligibleForCommission(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEligibleForCommissionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEligibleForCommissionItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEligibleForCommissionItem) ? get_class($employeeSearchRowBasicEligibleForCommissionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEligibleForCommissionItem), var_export($employeeSearchRowBasicEligibleForCommissionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The eligibleForCommission 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 eligibleForCommission value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $eligibleForCommission
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEligibleForCommission(array $eligibleForCommission = array())
    {
        // validation for constraint: array
        if ('' !== ($eligibleForCommissionArrayErrorMessage = self::validateEligibleForCommissionForArrayConstraintsFromSetEligibleForCommission($eligibleForCommission))) {
            throw new \InvalidArgumentException($eligibleForCommissionArrayErrorMessage, __LINE__);
        }
        $this->eligibleForCommission = $eligibleForCommission;
        return $this;
    }
    /**
     * Add item to eligibleForCommission value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEligibleForCommission(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The eligibleForCommission 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->eligibleForCommission[] = $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 $employeeSearchRowBasicEmailItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEmailItem) ? get_class($employeeSearchRowBasicEmailItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEmailItem), var_export($employeeSearchRowBasicEmailItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 employeeStatus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEmployeeStatus()
    {
        return $this->employeeStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setEmployeeStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmployeeStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmployeeStatusForArrayConstraintsFromSetEmployeeStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEmployeeStatusItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEmployeeStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEmployeeStatusItem) ? get_class($employeeSearchRowBasicEmployeeStatusItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEmployeeStatusItem), var_export($employeeSearchRowBasicEmployeeStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The employeeStatus 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 employeeStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $employeeStatus
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEmployeeStatus(array $employeeStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($employeeStatusArrayErrorMessage = self::validateEmployeeStatusForArrayConstraintsFromSetEmployeeStatus($employeeStatus))) {
            throw new \InvalidArgumentException($employeeStatusArrayErrorMessage, __LINE__);
        }
        $this->employeeStatus = $employeeStatus;
        return $this;
    }
    /**
     * Add item to employeeStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEmployeeStatus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The employeeStatus 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->employeeStatus[] = $item;
        return $this;
    }
    /**
     * Get employeeType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEmployeeType()
    {
        return $this->employeeType;
    }
    /**
     * This method is responsible for validating the values passed to the setEmployeeType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmployeeType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmployeeTypeForArrayConstraintsFromSetEmployeeType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEmployeeTypeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEmployeeTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEmployeeTypeItem) ? get_class($employeeSearchRowBasicEmployeeTypeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEmployeeTypeItem), var_export($employeeSearchRowBasicEmployeeTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The employeeType 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 employeeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $employeeType
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEmployeeType(array $employeeType = array())
    {
        // validation for constraint: array
        if ('' !== ($employeeTypeArrayErrorMessage = self::validateEmployeeTypeForArrayConstraintsFromSetEmployeeType($employeeType))) {
            throw new \InvalidArgumentException($employeeTypeArrayErrorMessage, __LINE__);
        }
        $this->employeeType = $employeeType;
        return $this;
    }
    /**
     * Add item to employeeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEmployeeType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The employeeType 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->employeeType[] = $item;
        return $this;
    }
    /**
     * Get entityId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEntityId()
    {
        return $this->entityId;
    }
    /**
     * This method is responsible for validating the values passed to the setEntityId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEntityId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEntityIdForArrayConstraintsFromSetEntityId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEntityIdItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEntityIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEntityIdItem) ? get_class($employeeSearchRowBasicEntityIdItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEntityIdItem), var_export($employeeSearchRowBasicEntityIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The entityId 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 entityId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $entityId
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEntityId(array $entityId = array())
    {
        // validation for constraint: array
        if ('' !== ($entityIdArrayErrorMessage = self::validateEntityIdForArrayConstraintsFromSetEntityId($entityId))) {
            throw new \InvalidArgumentException($entityIdArrayErrorMessage, __LINE__);
        }
        $this->entityId = $entityId;
        return $this;
    }
    /**
     * Add item to entityId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEntityId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The entityId 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->entityId[] = $item;
        return $this;
    }
    /**
     * Get entityNumber value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getEntityNumber()
    {
        return $this->entityNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setEntityNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEntityNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEntityNumberForArrayConstraintsFromSetEntityNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEntityNumberItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEntityNumberItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEntityNumberItem) ? get_class($employeeSearchRowBasicEntityNumberItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEntityNumberItem), var_export($employeeSearchRowBasicEntityNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The entityNumber property can only contain items of type \StructType\SearchColumnLongField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set entityNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $entityNumber
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEntityNumber(array $entityNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($entityNumberArrayErrorMessage = self::validateEntityNumberForArrayConstraintsFromSetEntityNumber($entityNumber))) {
            throw new \InvalidArgumentException($entityNumberArrayErrorMessage, __LINE__);
        }
        $this->entityNumber = $entityNumber;
        return $this;
    }
    /**
     * Add item to entityNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEntityNumber(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The entityNumber property can only contain items of type \StructType\SearchColumnLongField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->entityNumber[] = $item;
        return $this;
    }
    /**
     * Get ethnicity value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEthnicity()
    {
        return $this->ethnicity;
    }
    /**
     * This method is responsible for validating the values passed to the setEthnicity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEthnicity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEthnicityForArrayConstraintsFromSetEthnicity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicEthnicityItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicEthnicityItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicEthnicityItem) ? get_class($employeeSearchRowBasicEthnicityItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicEthnicityItem), var_export($employeeSearchRowBasicEthnicityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ethnicity 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 ethnicity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $ethnicity
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setEthnicity(array $ethnicity = array())
    {
        // validation for constraint: array
        if ('' !== ($ethnicityArrayErrorMessage = self::validateEthnicityForArrayConstraintsFromSetEthnicity($ethnicity))) {
            throw new \InvalidArgumentException($ethnicityArrayErrorMessage, __LINE__);
        }
        $this->ethnicity = $ethnicity;
        return $this;
    }
    /**
     * Add item to ethnicity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToEthnicity(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The ethnicity 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->ethnicity[] = $item;
        return $this;
    }
    /**
     * Get expenseLimit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getExpenseLimit()
    {
        return $this->expenseLimit;
    }
    /**
     * This method is responsible for validating the values passed to the setExpenseLimit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExpenseLimit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExpenseLimitForArrayConstraintsFromSetExpenseLimit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicExpenseLimitItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicExpenseLimitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicExpenseLimitItem) ? get_class($employeeSearchRowBasicExpenseLimitItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicExpenseLimitItem), var_export($employeeSearchRowBasicExpenseLimitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The expenseLimit 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 expenseLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $expenseLimit
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setExpenseLimit(array $expenseLimit = array())
    {
        // validation for constraint: array
        if ('' !== ($expenseLimitArrayErrorMessage = self::validateExpenseLimitForArrayConstraintsFromSetExpenseLimit($expenseLimit))) {
            throw new \InvalidArgumentException($expenseLimitArrayErrorMessage, __LINE__);
        }
        $this->expenseLimit = $expenseLimit;
        return $this;
    }
    /**
     * Add item to expenseLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToExpenseLimit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The expenseLimit 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->expenseLimit[] = $item;
        return $this;
    }
    /**
     * Get expenseReportCurrency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getExpenseReportCurrency()
    {
        return $this->expenseReportCurrency;
    }
    /**
     * This method is responsible for validating the values passed to the setExpenseReportCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExpenseReportCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExpenseReportCurrencyForArrayConstraintsFromSetExpenseReportCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicExpenseReportCurrencyItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicExpenseReportCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicExpenseReportCurrencyItem) ? get_class($employeeSearchRowBasicExpenseReportCurrencyItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicExpenseReportCurrencyItem), var_export($employeeSearchRowBasicExpenseReportCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The expenseReportCurrency 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 expenseReportCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $expenseReportCurrency
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setExpenseReportCurrency(array $expenseReportCurrency = array())
    {
        // validation for constraint: array
        if ('' !== ($expenseReportCurrencyArrayErrorMessage = self::validateExpenseReportCurrencyForArrayConstraintsFromSetExpenseReportCurrency($expenseReportCurrency))) {
            throw new \InvalidArgumentException($expenseReportCurrencyArrayErrorMessage, __LINE__);
        }
        $this->expenseReportCurrency = $expenseReportCurrency;
        return $this;
    }
    /**
     * Add item to expenseReportCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToExpenseReportCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The expenseReportCurrency 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->expenseReportCurrency[] = $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 $employeeSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicExternalIdItem) ? get_class($employeeSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicExternalIdItem), var_export($employeeSearchRowBasicExternalIdItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 $employeeSearchRowBasicFaxItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicFaxItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicFaxItem) ? get_class($employeeSearchRowBasicFaxItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicFaxItem), var_export($employeeSearchRowBasicFaxItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 firstName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFirstName()
    {
        return $this->firstName;
    }
    /**
     * This method is responsible for validating the values passed to the setFirstName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFirstName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFirstNameForArrayConstraintsFromSetFirstName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicFirstNameItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicFirstNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicFirstNameItem) ? get_class($employeeSearchRowBasicFirstNameItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicFirstNameItem), var_export($employeeSearchRowBasicFirstNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The firstName 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 firstName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $firstName
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setFirstName(array $firstName = array())
    {
        // validation for constraint: array
        if ('' !== ($firstNameArrayErrorMessage = self::validateFirstNameForArrayConstraintsFromSetFirstName($firstName))) {
            throw new \InvalidArgumentException($firstNameArrayErrorMessage, __LINE__);
        }
        $this->firstName = $firstName;
        return $this;
    }
    /**
     * Add item to firstName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToFirstName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The firstName 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->firstName[] = $item;
        return $this;
    }
    /**
     * Get gender value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getGender()
    {
        return $this->gender;
    }
    /**
     * This method is responsible for validating the values passed to the setGender method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGender method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGenderForArrayConstraintsFromSetGender(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicGenderItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicGenderItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicGenderItem) ? get_class($employeeSearchRowBasicGenderItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicGenderItem), var_export($employeeSearchRowBasicGenderItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The gender 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 gender value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $gender
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setGender(array $gender = array())
    {
        // validation for constraint: array
        if ('' !== ($genderArrayErrorMessage = self::validateGenderForArrayConstraintsFromSetGender($gender))) {
            throw new \InvalidArgumentException($genderArrayErrorMessage, __LINE__);
        }
        $this->gender = $gender;
        return $this;
    }
    /**
     * Add item to gender value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToGender(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The gender 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->gender[] = $item;
        return $this;
    }
    /**
     * Get giveAccess value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getGiveAccess()
    {
        return $this->giveAccess;
    }
    /**
     * This method is responsible for validating the values passed to the setGiveAccess method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiveAccess method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiveAccessForArrayConstraintsFromSetGiveAccess(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicGiveAccessItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicGiveAccessItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicGiveAccessItem) ? get_class($employeeSearchRowBasicGiveAccessItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicGiveAccessItem), var_export($employeeSearchRowBasicGiveAccessItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giveAccess 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 giveAccess value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $giveAccess
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setGiveAccess(array $giveAccess = array())
    {
        // validation for constraint: array
        if ('' !== ($giveAccessArrayErrorMessage = self::validateGiveAccessForArrayConstraintsFromSetGiveAccess($giveAccess))) {
            throw new \InvalidArgumentException($giveAccessArrayErrorMessage, __LINE__);
        }
        $this->giveAccess = $giveAccess;
        return $this;
    }
    /**
     * Add item to giveAccess value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToGiveAccess(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The giveAccess 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->giveAccess[] = $item;
        return $this;
    }
    /**
     * Get globalSubscriptionStatus value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getGlobalSubscriptionStatus()
    {
        return $this->globalSubscriptionStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setGlobalSubscriptionStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGlobalSubscriptionStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGlobalSubscriptionStatusForArrayConstraintsFromSetGlobalSubscriptionStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicGlobalSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicGlobalSubscriptionStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicGlobalSubscriptionStatusItem) ? get_class($employeeSearchRowBasicGlobalSubscriptionStatusItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicGlobalSubscriptionStatusItem), var_export($employeeSearchRowBasicGlobalSubscriptionStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The globalSubscriptionStatus 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 globalSubscriptionStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $globalSubscriptionStatus
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setGlobalSubscriptionStatus(array $globalSubscriptionStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($globalSubscriptionStatusArrayErrorMessage = self::validateGlobalSubscriptionStatusForArrayConstraintsFromSetGlobalSubscriptionStatus($globalSubscriptionStatus))) {
            throw new \InvalidArgumentException($globalSubscriptionStatusArrayErrorMessage, __LINE__);
        }
        $this->globalSubscriptionStatus = $globalSubscriptionStatus;
        return $this;
    }
    /**
     * Add item to globalSubscriptionStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToGlobalSubscriptionStatus(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The globalSubscriptionStatus 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->globalSubscriptionStatus[] = $item;
        return $this;
    }
    /**
     * Get hireDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getHireDate()
    {
        return $this->hireDate;
    }
    /**
     * This method is responsible for validating the values passed to the setHireDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHireDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHireDateForArrayConstraintsFromSetHireDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicHireDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicHireDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicHireDateItem) ? get_class($employeeSearchRowBasicHireDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicHireDateItem), var_export($employeeSearchRowBasicHireDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hireDate 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 hireDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $hireDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setHireDate(array $hireDate = array())
    {
        // validation for constraint: array
        if ('' !== ($hireDateArrayErrorMessage = self::validateHireDateForArrayConstraintsFromSetHireDate($hireDate))) {
            throw new \InvalidArgumentException($hireDateArrayErrorMessage, __LINE__);
        }
        $this->hireDate = $hireDate;
        return $this;
    }
    /**
     * Add item to hireDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToHireDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The hireDate 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->hireDate[] = $item;
        return $this;
    }
    /**
     * Get homePhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getHomePhone()
    {
        return $this->homePhone;
    }
    /**
     * This method is responsible for validating the values passed to the setHomePhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHomePhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHomePhoneForArrayConstraintsFromSetHomePhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicHomePhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicHomePhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicHomePhoneItem) ? get_class($employeeSearchRowBasicHomePhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicHomePhoneItem), var_export($employeeSearchRowBasicHomePhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The homePhone 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 homePhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $homePhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setHomePhone(array $homePhone = array())
    {
        // validation for constraint: array
        if ('' !== ($homePhoneArrayErrorMessage = self::validateHomePhoneForArrayConstraintsFromSetHomePhone($homePhone))) {
            throw new \InvalidArgumentException($homePhoneArrayErrorMessage, __LINE__);
        }
        $this->homePhone = $homePhone;
        return $this;
    }
    /**
     * Add item to homePhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToHomePhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The homePhone 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->homePhone[] = $item;
        return $this;
    }
    /**
     * Get i9Verified value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getI9Verified()
    {
        return $this->i9Verified;
    }
    /**
     * This method is responsible for validating the values passed to the setI9Verified method
     * This method is willingly generated in order to preserve the one-line inline validation within the setI9Verified method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateI9VerifiedForArrayConstraintsFromSetI9Verified(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicI9VerifiedItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicI9VerifiedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicI9VerifiedItem) ? get_class($employeeSearchRowBasicI9VerifiedItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicI9VerifiedItem), var_export($employeeSearchRowBasicI9VerifiedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The i9Verified 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 i9Verified value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $i9Verified
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setI9Verified(array $i9Verified = array())
    {
        // validation for constraint: array
        if ('' !== ($i9VerifiedArrayErrorMessage = self::validateI9VerifiedForArrayConstraintsFromSetI9Verified($i9Verified))) {
            throw new \InvalidArgumentException($i9VerifiedArrayErrorMessage, __LINE__);
        }
        $this->i9Verified = $i9Verified;
        return $this;
    }
    /**
     * Add item to i9Verified value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToI9Verified(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The i9Verified 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->i9Verified[] = $item;
        return $this;
    }
    /**
     * Get image value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getImage()
    {
        return $this->image;
    }
    /**
     * This method is responsible for validating the values passed to the setImage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setImage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateImageForArrayConstraintsFromSetImage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicImageItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicImageItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicImageItem) ? get_class($employeeSearchRowBasicImageItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicImageItem), var_export($employeeSearchRowBasicImageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The image 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 image value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $image
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setImage(array $image = array())
    {
        // validation for constraint: array
        if ('' !== ($imageArrayErrorMessage = self::validateImageForArrayConstraintsFromSetImage($image))) {
            throw new \InvalidArgumentException($imageArrayErrorMessage, __LINE__);
        }
        $this->image = $image;
        return $this;
    }
    /**
     * Add item to image value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToImage(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The image 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->image[] = $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 $employeeSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicInternalIdItem) ? get_class($employeeSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicInternalIdItem), var_export($employeeSearchRowBasicInternalIdItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 isDefaultBilling value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsDefaultBilling()
    {
        return $this->isDefaultBilling;
    }
    /**
     * This method is responsible for validating the values passed to the setIsDefaultBilling method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsDefaultBilling method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsDefaultBillingForArrayConstraintsFromSetIsDefaultBilling(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsDefaultBillingItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsDefaultBillingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsDefaultBillingItem) ? get_class($employeeSearchRowBasicIsDefaultBillingItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsDefaultBillingItem), var_export($employeeSearchRowBasicIsDefaultBillingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isDefaultBilling 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 isDefaultBilling value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isDefaultBilling
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsDefaultBilling(array $isDefaultBilling = array())
    {
        // validation for constraint: array
        if ('' !== ($isDefaultBillingArrayErrorMessage = self::validateIsDefaultBillingForArrayConstraintsFromSetIsDefaultBilling($isDefaultBilling))) {
            throw new \InvalidArgumentException($isDefaultBillingArrayErrorMessage, __LINE__);
        }
        $this->isDefaultBilling = $isDefaultBilling;
        return $this;
    }
    /**
     * Add item to isDefaultBilling value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsDefaultBilling(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isDefaultBilling 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->isDefaultBilling[] = $item;
        return $this;
    }
    /**
     * Get isDefaultShipping value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsDefaultShipping()
    {
        return $this->isDefaultShipping;
    }
    /**
     * This method is responsible for validating the values passed to the setIsDefaultShipping method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsDefaultShipping method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsDefaultShippingForArrayConstraintsFromSetIsDefaultShipping(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsDefaultShippingItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsDefaultShippingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsDefaultShippingItem) ? get_class($employeeSearchRowBasicIsDefaultShippingItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsDefaultShippingItem), var_export($employeeSearchRowBasicIsDefaultShippingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isDefaultShipping 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 isDefaultShipping value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isDefaultShipping
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsDefaultShipping(array $isDefaultShipping = array())
    {
        // validation for constraint: array
        if ('' !== ($isDefaultShippingArrayErrorMessage = self::validateIsDefaultShippingForArrayConstraintsFromSetIsDefaultShipping($isDefaultShipping))) {
            throw new \InvalidArgumentException($isDefaultShippingArrayErrorMessage, __LINE__);
        }
        $this->isDefaultShipping = $isDefaultShipping;
        return $this;
    }
    /**
     * Add item to isDefaultShipping value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsDefaultShipping(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isDefaultShipping 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->isDefaultShipping[] = $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 $employeeSearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsInactiveItem) ? get_class($employeeSearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsInactiveItem), var_export($employeeSearchRowBasicIsInactiveItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 isJobResource value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsJobResource()
    {
        return $this->isJobResource;
    }
    /**
     * This method is responsible for validating the values passed to the setIsJobResource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsJobResource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsJobResourceForArrayConstraintsFromSetIsJobResource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsJobResourceItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsJobResourceItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsJobResourceItem) ? get_class($employeeSearchRowBasicIsJobResourceItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsJobResourceItem), var_export($employeeSearchRowBasicIsJobResourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isJobResource 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 isJobResource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isJobResource
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsJobResource(array $isJobResource = array())
    {
        // validation for constraint: array
        if ('' !== ($isJobResourceArrayErrorMessage = self::validateIsJobResourceForArrayConstraintsFromSetIsJobResource($isJobResource))) {
            throw new \InvalidArgumentException($isJobResourceArrayErrorMessage, __LINE__);
        }
        $this->isJobResource = $isJobResource;
        return $this;
    }
    /**
     * Add item to isJobResource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsJobResource(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isJobResource 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->isJobResource[] = $item;
        return $this;
    }
    /**
     * Get isJobManager value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsJobManager()
    {
        return $this->isJobManager;
    }
    /**
     * This method is responsible for validating the values passed to the setIsJobManager method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsJobManager method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsJobManagerForArrayConstraintsFromSetIsJobManager(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsJobManagerItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsJobManagerItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsJobManagerItem) ? get_class($employeeSearchRowBasicIsJobManagerItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsJobManagerItem), var_export($employeeSearchRowBasicIsJobManagerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isJobManager 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 isJobManager value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isJobManager
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsJobManager(array $isJobManager = array())
    {
        // validation for constraint: array
        if ('' !== ($isJobManagerArrayErrorMessage = self::validateIsJobManagerForArrayConstraintsFromSetIsJobManager($isJobManager))) {
            throw new \InvalidArgumentException($isJobManagerArrayErrorMessage, __LINE__);
        }
        $this->isJobManager = $isJobManager;
        return $this;
    }
    /**
     * Add item to isJobManager value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsJobManager(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isJobManager 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->isJobManager[] = $item;
        return $this;
    }
    /**
     * Get isSalesRep value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSalesRep()
    {
        return $this->isSalesRep;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSalesRep method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSalesRep method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSalesRepForArrayConstraintsFromSetIsSalesRep(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsSalesRepItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsSalesRepItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsSalesRepItem) ? get_class($employeeSearchRowBasicIsSalesRepItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsSalesRepItem), var_export($employeeSearchRowBasicIsSalesRepItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSalesRep 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 isSalesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSalesRep
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsSalesRep(array $isSalesRep = array())
    {
        // validation for constraint: array
        if ('' !== ($isSalesRepArrayErrorMessage = self::validateIsSalesRepForArrayConstraintsFromSetIsSalesRep($isSalesRep))) {
            throw new \InvalidArgumentException($isSalesRepArrayErrorMessage, __LINE__);
        }
        $this->isSalesRep = $isSalesRep;
        return $this;
    }
    /**
     * Add item to isSalesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsSalesRep(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSalesRep 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->isSalesRep[] = $item;
        return $this;
    }
    /**
     * Get isSupportRep value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSupportRep()
    {
        return $this->isSupportRep;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSupportRep method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSupportRep method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSupportRepForArrayConstraintsFromSetIsSupportRep(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsSupportRepItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsSupportRepItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsSupportRepItem) ? get_class($employeeSearchRowBasicIsSupportRepItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsSupportRepItem), var_export($employeeSearchRowBasicIsSupportRepItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSupportRep 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 isSupportRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSupportRep
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsSupportRep(array $isSupportRep = array())
    {
        // validation for constraint: array
        if ('' !== ($isSupportRepArrayErrorMessage = self::validateIsSupportRepForArrayConstraintsFromSetIsSupportRep($isSupportRep))) {
            throw new \InvalidArgumentException($isSupportRepArrayErrorMessage, __LINE__);
        }
        $this->isSupportRep = $isSupportRep;
        return $this;
    }
    /**
     * Add item to isSupportRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsSupportRep(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSupportRep 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->isSupportRep[] = $item;
        return $this;
    }
    /**
     * Get isTemplate value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsTemplate()
    {
        return $this->isTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setIsTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsTemplateForArrayConstraintsFromSetIsTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicIsTemplateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicIsTemplateItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicIsTemplateItem) ? get_class($employeeSearchRowBasicIsTemplateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicIsTemplateItem), var_export($employeeSearchRowBasicIsTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isTemplate 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 isTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isTemplate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setIsTemplate(array $isTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($isTemplateArrayErrorMessage = self::validateIsTemplateForArrayConstraintsFromSetIsTemplate($isTemplate))) {
            throw new \InvalidArgumentException($isTemplateArrayErrorMessage, __LINE__);
        }
        $this->isTemplate = $isTemplate;
        return $this;
    }
    /**
     * Add item to isTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToIsTemplate(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isTemplate 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->isTemplate[] = $item;
        return $this;
    }
    /**
     * Get job value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getJob()
    {
        return $this->job;
    }
    /**
     * This method is responsible for validating the values passed to the setJob method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJob method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobForArrayConstraintsFromSetJob(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicJobItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicJobItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicJobItem) ? get_class($employeeSearchRowBasicJobItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicJobItem), var_export($employeeSearchRowBasicJobItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The job 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 job value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $job
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setJob(array $job = array())
    {
        // validation for constraint: array
        if ('' !== ($jobArrayErrorMessage = self::validateJobForArrayConstraintsFromSetJob($job))) {
            throw new \InvalidArgumentException($jobArrayErrorMessage, __LINE__);
        }
        $this->job = $job;
        return $this;
    }
    /**
     * Add item to job value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToJob(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The job 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->job[] = $item;
        return $this;
    }
    /**
     * Get laborCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLaborCost()
    {
        return $this->laborCost;
    }
    /**
     * This method is responsible for validating the values passed to the setLaborCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLaborCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLaborCostForArrayConstraintsFromSetLaborCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLaborCostItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLaborCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLaborCostItem) ? get_class($employeeSearchRowBasicLaborCostItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLaborCostItem), var_export($employeeSearchRowBasicLaborCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The laborCost 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 laborCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $laborCost
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLaborCost(array $laborCost = array())
    {
        // validation for constraint: array
        if ('' !== ($laborCostArrayErrorMessage = self::validateLaborCostForArrayConstraintsFromSetLaborCost($laborCost))) {
            throw new \InvalidArgumentException($laborCostArrayErrorMessage, __LINE__);
        }
        $this->laborCost = $laborCost;
        return $this;
    }
    /**
     * Add item to laborCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLaborCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The laborCost 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->laborCost[] = $item;
        return $this;
    }
    /**
     * Get language value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLanguage()
    {
        return $this->language;
    }
    /**
     * This method is responsible for validating the values passed to the setLanguage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLanguage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLanguageForArrayConstraintsFromSetLanguage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLanguageItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLanguageItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLanguageItem) ? get_class($employeeSearchRowBasicLanguageItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLanguageItem), var_export($employeeSearchRowBasicLanguageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The language 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 language value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $language
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLanguage(array $language = array())
    {
        // validation for constraint: array
        if ('' !== ($languageArrayErrorMessage = self::validateLanguageForArrayConstraintsFromSetLanguage($language))) {
            throw new \InvalidArgumentException($languageArrayErrorMessage, __LINE__);
        }
        $this->language = $language;
        return $this;
    }
    /**
     * Add item to language value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLanguage(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The language 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->language[] = $item;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastModifiedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastModifiedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastModifiedDateForArrayConstraintsFromSetLastModifiedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLastModifiedDateItem) ? get_class($employeeSearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLastModifiedDateItem), var_export($employeeSearchRowBasicLastModifiedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastModifiedDate 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 lastModifiedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLastModifiedDate(array $lastModifiedDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastModifiedDateArrayErrorMessage = self::validateLastModifiedDateForArrayConstraintsFromSetLastModifiedDate($lastModifiedDate))) {
            throw new \InvalidArgumentException($lastModifiedDateArrayErrorMessage, __LINE__);
        }
        $this->lastModifiedDate = $lastModifiedDate;
        return $this;
    }
    /**
     * Add item to lastModifiedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLastModifiedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastModifiedDate 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->lastModifiedDate[] = $item;
        return $this;
    }
    /**
     * Get lastName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLastName()
    {
        return $this->lastName;
    }
    /**
     * This method is responsible for validating the values passed to the setLastName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastNameForArrayConstraintsFromSetLastName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLastNameItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLastNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLastNameItem) ? get_class($employeeSearchRowBasicLastNameItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLastNameItem), var_export($employeeSearchRowBasicLastNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastName 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 lastName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $lastName
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLastName(array $lastName = array())
    {
        // validation for constraint: array
        if ('' !== ($lastNameArrayErrorMessage = self::validateLastNameForArrayConstraintsFromSetLastName($lastName))) {
            throw new \InvalidArgumentException($lastNameArrayErrorMessage, __LINE__);
        }
        $this->lastName = $lastName;
        return $this;
    }
    /**
     * Add item to lastName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLastName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The lastName 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->lastName[] = $item;
        return $this;
    }
    /**
     * Get lastPaidDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastPaidDate()
    {
        return $this->lastPaidDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastPaidDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastPaidDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastPaidDateForArrayConstraintsFromSetLastPaidDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLastPaidDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLastPaidDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLastPaidDateItem) ? get_class($employeeSearchRowBasicLastPaidDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLastPaidDateItem), var_export($employeeSearchRowBasicLastPaidDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastPaidDate 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 lastPaidDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastPaidDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLastPaidDate(array $lastPaidDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastPaidDateArrayErrorMessage = self::validateLastPaidDateForArrayConstraintsFromSetLastPaidDate($lastPaidDate))) {
            throw new \InvalidArgumentException($lastPaidDateArrayErrorMessage, __LINE__);
        }
        $this->lastPaidDate = $lastPaidDate;
        return $this;
    }
    /**
     * Add item to lastPaidDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLastPaidDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastPaidDate 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->lastPaidDate[] = $item;
        return $this;
    }
    /**
     * Get lastReviewDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastReviewDate()
    {
        return $this->lastReviewDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastReviewDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastReviewDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastReviewDateForArrayConstraintsFromSetLastReviewDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLastReviewDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLastReviewDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLastReviewDateItem) ? get_class($employeeSearchRowBasicLastReviewDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLastReviewDateItem), var_export($employeeSearchRowBasicLastReviewDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastReviewDate 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 lastReviewDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastReviewDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLastReviewDate(array $lastReviewDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastReviewDateArrayErrorMessage = self::validateLastReviewDateForArrayConstraintsFromSetLastReviewDate($lastReviewDate))) {
            throw new \InvalidArgumentException($lastReviewDateArrayErrorMessage, __LINE__);
        }
        $this->lastReviewDate = $lastReviewDate;
        return $this;
    }
    /**
     * Add item to lastReviewDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLastReviewDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastReviewDate 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->lastReviewDate[] = $item;
        return $this;
    }
    /**
     * Get level value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLevel()
    {
        return $this->level;
    }
    /**
     * This method is responsible for validating the values passed to the setLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLevelForArrayConstraintsFromSetLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLevelItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLevelItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLevelItem) ? get_class($employeeSearchRowBasicLevelItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLevelItem), var_export($employeeSearchRowBasicLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The level 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 level value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $level
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLevel(array $level = array())
    {
        // validation for constraint: array
        if ('' !== ($levelArrayErrorMessage = self::validateLevelForArrayConstraintsFromSetLevel($level))) {
            throw new \InvalidArgumentException($levelArrayErrorMessage, __LINE__);
        }
        $this->level = $level;
        return $this;
    }
    /**
     * Add item to level value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLevel(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The level 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->level[] = $item;
        return $this;
    }
    /**
     * Get location value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getLocation()
    {
        return $this->location;
    }
    /**
     * This method is responsible for validating the values passed to the setLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationForArrayConstraintsFromSetLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicLocationItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicLocationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicLocationItem) ? get_class($employeeSearchRowBasicLocationItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicLocationItem), var_export($employeeSearchRowBasicLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The location 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 location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $location
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setLocation(array $location = array())
    {
        // validation for constraint: array
        if ('' !== ($locationArrayErrorMessage = self::validateLocationForArrayConstraintsFromSetLocation($location))) {
            throw new \InvalidArgumentException($locationArrayErrorMessage, __LINE__);
        }
        $this->location = $location;
        return $this;
    }
    /**
     * Add item to location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToLocation(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The location 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->location[] = $item;
        return $this;
    }
    /**
     * Get maritalStatus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getMaritalStatus()
    {
        return $this->maritalStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setMaritalStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMaritalStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMaritalStatusForArrayConstraintsFromSetMaritalStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicMaritalStatusItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicMaritalStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicMaritalStatusItem) ? get_class($employeeSearchRowBasicMaritalStatusItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicMaritalStatusItem), var_export($employeeSearchRowBasicMaritalStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The maritalStatus 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 maritalStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $maritalStatus
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setMaritalStatus(array $maritalStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($maritalStatusArrayErrorMessage = self::validateMaritalStatusForArrayConstraintsFromSetMaritalStatus($maritalStatus))) {
            throw new \InvalidArgumentException($maritalStatusArrayErrorMessage, __LINE__);
        }
        $this->maritalStatus = $maritalStatus;
        return $this;
    }
    /**
     * Add item to maritalStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToMaritalStatus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The maritalStatus 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->maritalStatus[] = $item;
        return $this;
    }
    /**
     * Get middleName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMiddleName()
    {
        return $this->middleName;
    }
    /**
     * This method is responsible for validating the values passed to the setMiddleName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMiddleName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMiddleNameForArrayConstraintsFromSetMiddleName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicMiddleNameItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicMiddleNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicMiddleNameItem) ? get_class($employeeSearchRowBasicMiddleNameItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicMiddleNameItem), var_export($employeeSearchRowBasicMiddleNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The middleName 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 middleName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $middleName
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setMiddleName(array $middleName = array())
    {
        // validation for constraint: array
        if ('' !== ($middleNameArrayErrorMessage = self::validateMiddleNameForArrayConstraintsFromSetMiddleName($middleName))) {
            throw new \InvalidArgumentException($middleNameArrayErrorMessage, __LINE__);
        }
        $this->middleName = $middleName;
        return $this;
    }
    /**
     * Add item to middleName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToMiddleName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The middleName 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->middleName[] = $item;
        return $this;
    }
    /**
     * Get mobilePhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMobilePhone()
    {
        return $this->mobilePhone;
    }
    /**
     * This method is responsible for validating the values passed to the setMobilePhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMobilePhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMobilePhoneForArrayConstraintsFromSetMobilePhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicMobilePhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicMobilePhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicMobilePhoneItem) ? get_class($employeeSearchRowBasicMobilePhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicMobilePhoneItem), var_export($employeeSearchRowBasicMobilePhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The mobilePhone 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 mobilePhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $mobilePhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setMobilePhone(array $mobilePhone = array())
    {
        // validation for constraint: array
        if ('' !== ($mobilePhoneArrayErrorMessage = self::validateMobilePhoneForArrayConstraintsFromSetMobilePhone($mobilePhone))) {
            throw new \InvalidArgumentException($mobilePhoneArrayErrorMessage, __LINE__);
        }
        $this->mobilePhone = $mobilePhone;
        return $this;
    }
    /**
     * Add item to mobilePhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToMobilePhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The mobilePhone 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->mobilePhone[] = $item;
        return $this;
    }
    /**
     * Get nextReviewDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getNextReviewDate()
    {
        return $this->nextReviewDate;
    }
    /**
     * This method is responsible for validating the values passed to the setNextReviewDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNextReviewDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNextReviewDateForArrayConstraintsFromSetNextReviewDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicNextReviewDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicNextReviewDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicNextReviewDateItem) ? get_class($employeeSearchRowBasicNextReviewDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicNextReviewDateItem), var_export($employeeSearchRowBasicNextReviewDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nextReviewDate 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 nextReviewDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $nextReviewDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setNextReviewDate(array $nextReviewDate = array())
    {
        // validation for constraint: array
        if ('' !== ($nextReviewDateArrayErrorMessage = self::validateNextReviewDateForArrayConstraintsFromSetNextReviewDate($nextReviewDate))) {
            throw new \InvalidArgumentException($nextReviewDateArrayErrorMessage, __LINE__);
        }
        $this->nextReviewDate = $nextReviewDate;
        return $this;
    }
    /**
     * Add item to nextReviewDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToNextReviewDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The nextReviewDate 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->nextReviewDate[] = $item;
        return $this;
    }
    /**
     * Get offlineAccess value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getOfflineAccess()
    {
        return $this->offlineAccess;
    }
    /**
     * This method is responsible for validating the values passed to the setOfflineAccess method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOfflineAccess method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOfflineAccessForArrayConstraintsFromSetOfflineAccess(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicOfflineAccessItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicOfflineAccessItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicOfflineAccessItem) ? get_class($employeeSearchRowBasicOfflineAccessItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicOfflineAccessItem), var_export($employeeSearchRowBasicOfflineAccessItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The offlineAccess 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 offlineAccess value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $offlineAccess
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setOfflineAccess(array $offlineAccess = array())
    {
        // validation for constraint: array
        if ('' !== ($offlineAccessArrayErrorMessage = self::validateOfflineAccessForArrayConstraintsFromSetOfflineAccess($offlineAccess))) {
            throw new \InvalidArgumentException($offlineAccessArrayErrorMessage, __LINE__);
        }
        $this->offlineAccess = $offlineAccess;
        return $this;
    }
    /**
     * Add item to offlineAccess value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToOfflineAccess(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The offlineAccess 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->offlineAccess[] = $item;
        return $this;
    }
    /**
     * Get payFrequency value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getPayFrequency()
    {
        return $this->payFrequency;
    }
    /**
     * This method is responsible for validating the values passed to the setPayFrequency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPayFrequency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePayFrequencyForArrayConstraintsFromSetPayFrequency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPayFrequencyItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPayFrequencyItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPayFrequencyItem) ? get_class($employeeSearchRowBasicPayFrequencyItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPayFrequencyItem), var_export($employeeSearchRowBasicPayFrequencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The payFrequency 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 payFrequency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $payFrequency
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPayFrequency(array $payFrequency = array())
    {
        // validation for constraint: array
        if ('' !== ($payFrequencyArrayErrorMessage = self::validatePayFrequencyForArrayConstraintsFromSetPayFrequency($payFrequency))) {
            throw new \InvalidArgumentException($payFrequencyArrayErrorMessage, __LINE__);
        }
        $this->payFrequency = $payFrequency;
        return $this;
    }
    /**
     * Add item to payFrequency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPayFrequency(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The payFrequency 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->payFrequency[] = $item;
        return $this;
    }
    /**
     * Get permChangeDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getPermChangeDate()
    {
        return $this->permChangeDate;
    }
    /**
     * This method is responsible for validating the values passed to the setPermChangeDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPermChangeDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePermChangeDateForArrayConstraintsFromSetPermChangeDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPermChangeDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPermChangeDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPermChangeDateItem) ? get_class($employeeSearchRowBasicPermChangeDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPermChangeDateItem), var_export($employeeSearchRowBasicPermChangeDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The permChangeDate 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 permChangeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $permChangeDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPermChangeDate(array $permChangeDate = array())
    {
        // validation for constraint: array
        if ('' !== ($permChangeDateArrayErrorMessage = self::validatePermChangeDateForArrayConstraintsFromSetPermChangeDate($permChangeDate))) {
            throw new \InvalidArgumentException($permChangeDateArrayErrorMessage, __LINE__);
        }
        $this->permChangeDate = $permChangeDate;
        return $this;
    }
    /**
     * Add item to permChangeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPermChangeDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The permChangeDate 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->permChangeDate[] = $item;
        return $this;
    }
    /**
     * Get permChangeLevel value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPermChangeLevel()
    {
        return $this->permChangeLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setPermChangeLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPermChangeLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePermChangeLevelForArrayConstraintsFromSetPermChangeLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPermChangeLevelItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPermChangeLevelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPermChangeLevelItem) ? get_class($employeeSearchRowBasicPermChangeLevelItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPermChangeLevelItem), var_export($employeeSearchRowBasicPermChangeLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The permChangeLevel 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 permChangeLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $permChangeLevel
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPermChangeLevel(array $permChangeLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($permChangeLevelArrayErrorMessage = self::validatePermChangeLevelForArrayConstraintsFromSetPermChangeLevel($permChangeLevel))) {
            throw new \InvalidArgumentException($permChangeLevelArrayErrorMessage, __LINE__);
        }
        $this->permChangeLevel = $permChangeLevel;
        return $this;
    }
    /**
     * Add item to permChangeLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPermChangeLevel(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The permChangeLevel 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->permChangeLevel[] = $item;
        return $this;
    }
    /**
     * Get permission value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getPermission()
    {
        return $this->permission;
    }
    /**
     * This method is responsible for validating the values passed to the setPermission method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPermission method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePermissionForArrayConstraintsFromSetPermission(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPermissionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPermissionItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPermissionItem) ? get_class($employeeSearchRowBasicPermissionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPermissionItem), var_export($employeeSearchRowBasicPermissionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The permission 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 permission value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $permission
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPermission(array $permission = array())
    {
        // validation for constraint: array
        if ('' !== ($permissionArrayErrorMessage = self::validatePermissionForArrayConstraintsFromSetPermission($permission))) {
            throw new \InvalidArgumentException($permissionArrayErrorMessage, __LINE__);
        }
        $this->permission = $permission;
        return $this;
    }
    /**
     * Add item to permission value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPermission(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The permission 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->permission[] = $item;
        return $this;
    }
    /**
     * Get permissionChange value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getPermissionChange()
    {
        return $this->permissionChange;
    }
    /**
     * This method is responsible for validating the values passed to the setPermissionChange method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPermissionChange method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePermissionChangeForArrayConstraintsFromSetPermissionChange(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPermissionChangeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPermissionChangeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPermissionChangeItem) ? get_class($employeeSearchRowBasicPermissionChangeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPermissionChangeItem), var_export($employeeSearchRowBasicPermissionChangeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The permissionChange 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 permissionChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $permissionChange
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPermissionChange(array $permissionChange = array())
    {
        // validation for constraint: array
        if ('' !== ($permissionChangeArrayErrorMessage = self::validatePermissionChangeForArrayConstraintsFromSetPermissionChange($permissionChange))) {
            throw new \InvalidArgumentException($permissionChangeArrayErrorMessage, __LINE__);
        }
        $this->permissionChange = $permissionChange;
        return $this;
    }
    /**
     * Add item to permissionChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPermissionChange(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The permissionChange 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->permissionChange[] = $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 $employeeSearchRowBasicPhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPhoneItem) ? get_class($employeeSearchRowBasicPhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPhoneItem), var_export($employeeSearchRowBasicPhoneItem, 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\EmployeeSearchRowBasic
     */
    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\EmployeeSearchRowBasic
     */
    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 phoneticName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPhoneticName()
    {
        return $this->phoneticName;
    }
    /**
     * This method is responsible for validating the values passed to the setPhoneticName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPhoneticName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePhoneticNameForArrayConstraintsFromSetPhoneticName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPhoneticNameItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPhoneticNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPhoneticNameItem) ? get_class($employeeSearchRowBasicPhoneticNameItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPhoneticNameItem), var_export($employeeSearchRowBasicPhoneticNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The phoneticName 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 phoneticName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $phoneticName
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPhoneticName(array $phoneticName = array())
    {
        // validation for constraint: array
        if ('' !== ($phoneticNameArrayErrorMessage = self::validatePhoneticNameForArrayConstraintsFromSetPhoneticName($phoneticName))) {
            throw new \InvalidArgumentException($phoneticNameArrayErrorMessage, __LINE__);
        }
        $this->phoneticName = $phoneticName;
        return $this;
    }
    /**
     * Add item to phoneticName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPhoneticName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The phoneticName 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->phoneticName[] = $item;
        return $this;
    }
    /**
     * Get positionTitle value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPositionTitle()
    {
        return $this->positionTitle;
    }
    /**
     * This method is responsible for validating the values passed to the setPositionTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPositionTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePositionTitleForArrayConstraintsFromSetPositionTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPositionTitleItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPositionTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPositionTitleItem) ? get_class($employeeSearchRowBasicPositionTitleItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPositionTitleItem), var_export($employeeSearchRowBasicPositionTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The positionTitle 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 positionTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $positionTitle
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPositionTitle(array $positionTitle = array())
    {
        // validation for constraint: array
        if ('' !== ($positionTitleArrayErrorMessage = self::validatePositionTitleForArrayConstraintsFromSetPositionTitle($positionTitle))) {
            throw new \InvalidArgumentException($positionTitleArrayErrorMessage, __LINE__);
        }
        $this->positionTitle = $positionTitle;
        return $this;
    }
    /**
     * Add item to positionTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPositionTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The positionTitle 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->positionTitle[] = $item;
        return $this;
    }
    /**
     * Get primaryEarningAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPrimaryEarningAmount()
    {
        return $this->primaryEarningAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setPrimaryEarningAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrimaryEarningAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrimaryEarningAmountForArrayConstraintsFromSetPrimaryEarningAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPrimaryEarningAmountItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPrimaryEarningAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPrimaryEarningAmountItem) ? get_class($employeeSearchRowBasicPrimaryEarningAmountItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPrimaryEarningAmountItem), var_export($employeeSearchRowBasicPrimaryEarningAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The primaryEarningAmount 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 primaryEarningAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $primaryEarningAmount
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPrimaryEarningAmount(array $primaryEarningAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($primaryEarningAmountArrayErrorMessage = self::validatePrimaryEarningAmountForArrayConstraintsFromSetPrimaryEarningAmount($primaryEarningAmount))) {
            throw new \InvalidArgumentException($primaryEarningAmountArrayErrorMessage, __LINE__);
        }
        $this->primaryEarningAmount = $primaryEarningAmount;
        return $this;
    }
    /**
     * Add item to primaryEarningAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPrimaryEarningAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The primaryEarningAmount 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->primaryEarningAmount[] = $item;
        return $this;
    }
    /**
     * Get primaryEarningItem value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPrimaryEarningItem()
    {
        return $this->primaryEarningItem;
    }
    /**
     * This method is responsible for validating the values passed to the setPrimaryEarningItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrimaryEarningItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrimaryEarningItemForArrayConstraintsFromSetPrimaryEarningItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPrimaryEarningItemItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPrimaryEarningItemItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPrimaryEarningItemItem) ? get_class($employeeSearchRowBasicPrimaryEarningItemItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPrimaryEarningItemItem), var_export($employeeSearchRowBasicPrimaryEarningItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The primaryEarningItem 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 primaryEarningItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $primaryEarningItem
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPrimaryEarningItem(array $primaryEarningItem = array())
    {
        // validation for constraint: array
        if ('' !== ($primaryEarningItemArrayErrorMessage = self::validatePrimaryEarningItemForArrayConstraintsFromSetPrimaryEarningItem($primaryEarningItem))) {
            throw new \InvalidArgumentException($primaryEarningItemArrayErrorMessage, __LINE__);
        }
        $this->primaryEarningItem = $primaryEarningItem;
        return $this;
    }
    /**
     * Add item to primaryEarningItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPrimaryEarningItem(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The primaryEarningItem 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->primaryEarningItem[] = $item;
        return $this;
    }
    /**
     * Get primaryEarningType value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPrimaryEarningType()
    {
        return $this->primaryEarningType;
    }
    /**
     * This method is responsible for validating the values passed to the setPrimaryEarningType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrimaryEarningType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrimaryEarningTypeForArrayConstraintsFromSetPrimaryEarningType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPrimaryEarningTypeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPrimaryEarningTypeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPrimaryEarningTypeItem) ? get_class($employeeSearchRowBasicPrimaryEarningTypeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPrimaryEarningTypeItem), var_export($employeeSearchRowBasicPrimaryEarningTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The primaryEarningType 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 primaryEarningType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $primaryEarningType
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPrimaryEarningType(array $primaryEarningType = array())
    {
        // validation for constraint: array
        if ('' !== ($primaryEarningTypeArrayErrorMessage = self::validatePrimaryEarningTypeForArrayConstraintsFromSetPrimaryEarningType($primaryEarningType))) {
            throw new \InvalidArgumentException($primaryEarningTypeArrayErrorMessage, __LINE__);
        }
        $this->primaryEarningType = $primaryEarningType;
        return $this;
    }
    /**
     * Add item to primaryEarningType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPrimaryEarningType(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The primaryEarningType 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->primaryEarningType[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderApprovalLimit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderApprovalLimit()
    {
        return $this->purchaseOrderApprovalLimit;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderApprovalLimit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderApprovalLimit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderApprovalLimitForArrayConstraintsFromSetPurchaseOrderApprovalLimit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPurchaseOrderApprovalLimitItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPurchaseOrderApprovalLimitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPurchaseOrderApprovalLimitItem) ? get_class($employeeSearchRowBasicPurchaseOrderApprovalLimitItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPurchaseOrderApprovalLimitItem), var_export($employeeSearchRowBasicPurchaseOrderApprovalLimitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderApprovalLimit 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 purchaseOrderApprovalLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderApprovalLimit
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPurchaseOrderApprovalLimit(array $purchaseOrderApprovalLimit = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderApprovalLimitArrayErrorMessage = self::validatePurchaseOrderApprovalLimitForArrayConstraintsFromSetPurchaseOrderApprovalLimit($purchaseOrderApprovalLimit))) {
            throw new \InvalidArgumentException($purchaseOrderApprovalLimitArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderApprovalLimit = $purchaseOrderApprovalLimit;
        return $this;
    }
    /**
     * Add item to purchaseOrderApprovalLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPurchaseOrderApprovalLimit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderApprovalLimit 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->purchaseOrderApprovalLimit[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderApprover value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPurchaseOrderApprover()
    {
        return $this->purchaseOrderApprover;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderApprover method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderApprover method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderApproverForArrayConstraintsFromSetPurchaseOrderApprover(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPurchaseOrderApproverItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPurchaseOrderApproverItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPurchaseOrderApproverItem) ? get_class($employeeSearchRowBasicPurchaseOrderApproverItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPurchaseOrderApproverItem), var_export($employeeSearchRowBasicPurchaseOrderApproverItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderApprover 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 purchaseOrderApprover value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $purchaseOrderApprover
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPurchaseOrderApprover(array $purchaseOrderApprover = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderApproverArrayErrorMessage = self::validatePurchaseOrderApproverForArrayConstraintsFromSetPurchaseOrderApprover($purchaseOrderApprover))) {
            throw new \InvalidArgumentException($purchaseOrderApproverArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderApprover = $purchaseOrderApprover;
        return $this;
    }
    /**
     * Add item to purchaseOrderApprover value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPurchaseOrderApprover(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderApprover 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->purchaseOrderApprover[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderLimit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderLimit()
    {
        return $this->purchaseOrderLimit;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderLimit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderLimit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderLimitForArrayConstraintsFromSetPurchaseOrderLimit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicPurchaseOrderLimitItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicPurchaseOrderLimitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicPurchaseOrderLimitItem) ? get_class($employeeSearchRowBasicPurchaseOrderLimitItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicPurchaseOrderLimitItem), var_export($employeeSearchRowBasicPurchaseOrderLimitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderLimit 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 purchaseOrderLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderLimit
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setPurchaseOrderLimit(array $purchaseOrderLimit = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderLimitArrayErrorMessage = self::validatePurchaseOrderLimitForArrayConstraintsFromSetPurchaseOrderLimit($purchaseOrderLimit))) {
            throw new \InvalidArgumentException($purchaseOrderLimitArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderLimit = $purchaseOrderLimit;
        return $this;
    }
    /**
     * Add item to purchaseOrderLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToPurchaseOrderLimit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderLimit 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->purchaseOrderLimit[] = $item;
        return $this;
    }
    /**
     * Get releaseDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getReleaseDate()
    {
        return $this->releaseDate;
    }
    /**
     * This method is responsible for validating the values passed to the setReleaseDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReleaseDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReleaseDateForArrayConstraintsFromSetReleaseDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicReleaseDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicReleaseDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicReleaseDateItem) ? get_class($employeeSearchRowBasicReleaseDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicReleaseDateItem), var_export($employeeSearchRowBasicReleaseDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The releaseDate 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 releaseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $releaseDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setReleaseDate(array $releaseDate = array())
    {
        // validation for constraint: array
        if ('' !== ($releaseDateArrayErrorMessage = self::validateReleaseDateForArrayConstraintsFromSetReleaseDate($releaseDate))) {
            throw new \InvalidArgumentException($releaseDateArrayErrorMessage, __LINE__);
        }
        $this->releaseDate = $releaseDate;
        return $this;
    }
    /**
     * Add item to releaseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToReleaseDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The releaseDate 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->releaseDate[] = $item;
        return $this;
    }
    /**
     * Get residentStatus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getResidentStatus()
    {
        return $this->residentStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setResidentStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResidentStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResidentStatusForArrayConstraintsFromSetResidentStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicResidentStatusItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicResidentStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicResidentStatusItem) ? get_class($employeeSearchRowBasicResidentStatusItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicResidentStatusItem), var_export($employeeSearchRowBasicResidentStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The residentStatus 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 residentStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $residentStatus
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setResidentStatus(array $residentStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($residentStatusArrayErrorMessage = self::validateResidentStatusForArrayConstraintsFromSetResidentStatus($residentStatus))) {
            throw new \InvalidArgumentException($residentStatusArrayErrorMessage, __LINE__);
        }
        $this->residentStatus = $residentStatus;
        return $this;
    }
    /**
     * Add item to residentStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToResidentStatus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The residentStatus 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->residentStatus[] = $item;
        return $this;
    }
    /**
     * Get role value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRole()
    {
        return $this->role;
    }
    /**
     * This method is responsible for validating the values passed to the setRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoleForArrayConstraintsFromSetRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicRoleItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicRoleItem) ? get_class($employeeSearchRowBasicRoleItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicRoleItem), var_export($employeeSearchRowBasicRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The role 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 role value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $role
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setRole(array $role = array())
    {
        // validation for constraint: array
        if ('' !== ($roleArrayErrorMessage = self::validateRoleForArrayConstraintsFromSetRole($role))) {
            throw new \InvalidArgumentException($roleArrayErrorMessage, __LINE__);
        }
        $this->role = $role;
        return $this;
    }
    /**
     * Add item to role value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The role 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->role[] = $item;
        return $this;
    }
    /**
     * Get roleChange value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getRoleChange()
    {
        return $this->roleChange;
    }
    /**
     * This method is responsible for validating the values passed to the setRoleChange method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRoleChange method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoleChangeForArrayConstraintsFromSetRoleChange(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicRoleChangeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicRoleChangeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicRoleChangeItem) ? get_class($employeeSearchRowBasicRoleChangeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicRoleChangeItem), var_export($employeeSearchRowBasicRoleChangeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The roleChange 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 roleChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $roleChange
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setRoleChange(array $roleChange = array())
    {
        // validation for constraint: array
        if ('' !== ($roleChangeArrayErrorMessage = self::validateRoleChangeForArrayConstraintsFromSetRoleChange($roleChange))) {
            throw new \InvalidArgumentException($roleChangeArrayErrorMessage, __LINE__);
        }
        $this->roleChange = $roleChange;
        return $this;
    }
    /**
     * Add item to roleChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToRoleChange(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The roleChange 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->roleChange[] = $item;
        return $this;
    }
    /**
     * Get roleChangeAction value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getRoleChangeAction()
    {
        return $this->roleChangeAction;
    }
    /**
     * This method is responsible for validating the values passed to the setRoleChangeAction method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRoleChangeAction method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoleChangeActionForArrayConstraintsFromSetRoleChangeAction(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicRoleChangeActionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicRoleChangeActionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicRoleChangeActionItem) ? get_class($employeeSearchRowBasicRoleChangeActionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicRoleChangeActionItem), var_export($employeeSearchRowBasicRoleChangeActionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The roleChangeAction 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 roleChangeAction value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $roleChangeAction
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setRoleChangeAction(array $roleChangeAction = array())
    {
        // validation for constraint: array
        if ('' !== ($roleChangeActionArrayErrorMessage = self::validateRoleChangeActionForArrayConstraintsFromSetRoleChangeAction($roleChangeAction))) {
            throw new \InvalidArgumentException($roleChangeActionArrayErrorMessage, __LINE__);
        }
        $this->roleChangeAction = $roleChangeAction;
        return $this;
    }
    /**
     * Add item to roleChangeAction value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToRoleChangeAction(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The roleChangeAction 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->roleChangeAction[] = $item;
        return $this;
    }
    /**
     * Get roleChangeDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getRoleChangeDate()
    {
        return $this->roleChangeDate;
    }
    /**
     * This method is responsible for validating the values passed to the setRoleChangeDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRoleChangeDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoleChangeDateForArrayConstraintsFromSetRoleChangeDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicRoleChangeDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicRoleChangeDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicRoleChangeDateItem) ? get_class($employeeSearchRowBasicRoleChangeDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicRoleChangeDateItem), var_export($employeeSearchRowBasicRoleChangeDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The roleChangeDate 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 roleChangeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $roleChangeDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setRoleChangeDate(array $roleChangeDate = array())
    {
        // validation for constraint: array
        if ('' !== ($roleChangeDateArrayErrorMessage = self::validateRoleChangeDateForArrayConstraintsFromSetRoleChangeDate($roleChangeDate))) {
            throw new \InvalidArgumentException($roleChangeDateArrayErrorMessage, __LINE__);
        }
        $this->roleChangeDate = $roleChangeDate;
        return $this;
    }
    /**
     * Add item to roleChangeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToRoleChangeDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The roleChangeDate 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->roleChangeDate[] = $item;
        return $this;
    }
    /**
     * Get salesRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesRole()
    {
        return $this->salesRole;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesRoleForArrayConstraintsFromSetSalesRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSalesRoleItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSalesRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSalesRoleItem) ? get_class($employeeSearchRowBasicSalesRoleItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSalesRoleItem), var_export($employeeSearchRowBasicSalesRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesRole 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 salesRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesRole
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSalesRole(array $salesRole = array())
    {
        // validation for constraint: array
        if ('' !== ($salesRoleArrayErrorMessage = self::validateSalesRoleForArrayConstraintsFromSetSalesRole($salesRole))) {
            throw new \InvalidArgumentException($salesRoleArrayErrorMessage, __LINE__);
        }
        $this->salesRole = $salesRole;
        return $this;
    }
    /**
     * Add item to salesRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSalesRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesRole 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->salesRole[] = $item;
        return $this;
    }
    /**
     * Get salutation value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSalutation()
    {
        return $this->salutation;
    }
    /**
     * This method is responsible for validating the values passed to the setSalutation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalutation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalutationForArrayConstraintsFromSetSalutation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSalutationItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSalutationItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSalutationItem) ? get_class($employeeSearchRowBasicSalutationItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSalutationItem), var_export($employeeSearchRowBasicSalutationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salutation 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 salutation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $salutation
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSalutation(array $salutation = array())
    {
        // validation for constraint: array
        if ('' !== ($salutationArrayErrorMessage = self::validateSalutationForArrayConstraintsFromSetSalutation($salutation))) {
            throw new \InvalidArgumentException($salutationArrayErrorMessage, __LINE__);
        }
        $this->salutation = $salutation;
        return $this;
    }
    /**
     * Add item to salutation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSalutation(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The salutation 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->salutation[] = $item;
        return $this;
    }
    /**
     * Get shipAddress1 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAddress1()
    {
        return $this->shipAddress1;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAddress1 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAddress1 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAddress1ForArrayConstraintsFromSetShipAddress1(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipAddress1Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipAddress1Item) ? get_class($employeeSearchRowBasicShipAddress1Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipAddress1Item), var_export($employeeSearchRowBasicShipAddress1Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAddress1 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 shipAddress1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAddress1
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipAddress1(array $shipAddress1 = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAddress1ArrayErrorMessage = self::validateShipAddress1ForArrayConstraintsFromSetShipAddress1($shipAddress1))) {
            throw new \InvalidArgumentException($shipAddress1ArrayErrorMessage, __LINE__);
        }
        $this->shipAddress1 = $shipAddress1;
        return $this;
    }
    /**
     * Add item to shipAddress1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipAddress1(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAddress1 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->shipAddress1[] = $item;
        return $this;
    }
    /**
     * Get shipAddress2 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAddress2()
    {
        return $this->shipAddress2;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAddress2 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAddress2 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAddress2ForArrayConstraintsFromSetShipAddress2(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipAddress2Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipAddress2Item) ? get_class($employeeSearchRowBasicShipAddress2Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipAddress2Item), var_export($employeeSearchRowBasicShipAddress2Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAddress2 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 shipAddress2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAddress2
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipAddress2(array $shipAddress2 = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAddress2ArrayErrorMessage = self::validateShipAddress2ForArrayConstraintsFromSetShipAddress2($shipAddress2))) {
            throw new \InvalidArgumentException($shipAddress2ArrayErrorMessage, __LINE__);
        }
        $this->shipAddress2 = $shipAddress2;
        return $this;
    }
    /**
     * Add item to shipAddress2 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipAddress2(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAddress2 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->shipAddress2[] = $item;
        return $this;
    }
    /**
     * Get shipAddress3 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAddress3()
    {
        return $this->shipAddress3;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAddress3 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAddress3 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAddress3ForArrayConstraintsFromSetShipAddress3(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipAddress3Item) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipAddress3Item) ? get_class($employeeSearchRowBasicShipAddress3Item) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipAddress3Item), var_export($employeeSearchRowBasicShipAddress3Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAddress3 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 shipAddress3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAddress3
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipAddress3(array $shipAddress3 = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAddress3ArrayErrorMessage = self::validateShipAddress3ForArrayConstraintsFromSetShipAddress3($shipAddress3))) {
            throw new \InvalidArgumentException($shipAddress3ArrayErrorMessage, __LINE__);
        }
        $this->shipAddress3 = $shipAddress3;
        return $this;
    }
    /**
     * Add item to shipAddress3 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipAddress3(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAddress3 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->shipAddress3[] = $item;
        return $this;
    }
    /**
     * Get shipAddressee value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAddressee()
    {
        return $this->shipAddressee;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAddressee method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAddressee method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAddresseeForArrayConstraintsFromSetShipAddressee(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipAddresseeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipAddresseeItem) ? get_class($employeeSearchRowBasicShipAddresseeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipAddresseeItem), var_export($employeeSearchRowBasicShipAddresseeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAddressee 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 shipAddressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAddressee
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipAddressee(array $shipAddressee = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAddresseeArrayErrorMessage = self::validateShipAddresseeForArrayConstraintsFromSetShipAddressee($shipAddressee))) {
            throw new \InvalidArgumentException($shipAddresseeArrayErrorMessage, __LINE__);
        }
        $this->shipAddressee = $shipAddressee;
        return $this;
    }
    /**
     * Add item to shipAddressee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipAddressee(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAddressee 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->shipAddressee[] = $item;
        return $this;
    }
    /**
     * Get shipAttention value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAttention()
    {
        return $this->shipAttention;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAttention method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAttention method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAttentionForArrayConstraintsFromSetShipAttention(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipAttentionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipAttentionItem) ? get_class($employeeSearchRowBasicShipAttentionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipAttentionItem), var_export($employeeSearchRowBasicShipAttentionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAttention 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 shipAttention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAttention
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipAttention(array $shipAttention = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAttentionArrayErrorMessage = self::validateShipAttentionForArrayConstraintsFromSetShipAttention($shipAttention))) {
            throw new \InvalidArgumentException($shipAttentionArrayErrorMessage, __LINE__);
        }
        $this->shipAttention = $shipAttention;
        return $this;
    }
    /**
     * Add item to shipAttention value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipAttention(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAttention 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->shipAttention[] = $item;
        return $this;
    }
    /**
     * Get shipCity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipCity()
    {
        return $this->shipCity;
    }
    /**
     * This method is responsible for validating the values passed to the setShipCity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipCity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipCityForArrayConstraintsFromSetShipCity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipCityItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipCityItem) ? get_class($employeeSearchRowBasicShipCityItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipCityItem), var_export($employeeSearchRowBasicShipCityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipCity 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 shipCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipCity
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipCity(array $shipCity = array())
    {
        // validation for constraint: array
        if ('' !== ($shipCityArrayErrorMessage = self::validateShipCityForArrayConstraintsFromSetShipCity($shipCity))) {
            throw new \InvalidArgumentException($shipCityArrayErrorMessage, __LINE__);
        }
        $this->shipCity = $shipCity;
        return $this;
    }
    /**
     * Add item to shipCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipCity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipCity 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->shipCity[] = $item;
        return $this;
    }
    /**
     * Get shipCountry value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getShipCountry()
    {
        return $this->shipCountry;
    }
    /**
     * This method is responsible for validating the values passed to the setShipCountry method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipCountry method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipCountryForArrayConstraintsFromSetShipCountry(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipCountryItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipCountryItem) ? get_class($employeeSearchRowBasicShipCountryItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipCountryItem), var_export($employeeSearchRowBasicShipCountryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipCountry 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 shipCountry value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $shipCountry
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipCountry(array $shipCountry = array())
    {
        // validation for constraint: array
        if ('' !== ($shipCountryArrayErrorMessage = self::validateShipCountryForArrayConstraintsFromSetShipCountry($shipCountry))) {
            throw new \InvalidArgumentException($shipCountryArrayErrorMessage, __LINE__);
        }
        $this->shipCountry = $shipCountry;
        return $this;
    }
    /**
     * Add item to shipCountry value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipCountry(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The shipCountry 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->shipCountry[] = $item;
        return $this;
    }
    /**
     * Get shipCountryCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipCountryCode()
    {
        return $this->shipCountryCode;
    }
    /**
     * This method is responsible for validating the values passed to the setShipCountryCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipCountryCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipCountryCodeForArrayConstraintsFromSetShipCountryCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipCountryCodeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipCountryCodeItem) ? get_class($employeeSearchRowBasicShipCountryCodeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipCountryCodeItem), var_export($employeeSearchRowBasicShipCountryCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipCountryCode 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 shipCountryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipCountryCode
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipCountryCode(array $shipCountryCode = array())
    {
        // validation for constraint: array
        if ('' !== ($shipCountryCodeArrayErrorMessage = self::validateShipCountryCodeForArrayConstraintsFromSetShipCountryCode($shipCountryCode))) {
            throw new \InvalidArgumentException($shipCountryCodeArrayErrorMessage, __LINE__);
        }
        $this->shipCountryCode = $shipCountryCode;
        return $this;
    }
    /**
     * Add item to shipCountryCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipCountryCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipCountryCode 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->shipCountryCode[] = $item;
        return $this;
    }
    /**
     * Get shipPhone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipPhone()
    {
        return $this->shipPhone;
    }
    /**
     * This method is responsible for validating the values passed to the setShipPhone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipPhone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipPhoneForArrayConstraintsFromSetShipPhone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipPhoneItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipPhoneItem) ? get_class($employeeSearchRowBasicShipPhoneItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipPhoneItem), var_export($employeeSearchRowBasicShipPhoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipPhone 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 shipPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipPhone
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipPhone(array $shipPhone = array())
    {
        // validation for constraint: array
        if ('' !== ($shipPhoneArrayErrorMessage = self::validateShipPhoneForArrayConstraintsFromSetShipPhone($shipPhone))) {
            throw new \InvalidArgumentException($shipPhoneArrayErrorMessage, __LINE__);
        }
        $this->shipPhone = $shipPhone;
        return $this;
    }
    /**
     * Add item to shipPhone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipPhone 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->shipPhone[] = $item;
        return $this;
    }
    /**
     * Get shipState value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipState()
    {
        return $this->shipState;
    }
    /**
     * This method is responsible for validating the values passed to the setShipState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipStateForArrayConstraintsFromSetShipState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipStateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipStateItem) ? get_class($employeeSearchRowBasicShipStateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipStateItem), var_export($employeeSearchRowBasicShipStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipState 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 shipState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipState
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipState(array $shipState = array())
    {
        // validation for constraint: array
        if ('' !== ($shipStateArrayErrorMessage = self::validateShipStateForArrayConstraintsFromSetShipState($shipState))) {
            throw new \InvalidArgumentException($shipStateArrayErrorMessage, __LINE__);
        }
        $this->shipState = $shipState;
        return $this;
    }
    /**
     * Add item to shipState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipState(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipState 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->shipState[] = $item;
        return $this;
    }
    /**
     * Get shipZip value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipZip()
    {
        return $this->shipZip;
    }
    /**
     * This method is responsible for validating the values passed to the setShipZip method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipZip method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipZipForArrayConstraintsFromSetShipZip(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicShipZipItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicShipZipItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicShipZipItem) ? get_class($employeeSearchRowBasicShipZipItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicShipZipItem), var_export($employeeSearchRowBasicShipZipItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipZip 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 shipZip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipZip
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setShipZip(array $shipZip = array())
    {
        // validation for constraint: array
        if ('' !== ($shipZipArrayErrorMessage = self::validateShipZipForArrayConstraintsFromSetShipZip($shipZip))) {
            throw new \InvalidArgumentException($shipZipArrayErrorMessage, __LINE__);
        }
        $this->shipZip = $shipZip;
        return $this;
    }
    /**
     * Add item to shipZip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToShipZip(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipZip 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->shipZip[] = $item;
        return $this;
    }
    /**
     * Get socialSecurityNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSocialSecurityNumber()
    {
        return $this->socialSecurityNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setSocialSecurityNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSocialSecurityNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSocialSecurityNumberForArrayConstraintsFromSetSocialSecurityNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSocialSecurityNumberItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSocialSecurityNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSocialSecurityNumberItem) ? get_class($employeeSearchRowBasicSocialSecurityNumberItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSocialSecurityNumberItem), var_export($employeeSearchRowBasicSocialSecurityNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The socialSecurityNumber 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 socialSecurityNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $socialSecurityNumber
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSocialSecurityNumber(array $socialSecurityNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($socialSecurityNumberArrayErrorMessage = self::validateSocialSecurityNumberForArrayConstraintsFromSetSocialSecurityNumber($socialSecurityNumber))) {
            throw new \InvalidArgumentException($socialSecurityNumberArrayErrorMessage, __LINE__);
        }
        $this->socialSecurityNumber = $socialSecurityNumber;
        return $this;
    }
    /**
     * Add item to socialSecurityNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSocialSecurityNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The socialSecurityNumber 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->socialSecurityNumber[] = $item;
        return $this;
    }
    /**
     * Get startDateTimeOffCalc value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getStartDateTimeOffCalc()
    {
        return $this->startDateTimeOffCalc;
    }
    /**
     * This method is responsible for validating the values passed to the setStartDateTimeOffCalc method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartDateTimeOffCalc method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartDateTimeOffCalcForArrayConstraintsFromSetStartDateTimeOffCalc(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicStartDateTimeOffCalcItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicStartDateTimeOffCalcItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicStartDateTimeOffCalcItem) ? get_class($employeeSearchRowBasicStartDateTimeOffCalcItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicStartDateTimeOffCalcItem), var_export($employeeSearchRowBasicStartDateTimeOffCalcItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startDateTimeOffCalc 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 startDateTimeOffCalc value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $startDateTimeOffCalc
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setStartDateTimeOffCalc(array $startDateTimeOffCalc = array())
    {
        // validation for constraint: array
        if ('' !== ($startDateTimeOffCalcArrayErrorMessage = self::validateStartDateTimeOffCalcForArrayConstraintsFromSetStartDateTimeOffCalc($startDateTimeOffCalc))) {
            throw new \InvalidArgumentException($startDateTimeOffCalcArrayErrorMessage, __LINE__);
        }
        $this->startDateTimeOffCalc = $startDateTimeOffCalc;
        return $this;
    }
    /**
     * Add item to startDateTimeOffCalc value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToStartDateTimeOffCalc(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The startDateTimeOffCalc 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->startDateTimeOffCalc[] = $item;
        return $this;
    }
    /**
     * Get state value
     * @return \StructType\SearchColumnEnumSelectField[]|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 $employeeSearchRowBasicStateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicStateItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicStateItem) ? get_class($employeeSearchRowBasicStateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicStateItem), var_export($employeeSearchRowBasicStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The state 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 state value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $state
     * @return \StructType\EmployeeSearchRowBasic
     */
    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\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToState(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The state 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->state[] = $item;
        return $this;
    }
    /**
     * Get subscription value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSubscription()
    {
        return $this->subscription;
    }
    /**
     * This method is responsible for validating the values passed to the setSubscription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubscription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubscriptionForArrayConstraintsFromSetSubscription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSubscriptionItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSubscriptionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSubscriptionItem) ? get_class($employeeSearchRowBasicSubscriptionItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSubscriptionItem), var_export($employeeSearchRowBasicSubscriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subscription 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 subscription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSubscription(array $subscription = array())
    {
        // validation for constraint: array
        if ('' !== ($subscriptionArrayErrorMessage = self::validateSubscriptionForArrayConstraintsFromSetSubscription($subscription))) {
            throw new \InvalidArgumentException($subscriptionArrayErrorMessage, __LINE__);
        }
        $this->subscription = $subscription;
        return $this;
    }
    /**
     * Add item to subscription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSubscription(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The subscription 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->subscription[] = $item;
        return $this;
    }
    /**
     * Get subscriptionDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getSubscriptionDate()
    {
        return $this->subscriptionDate;
    }
    /**
     * This method is responsible for validating the values passed to the setSubscriptionDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubscriptionDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubscriptionDateForArrayConstraintsFromSetSubscriptionDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSubscriptionDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSubscriptionDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSubscriptionDateItem) ? get_class($employeeSearchRowBasicSubscriptionDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSubscriptionDateItem), var_export($employeeSearchRowBasicSubscriptionDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subscriptionDate 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 subscriptionDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $subscriptionDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSubscriptionDate(array $subscriptionDate = array())
    {
        // validation for constraint: array
        if ('' !== ($subscriptionDateArrayErrorMessage = self::validateSubscriptionDateForArrayConstraintsFromSetSubscriptionDate($subscriptionDate))) {
            throw new \InvalidArgumentException($subscriptionDateArrayErrorMessage, __LINE__);
        }
        $this->subscriptionDate = $subscriptionDate;
        return $this;
    }
    /**
     * Add item to subscriptionDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSubscriptionDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The subscriptionDate 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->subscriptionDate[] = $item;
        return $this;
    }
    /**
     * Get subscriptionStatus value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSubscriptionStatus()
    {
        return $this->subscriptionStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setSubscriptionStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubscriptionStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubscriptionStatusForArrayConstraintsFromSetSubscriptionStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSubscriptionStatusItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSubscriptionStatusItem) ? get_class($employeeSearchRowBasicSubscriptionStatusItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSubscriptionStatusItem), var_export($employeeSearchRowBasicSubscriptionStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subscriptionStatus 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 subscriptionStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $subscriptionStatus
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSubscriptionStatus(array $subscriptionStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($subscriptionStatusArrayErrorMessage = self::validateSubscriptionStatusForArrayConstraintsFromSetSubscriptionStatus($subscriptionStatus))) {
            throw new \InvalidArgumentException($subscriptionStatusArrayErrorMessage, __LINE__);
        }
        $this->subscriptionStatus = $subscriptionStatus;
        return $this;
    }
    /**
     * Add item to subscriptionStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSubscriptionStatus(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The subscriptionStatus 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->subscriptionStatus[] = $item;
        return $this;
    }
    /**
     * Get subsidiary value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSubsidiary()
    {
        return $this->subsidiary;
    }
    /**
     * This method is responsible for validating the values passed to the setSubsidiary method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubsidiary method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubsidiaryForArrayConstraintsFromSetSubsidiary(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSubsidiaryItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSubsidiaryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSubsidiaryItem) ? get_class($employeeSearchRowBasicSubsidiaryItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSubsidiaryItem), var_export($employeeSearchRowBasicSubsidiaryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subsidiary 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 subsidiary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSubsidiary(array $subsidiary = array())
    {
        // validation for constraint: array
        if ('' !== ($subsidiaryArrayErrorMessage = self::validateSubsidiaryForArrayConstraintsFromSetSubsidiary($subsidiary))) {
            throw new \InvalidArgumentException($subsidiaryArrayErrorMessage, __LINE__);
        }
        $this->subsidiary = $subsidiary;
        return $this;
    }
    /**
     * Add item to subsidiary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSubsidiary(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The subsidiary 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->subsidiary[] = $item;
        return $this;
    }
    /**
     * Get supervisor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSupervisor()
    {
        return $this->supervisor;
    }
    /**
     * This method is responsible for validating the values passed to the setSupervisor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSupervisor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSupervisorForArrayConstraintsFromSetSupervisor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicSupervisorItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicSupervisorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicSupervisorItem) ? get_class($employeeSearchRowBasicSupervisorItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicSupervisorItem), var_export($employeeSearchRowBasicSupervisorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The supervisor 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 supervisor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $supervisor
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setSupervisor(array $supervisor = array())
    {
        // validation for constraint: array
        if ('' !== ($supervisorArrayErrorMessage = self::validateSupervisorForArrayConstraintsFromSetSupervisor($supervisor))) {
            throw new \InvalidArgumentException($supervisorArrayErrorMessage, __LINE__);
        }
        $this->supervisor = $supervisor;
        return $this;
    }
    /**
     * Add item to supervisor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToSupervisor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The supervisor 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->supervisor[] = $item;
        return $this;
    }
    /**
     * Get targetUtilization value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTargetUtilization()
    {
        return $this->targetUtilization;
    }
    /**
     * This method is responsible for validating the values passed to the setTargetUtilization method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTargetUtilization method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTargetUtilizationForArrayConstraintsFromSetTargetUtilization(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTargetUtilizationItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTargetUtilizationItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTargetUtilizationItem) ? get_class($employeeSearchRowBasicTargetUtilizationItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTargetUtilizationItem), var_export($employeeSearchRowBasicTargetUtilizationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The targetUtilization 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 targetUtilization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $targetUtilization
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTargetUtilization(array $targetUtilization = array())
    {
        // validation for constraint: array
        if ('' !== ($targetUtilizationArrayErrorMessage = self::validateTargetUtilizationForArrayConstraintsFromSetTargetUtilization($targetUtilization))) {
            throw new \InvalidArgumentException($targetUtilizationArrayErrorMessage, __LINE__);
        }
        $this->targetUtilization = $targetUtilization;
        return $this;
    }
    /**
     * Add item to targetUtilization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTargetUtilization(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The targetUtilization 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->targetUtilization[] = $item;
        return $this;
    }
    /**
     * Get terminationCategory value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getTerminationCategory()
    {
        return $this->terminationCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setTerminationCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerminationCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTerminationCategoryForArrayConstraintsFromSetTerminationCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTerminationCategoryItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTerminationCategoryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTerminationCategoryItem) ? get_class($employeeSearchRowBasicTerminationCategoryItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTerminationCategoryItem), var_export($employeeSearchRowBasicTerminationCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The terminationCategory 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 terminationCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $terminationCategory
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTerminationCategory(array $terminationCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($terminationCategoryArrayErrorMessage = self::validateTerminationCategoryForArrayConstraintsFromSetTerminationCategory($terminationCategory))) {
            throw new \InvalidArgumentException($terminationCategoryArrayErrorMessage, __LINE__);
        }
        $this->terminationCategory = $terminationCategory;
        return $this;
    }
    /**
     * Add item to terminationCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTerminationCategory(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The terminationCategory 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->terminationCategory[] = $item;
        return $this;
    }
    /**
     * Get terminationDetails value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTerminationDetails()
    {
        return $this->terminationDetails;
    }
    /**
     * This method is responsible for validating the values passed to the setTerminationDetails method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerminationDetails method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTerminationDetailsForArrayConstraintsFromSetTerminationDetails(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTerminationDetailsItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTerminationDetailsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTerminationDetailsItem) ? get_class($employeeSearchRowBasicTerminationDetailsItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTerminationDetailsItem), var_export($employeeSearchRowBasicTerminationDetailsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The terminationDetails 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 terminationDetails value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $terminationDetails
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTerminationDetails(array $terminationDetails = array())
    {
        // validation for constraint: array
        if ('' !== ($terminationDetailsArrayErrorMessage = self::validateTerminationDetailsForArrayConstraintsFromSetTerminationDetails($terminationDetails))) {
            throw new \InvalidArgumentException($terminationDetailsArrayErrorMessage, __LINE__);
        }
        $this->terminationDetails = $terminationDetails;
        return $this;
    }
    /**
     * Add item to terminationDetails value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTerminationDetails(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The terminationDetails 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->terminationDetails[] = $item;
        return $this;
    }
    /**
     * Get terminationReason value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTerminationReason()
    {
        return $this->terminationReason;
    }
    /**
     * This method is responsible for validating the values passed to the setTerminationReason method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerminationReason method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTerminationReasonForArrayConstraintsFromSetTerminationReason(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTerminationReasonItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTerminationReasonItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTerminationReasonItem) ? get_class($employeeSearchRowBasicTerminationReasonItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTerminationReasonItem), var_export($employeeSearchRowBasicTerminationReasonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The terminationReason 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 terminationReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $terminationReason
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTerminationReason(array $terminationReason = array())
    {
        // validation for constraint: array
        if ('' !== ($terminationReasonArrayErrorMessage = self::validateTerminationReasonForArrayConstraintsFromSetTerminationReason($terminationReason))) {
            throw new \InvalidArgumentException($terminationReasonArrayErrorMessage, __LINE__);
        }
        $this->terminationReason = $terminationReason;
        return $this;
    }
    /**
     * Add item to terminationReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTerminationReason(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The terminationReason 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->terminationReason[] = $item;
        return $this;
    }
    /**
     * Get terminationRegretted value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getTerminationRegretted()
    {
        return $this->terminationRegretted;
    }
    /**
     * This method is responsible for validating the values passed to the setTerminationRegretted method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerminationRegretted method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTerminationRegrettedForArrayConstraintsFromSetTerminationRegretted(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTerminationRegrettedItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTerminationRegrettedItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTerminationRegrettedItem) ? get_class($employeeSearchRowBasicTerminationRegrettedItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTerminationRegrettedItem), var_export($employeeSearchRowBasicTerminationRegrettedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The terminationRegretted 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 terminationRegretted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $terminationRegretted
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTerminationRegretted(array $terminationRegretted = array())
    {
        // validation for constraint: array
        if ('' !== ($terminationRegrettedArrayErrorMessage = self::validateTerminationRegrettedForArrayConstraintsFromSetTerminationRegretted($terminationRegretted))) {
            throw new \InvalidArgumentException($terminationRegrettedArrayErrorMessage, __LINE__);
        }
        $this->terminationRegretted = $terminationRegretted;
        return $this;
    }
    /**
     * Add item to terminationRegretted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTerminationRegretted(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The terminationRegretted 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->terminationRegretted[] = $item;
        return $this;
    }
    /**
     * Get timeApprover value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTimeApprover()
    {
        return $this->timeApprover;
    }
    /**
     * This method is responsible for validating the values passed to the setTimeApprover method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTimeApprover method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTimeApproverForArrayConstraintsFromSetTimeApprover(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTimeApproverItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTimeApproverItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTimeApproverItem) ? get_class($employeeSearchRowBasicTimeApproverItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTimeApproverItem), var_export($employeeSearchRowBasicTimeApproverItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The timeApprover 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 timeApprover value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $timeApprover
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTimeApprover(array $timeApprover = array())
    {
        // validation for constraint: array
        if ('' !== ($timeApproverArrayErrorMessage = self::validateTimeApproverForArrayConstraintsFromSetTimeApprover($timeApprover))) {
            throw new \InvalidArgumentException($timeApproverArrayErrorMessage, __LINE__);
        }
        $this->timeApprover = $timeApprover;
        return $this;
    }
    /**
     * Add item to timeApprover value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTimeApprover(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The timeApprover 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->timeApprover[] = $item;
        return $this;
    }
    /**
     * Get timeOffPlan value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTimeOffPlan()
    {
        return $this->timeOffPlan;
    }
    /**
     * This method is responsible for validating the values passed to the setTimeOffPlan method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTimeOffPlan method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTimeOffPlanForArrayConstraintsFromSetTimeOffPlan(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTimeOffPlanItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTimeOffPlanItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTimeOffPlanItem) ? get_class($employeeSearchRowBasicTimeOffPlanItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTimeOffPlanItem), var_export($employeeSearchRowBasicTimeOffPlanItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The timeOffPlan 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 timeOffPlan value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $timeOffPlan
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTimeOffPlan(array $timeOffPlan = array())
    {
        // validation for constraint: array
        if ('' !== ($timeOffPlanArrayErrorMessage = self::validateTimeOffPlanForArrayConstraintsFromSetTimeOffPlan($timeOffPlan))) {
            throw new \InvalidArgumentException($timeOffPlanArrayErrorMessage, __LINE__);
        }
        $this->timeOffPlan = $timeOffPlan;
        return $this;
    }
    /**
     * Add item to timeOffPlan value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTimeOffPlan(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The timeOffPlan 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->timeOffPlan[] = $item;
        return $this;
    }
    /**
     * Get title value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTitle()
    {
        return $this->title;
    }
    /**
     * This method is responsible for validating the values passed to the setTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTitleForArrayConstraintsFromSetTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicTitleItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicTitleItem) ? get_class($employeeSearchRowBasicTitleItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicTitleItem), var_export($employeeSearchRowBasicTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The title 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 title value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $title
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setTitle(array $title = array())
    {
        // validation for constraint: array
        if ('' !== ($titleArrayErrorMessage = self::validateTitleForArrayConstraintsFromSetTitle($title))) {
            throw new \InvalidArgumentException($titleArrayErrorMessage, __LINE__);
        }
        $this->title = $title;
        return $this;
    }
    /**
     * Add item to title value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The title 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->title[] = $item;
        return $this;
    }
    /**
     * Get usePerquest value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUsePerquest()
    {
        return $this->usePerquest;
    }
    /**
     * This method is responsible for validating the values passed to the setUsePerquest method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUsePerquest method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUsePerquestForArrayConstraintsFromSetUsePerquest(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicUsePerquestItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicUsePerquestItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicUsePerquestItem) ? get_class($employeeSearchRowBasicUsePerquestItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicUsePerquestItem), var_export($employeeSearchRowBasicUsePerquestItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The usePerquest 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 usePerquest value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $usePerquest
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setUsePerquest(array $usePerquest = array())
    {
        // validation for constraint: array
        if ('' !== ($usePerquestArrayErrorMessage = self::validateUsePerquestForArrayConstraintsFromSetUsePerquest($usePerquest))) {
            throw new \InvalidArgumentException($usePerquestArrayErrorMessage, __LINE__);
        }
        $this->usePerquest = $usePerquest;
        return $this;
    }
    /**
     * Add item to usePerquest value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToUsePerquest(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The usePerquest 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->usePerquest[] = $item;
        return $this;
    }
    /**
     * Get useTimeData value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUseTimeData()
    {
        return $this->useTimeData;
    }
    /**
     * This method is responsible for validating the values passed to the setUseTimeData method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUseTimeData method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUseTimeDataForArrayConstraintsFromSetUseTimeData(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicUseTimeDataItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicUseTimeDataItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($employeeSearchRowBasicUseTimeDataItem) ? get_class($employeeSearchRowBasicUseTimeDataItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicUseTimeDataItem), var_export($employeeSearchRowBasicUseTimeDataItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The useTimeData 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 useTimeData value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $useTimeData
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setUseTimeData(array $useTimeData = array())
    {
        // validation for constraint: array
        if ('' !== ($useTimeDataArrayErrorMessage = self::validateUseTimeDataForArrayConstraintsFromSetUseTimeData($useTimeData))) {
            throw new \InvalidArgumentException($useTimeDataArrayErrorMessage, __LINE__);
        }
        $this->useTimeData = $useTimeData;
        return $this;
    }
    /**
     * Add item to useTimeData value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToUseTimeData(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The useTimeData 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->useTimeData[] = $item;
        return $this;
    }
    /**
     * Get visaExpDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getVisaExpDate()
    {
        return $this->visaExpDate;
    }
    /**
     * This method is responsible for validating the values passed to the setVisaExpDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVisaExpDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVisaExpDateForArrayConstraintsFromSetVisaExpDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicVisaExpDateItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicVisaExpDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($employeeSearchRowBasicVisaExpDateItem) ? get_class($employeeSearchRowBasicVisaExpDateItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicVisaExpDateItem), var_export($employeeSearchRowBasicVisaExpDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The visaExpDate 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 visaExpDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $visaExpDate
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setVisaExpDate(array $visaExpDate = array())
    {
        // validation for constraint: array
        if ('' !== ($visaExpDateArrayErrorMessage = self::validateVisaExpDateForArrayConstraintsFromSetVisaExpDate($visaExpDate))) {
            throw new \InvalidArgumentException($visaExpDateArrayErrorMessage, __LINE__);
        }
        $this->visaExpDate = $visaExpDate;
        return $this;
    }
    /**
     * Add item to visaExpDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToVisaExpDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The visaExpDate 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->visaExpDate[] = $item;
        return $this;
    }
    /**
     * Get visaType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getVisaType()
    {
        return $this->visaType;
    }
    /**
     * This method is responsible for validating the values passed to the setVisaType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVisaType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVisaTypeForArrayConstraintsFromSetVisaType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicVisaTypeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicVisaTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicVisaTypeItem) ? get_class($employeeSearchRowBasicVisaTypeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicVisaTypeItem), var_export($employeeSearchRowBasicVisaTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The visaType 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 visaType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $visaType
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setVisaType(array $visaType = array())
    {
        // validation for constraint: array
        if ('' !== ($visaTypeArrayErrorMessage = self::validateVisaTypeForArrayConstraintsFromSetVisaType($visaType))) {
            throw new \InvalidArgumentException($visaTypeArrayErrorMessage, __LINE__);
        }
        $this->visaType = $visaType;
        return $this;
    }
    /**
     * Add item to visaType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToVisaType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The visaType 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->visaType[] = $item;
        return $this;
    }
    /**
     * Get workCalendar value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getWorkCalendar()
    {
        return $this->workCalendar;
    }
    /**
     * This method is responsible for validating the values passed to the setWorkCalendar method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWorkCalendar method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWorkCalendarForArrayConstraintsFromSetWorkCalendar(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicWorkCalendarItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicWorkCalendarItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicWorkCalendarItem) ? get_class($employeeSearchRowBasicWorkCalendarItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicWorkCalendarItem), var_export($employeeSearchRowBasicWorkCalendarItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The workCalendar 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 workCalendar value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $workCalendar
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setWorkCalendar(array $workCalendar = array())
    {
        // validation for constraint: array
        if ('' !== ($workCalendarArrayErrorMessage = self::validateWorkCalendarForArrayConstraintsFromSetWorkCalendar($workCalendar))) {
            throw new \InvalidArgumentException($workCalendarArrayErrorMessage, __LINE__);
        }
        $this->workCalendar = $workCalendar;
        return $this;
    }
    /**
     * Add item to workCalendar value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToWorkCalendar(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The workCalendar 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->workCalendar[] = $item;
        return $this;
    }
    /**
     * Get workplace value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWorkplace()
    {
        return $this->workplace;
    }
    /**
     * This method is responsible for validating the values passed to the setWorkplace method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWorkplace method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWorkplaceForArrayConstraintsFromSetWorkplace(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicWorkplaceItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicWorkplaceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($employeeSearchRowBasicWorkplaceItem) ? get_class($employeeSearchRowBasicWorkplaceItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicWorkplaceItem), var_export($employeeSearchRowBasicWorkplaceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The workplace 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 workplace value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $workplace
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setWorkplace(array $workplace = array())
    {
        // validation for constraint: array
        if ('' !== ($workplaceArrayErrorMessage = self::validateWorkplaceForArrayConstraintsFromSetWorkplace($workplace))) {
            throw new \InvalidArgumentException($workplaceArrayErrorMessage, __LINE__);
        }
        $this->workplace = $workplace;
        return $this;
    }
    /**
     * Add item to workplace value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToWorkplace(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The workplace 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->workplace[] = $item;
        return $this;
    }
    /**
     * Get zipCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getZipCode()
    {
        return $this->zipCode;
    }
    /**
     * This method is responsible for validating the values passed to the setZipCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setZipCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateZipCodeForArrayConstraintsFromSetZipCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $employeeSearchRowBasicZipCodeItem) {
            // validation for constraint: itemType
            if (!$employeeSearchRowBasicZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($employeeSearchRowBasicZipCodeItem) ? get_class($employeeSearchRowBasicZipCodeItem) : sprintf('%s(%s)', gettype($employeeSearchRowBasicZipCodeItem), var_export($employeeSearchRowBasicZipCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The zipCode 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 zipCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $zipCode
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function setZipCode(array $zipCode = array())
    {
        // validation for constraint: array
        if ('' !== ($zipCodeArrayErrorMessage = self::validateZipCodeForArrayConstraintsFromSetZipCode($zipCode))) {
            throw new \InvalidArgumentException($zipCodeArrayErrorMessage, __LINE__);
        }
        $this->zipCode = $zipCode;
        return $this;
    }
    /**
     * Add item to zipCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\EmployeeSearchRowBasic
     */
    public function addToZipCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The zipCode 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->zipCode[] = $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\EmployeeSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
